--- gcc-7-7.3.0.orig/debian/NEWS.gcc +++ gcc-7-7.3.0/debian/NEWS.gcc @@ -0,0 +1,865 @@ +This file contains information about GCC releases which has been generated +automatically from the online release notes. It covers releases of GCC +(and the former EGCS project) since EGCS 1.0, on the line of development +that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2, +see ONEWS. + +====================================================================== +http://gcc.gnu.org/gcc-7/index.html + + GCC 7 Release Series + Changes, New Features, and Fixes + + This page is a brief summary of some of the huge number of improvements + in GCC 7. For more information, see the "Porting to GCC 7" page and the + full GCC documentation. + +Caveats + + * GCC now uses LRA (a new local register allocator) by default for new + targets. + * The non-standard C++0x type traits has_trivial_default_constructor, + has_trivial_copy_constructor and has_trivial_copy_assign have been + removed. + * The libstdc++ Profile Mode has been deprecated and will be removed in a + future version. + * The Cilk+ extensions to the C and C++ languages have been deprecated. + +General Optimizer Improvements + + * GCC 7 can determine the return value or range of return values of some + calls to the sprintf family of functions and make it available to other + optimization passes. Some calls to the snprintf function with a zero size + argument can be folded into constants. This optimization is included in + -O1 and can be selectively controlled by the -fprintf-return-value option. + * A new store merging pass has been added. It merges constant stores to + adjacent memory locations into fewer, wider, stores. It is enabled by the + -fstore-merging option and at the -O2 optimization level or higher (and + -Os). + * A new code hoisting optimization has been added to the partial redundancy + elimination pass. It attempts to move evaluation of expressions executed + on all paths to the function exit as early as possible, which helps + primarily for code size, but can be useful for speed of generated code as + well. It is enabled by the -fcode-hoisting option and at the -O2 + optimization level or higher (and -Os). + * A new interprocedural bitwise constant propagation optimization has been + added, which propagates knowledge about which bits of variables are known + to be zero (including pointer alignment information) across the call + graph. It is enabled by the -fipa-bit-cp option if -fipa-cp is enabled as + well, and is enabled at the -O2 optimization level and higher (and -Os). + This optimization supersedes interprocedural alignment propagation of GCC + 6, and therefore the option -fipa-cp-alignment is now deprecated and + ignored. + * A new interprocedural value range propagation optimization has been + added, which propagates integral ranges that variable values can be + proven to be within across the call graph. It is enabled by the -fipa-vrp + option and at the -O2 optimization level and higher (and -Os). + * A new loop splitting optimization pass has been added. It splits certain + loops if they contain a condition that is always true on one side of the + iteration space and always false on the other into two loops where each + of the new two loops iterates just on one of the sides of the iteration + space and the condition does not need to be checked inside of the loop. + It is enabled by the -fsplit-loops option and at the -O3 optimization + level or higher. + * The shrink-wrapping optimization can now separate portions of prologues + and epilogues to improve performance if some of the work done + traditionally by prologues and epilogues is not needed on certain paths. + This is controlled by the -fshrink-wrap-separate option, enabled by + default. It requires target support, which is currently only implemented + in the PowerPC and AArch64 ports. + * AddressSanitizer gained a new sanitization option, -fsanitize-address- + use-after-scope, which enables sanitization of variables whose address is + taken and used after a scope where the variable is defined: + + int + main (int argc, char **argv) + { + char *ptr; + { + char my_char; + ptr = &my_char; + } + + *ptr = 123; + return *ptr; + } + + ==28882==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7fffb8dba990 at pc 0x0000004006d5 bp 0x7fffb8dba960 sp 0x7fffb8dba958 + WRITE of size 1 at 0x7fffb8dba990 thread T0 + #0 0x4006d4 in main /tmp/use-after-scope-1.c:10 + #1 0x7f9c71943290 in __libc_start_main (/lib64/libc.so.6+0x20290) + #2 0x400739 in _start (/tmp/a.out+0x400739) + + Address 0x7fffb8dba990 is located in stack of thread T0 at offset 32 in frame + #0 0x40067f in main /tmp/use-after-scope-1.c:3 + + This frame has 1 object(s): + [32, 33) 'my_char' <== Memory access at offset 32 is inside this variable + + The option is enabled by default with -fsanitize=address and disabled by + default with -fsanitize=kernel-address. Compared to the LLVM compiler, + where the option already exists, the implementation in the GCC compiler + has couple of improvements and advantages: + o A complex usage of gotos and case labels are properly handled and + should not report any false positive or false negatives. + o C++ temporaries are sanitized. + o Sanitization can handle invalid memory stores that are optimized + out by the LLVM compiler when using an optimization level. + * The -fsanitize=signed-integer-overflow suboption of the UndefinedBehavior + Sanitizer now diagnoses arithmetic overflows even on arithmetic + operations with generic vectors. + * Version 5 of the DWARF debugging information standard is supported + through the -gdwarf-5 option. The DWARF version 4 debugging information + remains the default until debugging information consumers are adjusted. + +New Languages and Language specific improvements + + OpenACC support in C, C++, and Fortran continues to be maintained and +improved. See the OpenACC and Offloading wiki pages for further information. + +Ada + * On mainstream native platforms, Ada programs no longer require the stack + to be made executable in order to run properly. + +BRIG (HSAIL) + +Support for processing BRIG 1.0 files was added in this release. BRIG is a +binary format for HSAIL (Heterogeneous System Architecture Intermediate +Language). The BRIG frontend can be used for implementing HSAIL "finalizers" +(compilation of HSAIL to a native ISA) for gcc-supported targets. An +implementation of an HSAIL runtime library, libhsail-rt is also included. + +C family + + * New command-line options have been added for the C and C++ compilers: + o -Wimplicit-fallthrough warns when a switch case falls through. This + warning has five different levels. The compiler is able to parse a + wide range of fallthrough comments, depending on the level. It also + handles control-flow statements, such as ifs. It's possible to + suppres the warning by either adding a fallthrough comment, or by + using a null statement: __attribute__ ((fallthrough)); (C, C++), or + [[fallthrough]]; (C++17), or [[gnu::fallthrough]]; (C++11/C++14). + This warning is enabled by -Wextra. + o -Wpointer-compare warns when a pointer is compared with a zero + character constant. Such code is now invalid in C++11 and GCC + rejects it. This warning is enabled by default. + o -Wduplicated-branches warns when an if-else has identical branches. + o -Wrestrict warns when an argument passed to a restrict-qualified + parameter aliases with another argument. + o -Wmemset-elt-size warns for memset calls, when the first argument + references an array, and the third argument is a number equal to + the number of elements of the array, but not the size of the array. + This warning is enabled by -Wall. + o -Wint-in-bool-context warns about suspicious uses of integer values + where boolean values are expected. This warning is enabled by - + Wall. + o -Wswitch-unreachable warns when a switch statement has statements + between the controlling expression and the first case label which + will never be executed. This warning is enabled by default. + o -Wexpansion-to-defined warns when defined is used outside #if. This + warning is enabled by -Wextra or -Wpedantic. + o -Wregister warns about uses of the register storage specifier. In + C++17 this keyword has been removed and for C++17 this is a + pedantic warning enabled by default. The warning is not emitted for + the GNU Explicit Register Variables extension. + o -Wvla-larger-than=N warns about unbounded uses of variable-length + arrays, and about bounded uses of variable-length arrays whose + bound can be larger than N bytes. + o -Wduplicate-decl-specifier warns when a declaration has duplicate + const, volatile, restrict or _Atomic specifier. This warning is + enabled by -Wall. + * GCC 6's C and C++ frontends were able to offer suggestions for misspelled + field names: + spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'? + return ptr->colour; + ^~~~~~ + GCC 7 greatly expands the scope of these suggestions. Firstly, it adds + fix-it hints to such suggestions: + spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'? + return ptr->colour; + ^~~~~~ + color + The suggestions now cover many other things, such as misspelled function + names: + spellcheck-identifiers.c:11:3: warning: implicit declaration of function 'gtk_widget_showall'; did you mean + 'gtk_widget_show_all'? [-Wimplicit-function-declaration] + gtk_widget_showall (w); + ^~~~~~~~~~~~~~~~~~ + gtk_widget_show_all + misspelled macro names and enum values: + spellcheck-identifiers.cc:85:11: error: 'MAX_ITEM' undeclared here (not in a function); did you mean 'MAX_ITEMS'? + int array[MAX_ITEM]; + ^~~~~~~~ + MAX_ITEMS + misspelled type names: + spellcheck-typenames.c:7:14: error: unknown type name 'singed'; did you mean 'signed'? + void test (singed char e); + ^~~~~~ + signed + and, in the C frontend, named initializers: + test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color'? + struct s test = { .colour = 3 }; + ^~~~~~ + color + * The preprocessor can now offer suggestions for misspelled directives, + e.g.: + test.c:5:2: error:invalid preprocessing directive #endfi; did you mean #endif? + #endfi + ^~~~~ + endif + * Warnings about format strings now underline the pertinent part of the + string, and can offer suggested fixes. In some cases, the pertinent + argument is underlined. + test.c:51:29: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat=] + printf ("foo: %d bar: %s baz: %d", 100, i + j, 102); + ~^ ~~~~~ + %d + * The new -Wdangling-else command-line option has been split out of + -Wparentheses and warns about dangling else. + * The -Wshadow warning has been split into three variants. -Wshadow=global + warns for any shadowing. This is the default when using -Wshadow without + any argument. -Wshadow=local only warns for a local variable shadowing + another local variable or parameter. -Wshadow=compatible-local only warns + for a local variable shadowing another local variable or parameter whose + type is compatible (in C++ compatible means that the type of the + shadowing variable can be converted to that of the shadowed variable). + The following example shows the different kinds of shadow warnings: + + enum operation { add, count }; + struct container { int nr; }; + + int + container_count (struct container c, int count) + { + int r = 0; + for (int count = 0; count > 0; count--) + { + struct container count = c; + r += count.nr; + } + return r; + } + + -Wshadow=compatible-local will warn for the parameter being shadowed with + the same type: + warn-test.c:8:12: warning: declaration of 'count' shadows a parameter [-Wshadow=compatible-local] + for (int count = 0; count > 0; count--) + ^~~~~ + warn-test.c:5:42: note: shadowed declaration is here + container_count (struct container c, int count) + ^~~~~ + -Wshadow=local will warn for the above and for the shadowed declaration + with incompatible type: + warn-test.c:10:24: warning: declaration of 'count' shadows a previous local [-Wshadow=local] + struct container count = c; + ^~~~~ + warn-test.c:8:12: note: shadowed declaration is here + for (int count = 0; count > 0; count--) + ^~~~~ + -Wshadow=global will warn for all of the above and the shadowing of the + global declaration: + warn-test.c:5:42: warning: declaration of 'count' shadows a global declaration [-Wshadow] + container_count (struct container c, int count) + ^~~~~ + warn-test.c:1:23: note: shadowed declaration is here + enum operation { add, count }; + ^~~~~ + * GCC 7 contains a number of enhancements that help detect buffer overflow + and other forms of invalid memory accesses. + o The -Walloc-size-larger-than=size option detects calls to standard + and user-defined memory allocation functions decorated with + attribute alloc_size whose argument exceeds the specified size + (PTRDIFF_MAX by default). The option also detects arithmetic + overflow in the computation of the size in two-argument allocation + functions like calloc where the total size is the product of the + two arguments. Since calls with an excessive size cannot succeed + they are typically the result of programming errors. Such bugs have + been known to be the source of security vulnerabilities and a + target of exploits. -Walloc-size-larger-than=PTRDIFF_MAX is + included in -Wall. + For example, the following call to malloc incorrectly tries to + avoid passing a negative argument to the function and instead ends + up unconditionally invoking it with an argument less than or equal + to zero. Since after conversion to the type of the argument of the + function (size_t) a negative argument results in a value in excess + of the maximum PTRDIFF_MAX the call is diagnosed. + + void* f (int n) + { + return malloc (n > 0 ? 0 : n); + } + + warning: argument 1 range [2147483648, 4294967295] exceeds maximum object size 2147483647 [-Walloc-size-larger-than=] + + o The -Walloc-zero option detects calls to standard and user-defined + memory allocation functions decorated with attribute alloc_size + with a zero argument. -Walloc-zero is not included in either -Wall + or -Wextra and must be explicitly enabled. + o The -Walloca option detects all calls to the alloca function in the + program. -Walloca is not included in either -Wall or -Wextra and + must be explicitly enabled. + o The -Walloca-larger-than=size option detects calls to the alloca + function whose argument either may exceed the specified size, or + that is not known to be sufficiently constrained to avoid exceeding + it. -Walloca-larger-than is not included in either -Wall or -Wextra + and must be explicitly enabled. + For example, compiling the following snippet with -Walloca-larger- + than=1024 results in a warning because even though the code appears + to call alloca only with sizes of 1kb and less, since n is signed, + a negative value would result in a call to the function well in + excess of the limit. + + void f (int n) + { + char *d; + if (n < 1025) + d = alloca (n); + else + d = malloc (n); + … + } + + warning: argument to 'alloca may be too large due to conversion from 'int' to 'long unsigned int' [-Walloca-larger-than=] + + In contrast, a call to alloca that isn't bounded at all such as in + the following function will elicit the warning below regardless of + the size argument to the option. + + void f (size_t n) + { + char *d = alloca (n); + ... + } + + warning: unbounded use of 'alloca' [-Walloca-larger-than=] + + o The -Wformat-overflow=level option detects certain and likely + buffer overflow in calls to the sprintf family of formatted output + functions. Although the option is enabled even without optimization + it works best with -O2 and higher. + For example, in the following snippet the call to sprintf is + diagnosed because even though its output has been constrained using + the modulo operation it could result in as many as three bytes if + mday were negative. The solution is to either allocate a larger + buffer or make sure the argument is not negative, for example by + changing mday's type to unsigned or by making the type of the + second operand of the modulo expression unsigned: 100U. + + void* f (int mday) + { + char *buf = malloc (3); + sprintf (buf, "%02i", mday % 100); + return buf; + } + + warning: 'sprintf may write a terminating nul past the end of the destination [-Wformat-overflow=] + note: 'sprintf' output between 3 and 4 bytes into a destination of size 3 + + o The -Wformat-truncation=level option detects certain and likely + output truncation in calls to the snprintf family of formatted + output functions. -Wformat-truncation=1 is included in -Wall and + enabled without optimization but works best with -O2 and higher. + For example, the following function attempts to format an integer + between 0 and 255 in hexadecimal, including the 0x prefix, into a + buffer of four charactars. But since the function must always + terminate output by the null character ('\0') such a buffer is only + big enough to fit just one digit plus the prefix. Therefore the + snprintf call is diagnosed. To avoid the warning either use a + bigger buffer or handle the function's return value which indicates + whether or not its output has been truncated. + + void f (unsigned x) + { + char d[4]; + snprintf (d, sizeof d, "%#02x", x & 0xff); + … + } + + warning: 'snprintf' output may be truncated before the last format character [-Wformat-truncation=] + note: 'snprintf' output between 3 and 5 bytes into a destination of size 4 + + o The -Wnonnull option has been enhanced to detect a broader set of + cases of passing null pointers to functions that expect a non-null + argument (those decorated with attribute nonnull). By taking + advantage of optimizations the option can detect many more cases of + the problem than in prior GCC versions. + o The -Wstringop-overflow=type option detects buffer overflow in + calls to string handling functions like memcpy and strcpy. The + option relies on Object_Size_Checking and has an effect similar to + defining the _FORTIFY_SOURCE macro. -Wstringop-overflow=2 is + enabled by default. + For example, in the following snippet, because the call to strncat + specifies a maximum that allows the function to write past the end + of the destination, it is diagnosed. To correct the problem and + avoid the overflow the function should be called with a size of at + most sizeof d - strlen(d) - 1. + + void f (const char *fname) + { + char d[8]; + strncpy (d, "/tmp/", sizeof d); + strncat (d, fname, sizeof d); + ... + } + + warning: specified bound 8 equals the size of the destination [-Wstringop-overflow=] + + * The header provided by GCC defines macros such as INT_WIDTH + for the width in bits of integer types, if + __STDC_WANT_IEC_60559_BFP_EXT__ is defined before the header is included. + The header defines such macros as SIZE_WIDTH and INTMAX_WIDTH + for the width of some standard typedef names for integer types, again if + __STDC_WANT_IEC_60559_BFP_EXT__ is defined before the header is included; + note that GCC's implementation of this header is only used for + freestanding compilations, not hosted compilations, on most systems. + These macros come from ISO/IEC TS 18661-1:2014. + * The header provided by GCC defines the macro CR_DECIMAL_DIG, + from ISO/IEC TS 18661-1:2014, if __STDC_WANT_IEC_60559_BFP_EXT__ is + defined before the header is included. This represents the number of + decimal digits for which conversions between decimal character strings + and binary formats, in both directions, are correctly rounded, and + currently has the value of UINTMAX_MAX on all systems, reflecting that + GCC's compile-time conversions are correctly rounded for any number of + digits. + * New __builtin_add_overflow_p, __builtin_sub_overflow_p, + __builtin_mul_overflow_p built-in functions have been added. These work + similarly to their siblings without the _p suffix, but do not actually + store the result of the arithmetics anywhere, just return whether the + operation would overflow. Calls to these built-ins with integer constant + arguments evaluate to integer constants expressions. + For example, in the following, c is assigned the result of a * b only if + the multiplication does not overflow, otherwise it is assigned the value + zero. The multiplication is performed at compile-time and without + triggering a -Woverflow warning. + + enum { + a = 12345678, + b = 87654321, + c = __builtin_mul_overflow_p (a, b, a) ? 0 : a * b + }; + +C + + * The C front end now supports type names _FloatN for floating-point types + with IEEE interchange formats and _FloatNx for floating-point types with + IEEE extended formats. These type names come from ISO/IEC TS 18661-3: + 2015. + The set of types supported depends on the target for which GCC is + configured. Most targets support _Float32, _Float32x and _Float64. + _Float128 is supported on targets where IEEE binary128 encoding was + already supported as long double or __float128. _Float64x is supported on + targets where a type with either binary128 or Intel extended precision + format is available. + Constants with these types are supported using suffixes fN, FN, fNx and + FNx (e.g., 1.2f128 or 2.3F64x). Macros such as FLT128_MAX are defined in + if __STDC_WANT_IEC_60559_TYPES_EXT__ is defined before it is + included. + These new types are always distinct from each other and from float, + double and long double, even if they have the same encoding. Complex + types such as _Complex _Float128 are also supported. + Type-generic built-in functions such as __builtin_isinf support the new + types, and the following type-specific built-in functions have versions + (suffixed fN or fNx) for the new types: __builtin_copysign, + __builtin_fabs, __builtin_huge_val, __builtin_inf, __builtin_nan, + __builtin_nans. + * Compilation with -fopenmp is now compatible with the C11 _Atomic keyword. + +C++ + + * The C++ front end has experimental support for all of the current C++17 + draft with the -std=c++1z or -std=gnu++1z flags, including if constexpr, + class template argument deduction, auto template parameters, and + structured bindings. For a full list of new features, see the_C++_status + page. + * C++17 support for new of over-aligned types can be enabled in other modes + with the -faligned-new flag. + * The C++17 evaluation order requirements can be selected in other modes + with the -fstrong-eval-order flag, or disabled in C++17 mode with -fno- + strong-eval-order. + * The default semantics of inherited constructors has changed in all modes, + following P0136. Essentially, overload resolution happens as if calling + the inherited constructor directly, and the compiler fills in + construction of the other bases and members as needed. Most uses should + not need any changes. The old behavior can be restored with -fno-new- + inheriting-ctors, or -fabi-version less than 11. + * The resolution of DR 150 on matching of template template parameters, + allowing default template arguments to make a template match a parameter, + is currently enabled by default in C++17 mode only. The default can be + overridden with -f{no-,}new-ttp-matching. + * The C++ front end will now provide fix-it hints for some missing + semicolons, allowing for automatic fixes by IDEs: + + test.cc:4:11: error: expected ';' after class definition + class a {} + ^ + ; + * -Waligned-new has been added to the C++ front end. It warns about new of + type with extended alignment without -faligned-new. + +Runtime Library (libstdc++) + + * The type of exception thrown by iostreams, std::ios_base::failure, now + uses the cxx11_ABI. + * Experimental support for C++17, including the following new features: + o std::string_view; + o std::any, std::optional, and std::variant; + o std::invoke, std::is_invocable, std::is_nothrow_invocable, and + invoke_result; + o std::is_swappable, and std::is_nothrow_swappable; + o std::apply, and std::make_from_tuple; + o std::void_t, std::bool_constant, std::conjunction, std:: + disjunction, and std::negation; + o Variable templates for type traits; + o Mathematical Special Functions; + o std::chrono::floor, std::chrono::ceil, std::chrono::round, and + std::chrono::abs; + o std::clamp, std::gcd, std::lcm, 3-dimensional std::hypot; + o std::scoped_lock, std::shared_mutex, std::atomic:: + is_always_lock_free; + o std::sample, std::default_searcher, std::boyer_moore_searcher and + std::boyer_moore_horspool_searcher; + o Extraction and re-insertion of map and set nodes, try_emplace + members for maps, and functions for accessing containers std::size, + std::empty, and std::data; + o std::shared_ptr support for arrays, std::shared_ptr::weak_type, + std::enable_shared_from_this::weak_from_this(), and std:: + owner_less; + o std::byte; + o std::as_const, std::not_fn, std::has_unique_object_representations, + constexpr std::addressof. + Thanks to Daniel Krügler, Tim Shen, Edward Smith-Rowland, and Ville + Voutilainen for work on the C++17 support. + * A new power-of-two rehashing policy for use with the _Hashtable + internals, thanks to François Dumont. + +Fortran + + * Support for a number of extensions for compatibility with legacy code + with new flags: + o -fdec-structure Support for DEC STRUCTURE and UNION + o -fdec-intrinsic-ints Support for new integer intrinsics with B/I/J/ + K prefixes such as BABS, JIAND... + o -fdec-math Support for additional math intrinsics, including COTAN + and degree-valued trigonometric functions such as TAND, ASIND... + o -fdec Enable the -fdec-* family of extensions. + * New flag -finit-derived to allow default initialization of derived-type + variables. + * Improved DO loops with step equal to 1 or -1, generates faster code + without a loop preheader. A new warning, -Wundefined-do-loop, warns when + a loop iterates either to HUGE(i) (with step equal to 1), or to -HUGE(i) + (with step equal to -1). Invalid behavior can be caught at run time with + -fcheck=do enabled: + + program test + implicit none + integer(1) :: i + do i = -HUGE(i)+10, -HUGE(i)-1, -1 + print *, i + end do + end program test + + At line 8 of file do_check_12.f90 + Fortran runtime error: Loop iterates infinitely + + * Version 4.5 of the OpenMP_specification is now partially supported also + in the Fortran compiler; the largest missing item is structure element + mapping. + * User-defined derived-type input/output (UDTIO) is added. + * Derived type coarrays with allocable and pointer components is partially + supported. + * Non-constant stop codes and error stop codes (Fortran 2015 feature). + * Derived types with allocatable components of recursive type. + * Intrinsic assignment to polymorphic variables. + * Improved submodule support. + * Improved diagnostics (polymorphic results in pure functions). + +Go + + * GCC 7 provides a complete implementation of the Go 1.8.1 user packages. + * Compared to the Go 1.8.1 toolchain, the garbage collector is more + conservative and less concurrent. + * Escape analysis is available for experimental use via the -fgo-optimize- + allocs option. The -fgo-debug-escape prints information useful for + debugging escape analysis choices. + +Java (GCJ) + +The GCC Java frontend and associated libjava runtime library have been removed +from GCC. + +libgccjit + +The libgccjit API gained support for marking calls as requiring tail-call +optimization via a new entrypoint: gcc_jit_rvalue_set_bool_require_tail_call. +libgccjit performs numerous checks at the API boundary, but if these succeed, +it previously ignored errors and other diagnostics emitted within the core of +GCC, and treated the compile of a gcc_jit_context as having succeeded. As of +GCC 7 it now ensures that if any diagnostics are emitted, they are visible from +the libgccjit API, and that the the context is flagged as having failed. + +New Targets and Target Specific Improvements + +AArch64 + + * The ARMv8.3-A architecture is now supported. It can be used by specifying + the -march=armv8.3-a option. + * The option -msign-return-address= is supported to enable return address + protection using ARMv8.3-A Pointer Authentication Extensions. For more + information on the arguments accepted by this option, please refer to + AArch64-Options. + * The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point + Extensions are now supported. They can be used by specifying the - + march=armv8.2-a or -march=armv8.2-a+fp16 options. The 16-bit Floating- + Point Extensions introduce new half-precision data processing floating- + point instructions. + * Support has been added for the following processors (GCC identifiers in + parentheses): ARM Cortex-A73 (cortex-a73), Broadcom Vulcan (vulcan), + Cavium ThunderX CN81xx (thunderxt81), Cavium ThunderX CN83xx + (thunderxt83), Cavium ThunderX CN88xx (thunderxt88), Cavium ThunderX + CN88xx pass 1.x (thunderxt88p1), Cavium ThunderX 2 CN99xx (thunderx2t99), + Qualcomm Falkor (falkor). The GCC identifiers can be used as arguments to + the -mcpu or -mtune options, for example: -mcpu=cortex-a73 or - + mtune=vulcan or as arguments to the equivalent target attributes and + pragmas. + +ARC + + * Add support for ARC HS and ARC EM processors. + * Add support for ARC EM variation found in Intel QuarkSE SoCs. + * Add support for NPS400 ARC700 based CPUs. + * Thread Local Storage is now supported by ARC CPUs. + * Fix errors for ARC600 when using 32x16 multiplier option. + * Fix PIE for ARC CPUs. + * New CPU templates are supported via multilib. + +ARM + + * Support for the ARMv5 and ARMv5E architectures has been deprecated (which + have no known implementations) and will be removed in a future GCC + release. Note that ARMv5T, ARMv5TE and ARMv5TEJ architectures remain + supported. The values armv5 and armv5e of -march are thus deprecated. + * The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point + Extensions are now supported. They can be used by specifying the - + march=armv8.2-a or -march=armv8.2-a+fp16 options. The 16-bit Floating- + Point Extensions introduce new half-precision data processing floating- + point instructions. + * The ARMv8-M architecture is now supported in its two architecture + profiles: ARMv8-M Baseline and ARMv8-M Mainline with its DSP and + Floating-Point Extensions. They can be used by specifying the - + march=armv8-m.base, armv8-m.main or armv8-m.main+dsp options. + * Support has been added for the following processors (GCC identifiers in + parentheses): ARM Cortex-A73 (cortex-a73), ARM Cortex-M23 (cortex-m23) + and ARM Cortex-M33 (cortex-m33). The GCC identifiers can be used as + arguments to the -mcpu or -mtune options, for example: -mcpu=cortex-a73 + or -mtune=cortex-m33. + * A new command-line option -mpure-code has been added. It does not allow + constant data to be placed in code sections. This option is only + available when generating non-pic code for ARMv7-M targets. + * Support for the ACLE Coprocessor Intrinsics has been added. This enables + the generation of coprocessor instructions through the use of intrinsics + such as cdp, ldc, and others. + * The configure option --with-multilib-list now accepts the value rmprofile + to build multilib libraries for a range of embedded targets. See our + installation_instructions for details. + +AVR + + * On the reduced Tiny cores, the progmem variable_attribute is now properly + supported. Respective read-only variables are located in flash memory in + section .progmem.data. No special code is needed to access such + variables; the compiler automatically adds an offset of 0x4000 to all + addresses, which is needed to access variables in flash memory. As + opposed to ordinary cores where it is sufficient to specify the progmem + attribute with definitions, on the reduced Tiny cores the attribute also + has to be specified with (external) declarations: + + extern const int array[] __attribute__((__progmem__)); + + int get_value2 (void) + { + /* Access via addresses array + 0x4004 and array + 0x4005. */ + return array[2]; + } + + const int* get_address (unsigned idx) + { + /* Returns array + 0x4000 + 2 * idx. */ + return &array[idx]; + } + + * A new command-line option -Wmisspelled-isr has been added. It turns off — + or turns into errors — warnings that are reported for interrupt service + routines (ISRs) which don't follow AVR-LibC's naming convention of + prefixing ISR names with __vector. + * __builtin_avr_nops(n) is a new built-in_function that inserts n NOP + instructions into the instruction stream. n must be a value known at + compile time. + +IA-32/x86-64 + + * Support for the AVX-512 Fused Multiply Accumulation Packed Single + precision (4FMAPS), AVX-512 Vector Neural Network Instructions Word + variable precision (4VNNIW), AVX-512 Vector Population Count (VPOPCNTDQ) + and Software Guard Extensions (SGX) ISA extensions has been added. + +NVPTX + + * OpenMP target regions can now be offloaded to NVidia PTX GPGPUs. See the + Offloading_Wiki on how to configure it. + +PowerPC / PowerPC64 / RS6000 + + * The PowerPC port now uses LRA by default. + * GCC now diagnoses inline assembly that clobbers register r2. This has + always been invalid code, and is no longer quietly tolerated. + * The PowerPC port's support for ISA 3.0 (-mcpu=power9) has been enhanced + to generate more of the new instructions by default, and to provide more + built-in functions to generate code for other new instructions. + * The configuration option --enable-gnu-indirect-function is now enabled by + default on PowerPC GNU/Linux builds. + * The PowerPC port will now allow 64-bit and 32-bit integer types to be + allocated to the VSX vector registers (ISA 2.06 and above). In addition, + on ISA 3.0, 16-bit and 8-bit integer types can be allocated in the vector + registers. Previously, only 64-bit integer types were allowed in the + traditional floating point registers. + * New options -mstack-protector-guard=global, -mstack-protector-guard=tls, + -mstack-protector-guard-reg=, and -mstack-protector-guard-offset= change + how the stack protector gets the value to use as canary. + +RISC-V + + * Support for the RISC-V instruction set has been added. + +SPARC + + * The SPARC port now uses LRA by default. + * Support for the new Subtract-Extended-with-Carry instruction available in + SPARC M7 (Niagara 7) has been added. + +Operating Systems + +AIX + + * Visibility support has been enabled for AIX 7.1 and above. + +Fuchsia + + * Support has been added for the Fuchsia_OS. + +RTEMS + + * The ABI changes on ARM so that no short enums are used by default. + +Other significant improvements + + * -fverbose-asm previously emitted information on the meanings of assembly + expressions. This has been extended so that it now also prints comments + showing the source lines that correspond to the assembly, making it + easier to read the generated assembly (especially with larger functions). + For example, given this C source file: + + int test (int n) + { + int i; + int total = 0; + + for (i = 0; i < n; i++) + total += i * i; + return total; + } + + -fverbose-asm now gives output similar to this for the function body + (when compiling for x86_64, with -Os): + + .text + .globl test + .type test, @@function + test: + .LFB0: + .cfi_startproc + # example.c:4: int total = 0; + xorl %eax, %eax # + # example.c:6: for (i = 0; i < n; i++) + xorl %edx, %edx # i + .L2: + # example.c:6: for (i = 0; i < n; i++) + cmpl %edi, %edx # n, i + jge .L5 #, + # example.c:7: total += i * i; + movl %edx, %ecx # i, tmp92 + imull %edx, %ecx # i, tmp92 + # example.c:6: for (i = 0; i < n; i++) + incl %edx # i + # example.c:7: total += i * i; + addl %ecx, %eax # tmp92, + jmp .L2 # + .L5: + # example.c:10: } + ret + .cfi_endproc + + * Two new options have been added for printing fix-it hints: + o -fdiagnostics-parseable-fixits allows for fix-it hints to be + emitted in a machine-readable form, suitable for consumption by + IDEs. For example, given: + + spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'? + return ptr->colour; + ^~~~~~ + color + it will emit: + fix-it:"spellcheck-fields.cc":{52:13-52:19}:"color" + o -fdiagnostics-generate-patch will print a patch in "unified" format + after any diagnostics are printed, showing the result of applying + all fix-it hints. For the above example it would emit: + --- spellcheck-fields.cc + +++ spellcheck-fields.cc + @@ -49,5 +49,5 @@ + + color get_color(struct s *ptr) + { + - return ptr->colour; + + return ptr->color; + } + * The gcc and g++ driver programs will now provide suggestions for + misspelled arguments to command-line options. + $ gcc -c test.c -ftls-model=global-dinamic + gcc: error: unknown TLS model 'global-dinamic' + gcc: note: valid arguments to '-ftls-model=' are: global- + dynamic initial-exec local-dynamic local-exec; did you mean + 'global-dynamic'? + * The compiler will now provide suggestions for misspelled parameters. + $ gcc -c test.c --param max-early-inliner-iteration=3 + cc1: error: invalid --param name 'max-early-inliner-iteration'; + did you mean 'max-early-inliner-iterations'? + * Profile-guided optimization (PGO) instrumentation, as well as test + coverage (GCOV), can newly instrument constructors (functions marks with + __attribute__((constructor))), destructors and C++ constructors (and + destructors) of classes that are used as a type of a global variable. + * A new option -fprofile-update=atomic prevents creation of corrupted + profiles created during instrumentation run (-fprofile=generate) of an + application. Downside of the option is a speed penalty. Providing - + pthread on command line would result in selection of atomic profile + updating (when supports by a target). + * GCC's already extensive testsuite has gained some new capabilities, to + further improve the reliability of the compiler: + o GCC now has has an internal unit testing API and a suite of tests + for programmatic self-testing of subsystems. + o GCC's C frontend has been extended so that it can parse dumps of + GCC's internal representations, allowing for DejaGnu tests that + more directly exercise specific optimization passes. This covers + both the GIMPLE_representation (for testing higher-level + optimizations) and the RTL_representation, allowing for more direct + testing of lower-level details, such as register allocation and + instruction selection. + + 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 2017-05-01. --- gcc-7-7.3.0.orig/debian/NEWS.html +++ gcc-7-7.3.0/debian/NEWS.html @@ -0,0 +1,1285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +GCC 7 Release Series — Changes, New Features, and Fixes +- GNU Project - Free Software Foundation (FSF) + + + + + + + + + +

GCC 7 Release Series
Changes, New Features, and Fixes

+ +

+This page is a brief summary of some of the huge number of improvements in GCC 7. +For more information, see the +Porting to GCC 7 page and the +full GCC documentation. +

+ + +

Disclaimer: GCC 7 has not been released yet, so this document is +a work-in-progress.

+ + +

Caveats

+
    +
  • GCC now uses LRA (a + new local register allocator) by default for new targets.
  • + +
  • The non-standard C++0x type traits + has_trivial_default_constructor, + has_trivial_copy_constructor and + has_trivial_copy_assign have been removed.
  • +
  • The libstdc++ + Profile + Mode has been deprecated and will be removed in a future version. +
  • + +
  • The Cilk+ extensions to the C and C++ languages have been deprecated.
  • +
+ + +

General Optimizer Improvements

+
    +
  • GCC 7 can determine the return value or range of return values of + some calls to the sprintf family of functions and make + it available to other optimization passes. Some calls to the + snprintf function with a zero size argument can be folded + into constants. This optimization is included in -O1 + and can be selectively controlled by the + -fprintf-return-value option.
  • +
  • A new store merging pass has been added. It merges constant stores to + adjacent memory locations into fewer, wider, stores. + It is enabled by the -fstore-merging option and at the + -O2 optimization level or higher (and -Os).
  • + +
  • A new code hoisting optimization has been added to the partial + redundancy elimination pass. It attempts to move evaluation of + expressions executed on all paths to the function exit as early as + possible, which helps primarily for code size, but can be useful for + speed of generated code as well. It is enabled by the + -fcode-hoisting option and at the -O2 + optimization level or higher (and -Os).
  • + +
  • A new interprocedural bitwise constant propagation optimization + has been added, which propagates knowledge about which bits of variables + are known to be zero (including pointer alignment information) across + the call graph. It is enabled by the -fipa-bit-cp + option if -fipa-cp is enabled as well, and is enabled + at the -O2 optimization level and higher (and + -Os). This optimization supersedes interprocedural + alignment propagation of GCC 6, and therefore the + option -fipa-cp-alignment is now deprecated and + ignored.
  • + +
  • A new interprocedural value range propagation optimization has been + added, which propagates integral ranges that variable values can be proven + to be within across the call graph. It is enabled by the + -fipa-vrp option and at the -O2 optimization + level and higher (and -Os).
  • + +
  • A new loop splitting optimization pass has been added. It splits + certain loops if they contain a condition that is always true on one + side of the iteration space and always false on the other into two + loops where each of the new two loops iterates just on one of the sides + of the iteration space and the condition does not need to be checked + inside of the loop. It is enabled by the -fsplit-loops + option and at the -O3 optimization level or higher.
  • + +
  • The shrink-wrapping optimization can now separate portions of + prologues and epilogues to improve performance if some of the + work done traditionally by prologues and epilogues is not needed + on certain paths. This is controlled by the + -fshrink-wrap-separate option, enabled by default. + It requires target support, which is currently only implemented in the + PowerPC and AArch64 ports.
  • + +
  • AddressSanitizer gained a new sanitization option, -fsanitize-address-use-after-scope, + which enables sanitization of variables whose address is taken and used after a scope where the + variable is defined: +
    +int
    +main (int argc, char **argv)
    +{
    +  char *ptr;
    +    {
    +      char my_char;
    +      ptr = &my_char;
    +    }
    +
    +  *ptr = 123;
    +  return *ptr;
    +}
    +
    +==28882==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7fffb8dba990 at pc 0x0000004006d5 bp 0x7fffb8dba960 sp 0x7fffb8dba958
    +WRITE of size 1 at 0x7fffb8dba990 thread T0
    +    #0 0x4006d4 in main /tmp/use-after-scope-1.c:10
    +    #1 0x7f9c71943290 in __libc_start_main (/lib64/libc.so.6+0x20290)
    +    #2 0x400739 in _start (/tmp/a.out+0x400739)
    +
    +Address 0x7fffb8dba990 is located in stack of thread T0 at offset 32 in frame
    +    #0 0x40067f in main /tmp/use-after-scope-1.c:3
    +
    +  This frame has 1 object(s):
    +    [32, 33) 'my_char' <== Memory access at offset 32 is inside this variable
    +  
    + + The option is enabled by default with -fsanitize=address and disabled + by default with -fsanitize=kernel-address. + Compared to the LLVM compiler, where the option already exists, + the implementation in the GCC compiler has couple of improvements and advantages: +
      +
    • A complex usage of gotos and case labels are properly handled and should not + report any false positive or false negatives. +
    • +
    • C++ temporaries are sanitized.
    • +
    • Sanitization can handle invalid memory stores that are optimized out + by the LLVM compiler when using an optimization level.
    • +
    + +
  • + +
  • The -fsanitize=signed-integer-overflow suboption of the + UndefinedBehavior Sanitizer now diagnoses arithmetic overflows even on + arithmetic operations with generic vectors.
  • + +
  • Version 5 of the DWARF debugging + information standard is supported through the -gdwarf-5 + option. The DWARF version 4 debugging information remains the + default until debugging information consumers are adjusted.
  • + +
+ + +

New Languages and Language specific improvements

+ + OpenACC support in C, C++, and Fortran continues to be maintained and + improved. + See the OpenACC + and Offloading wiki pages + for further information. + + +

Ada

+
    +
  • On mainstream native platforms, Ada programs no longer require the stack + to be made executable in order to run properly.
  • +
+ +

BRIG (HSAIL)

+ +

Support for processing BRIG 1.0 files was added in this release. +BRIG is a binary format for HSAIL (Heterogeneous System Architecture +Intermediate Language). The BRIG frontend can be used for implementing +HSAIL "finalizers" (compilation of HSAIL to a native ISA) for gcc-supported +targets. An implementation of an HSAIL runtime library, libhsail-rt is +also included.

+ +

C family

+
    +
  • New command-line options have been added for the C and C++ compilers: +
      +
    • -Wimplicit-fallthrough warns when a switch case falls + through. This warning has five different levels. The compiler is + able to parse a wide range of fallthrough comments, depending on + the level. It also handles control-flow statements, such as ifs. + It's possible to suppres the warning by either adding a fallthrough + comment, or by using a null statement: __attribute__ + ((fallthrough)); (C, C++), or [[fallthrough]]; + (C++17), or [[gnu::fallthrough]]; (C++11/C++14). + This warning is enabled by -Wextra.
    • +
    • -Wpointer-compare warns when a pointer is compared with + a zero character constant. Such code is now invalid in C++11 and + GCC rejects it. This warning is enabled by default.
    • +
    • -Wduplicated-branches warns when an if-else has identical + branches.
    • +
    • -Wrestrict warns when an argument passed to a + restrict-qualified parameter aliases with another + argument.
    • +
    • -Wmemset-elt-size warns for memset calls, + when the first argument references an array, and the third argument is + a number equal to the number of elements of the array, but not the size + of the array. This warning is enabled by -Wall.
    • +
    • -Wint-in-bool-context warns about suspicious uses of + integer values where boolean values are expected. This warning is + enabled by -Wall.
    • +
    • -Wswitch-unreachable warns when a switch + statement has statements between the controlling expression and the + first case label which will never be executed. This warning is enabled + by default.
    • +
    • -Wexpansion-to-defined warns when defined is + used outside #if. This warning is enabled by + -Wextra or -Wpedantic.
    • +
    • -Wregister warns about uses of the register + storage specifier. In C++17 this keyword has been removed and for C++17 + this is a pedantic warning enabled by default. The warning is not + emitted for the GNU Explicit Register Variables extension.
    • +
    • -Wvla-larger-than=N warns about unbounded uses of + variable-length arrays, and about bounded uses of variable-length + arrays whose bound can be larger than N bytes.
    • +
    • -Wduplicate-decl-specifier warns when a declaration + has duplicate const, volatile, + restrict or _Atomic specifier. This warning + is enabled by -Wall.
    • +
    +
  • +
  • GCC 6's C and C++ frontends were able to offer suggestions for + misspelled field names: +
    +spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
    +   return ptr->colour;
    +               ^~~~~~
    +
    + GCC 7 greatly expands the scope of these suggestions. Firstly, it + adds fix-it hints to such suggestions: +
    +spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
    +   return ptr->colour;
    +               ^~~~~~
    +               color
    +
    + The suggestions now cover many other things, such as misspelled + function names: +
    +spellcheck-identifiers.c:11:3: warning: implicit declaration of function 'gtk_widget_showall'; did you mean 'gtk_widget_show_all'? [-Wimplicit-function-declaration]
    +   gtk_widget_showall (w);
    +   ^~~~~~~~~~~~~~~~~~
    +   gtk_widget_show_all
    +
    + misspelled macro names and enum values: +
    +spellcheck-identifiers.cc:85:11: error: 'MAX_ITEM' undeclared here (not in a function); did you mean 'MAX_ITEMS'?
    + int array[MAX_ITEM];
    +           ^~~~~~~~
    +           MAX_ITEMS
    +
    + misspelled type names: +
    +spellcheck-typenames.c:7:14: error: unknown type name 'singed'; did you mean 'signed'?
    + void test (singed char e);
    +            ^~~~~~
    +            signed
    +
    + and, in the C frontend, named initializers: +
    +test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color'?
    + struct s test = { .colour = 3 };
    +                    ^~~~~~
    +                    color
    +
  • +
  • The preprocessor can now offer suggestions for misspelled + directives, e.g.: +
    +test.c:5:2: error:invalid preprocessing directive #endfi; did you mean #endif?
    + #endfi
    +  ^~~~~
    +  endif
    +
  • +
  • Warnings about format strings now underline the pertinent part of + the string, and can offer suggested fixes. In some cases, the + pertinent argument is underlined. +
    +test.c:51:29: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat=]
    +   printf ("foo: %d  bar: %s baz: %d", 100, i + j, 102);
    +                          ~^                ~~~~~
    +                          %d
    +
  • + +
  • The new -Wdangling-else command-line option has been split +out of -Wparentheses and warns about dangling else.
  • +
  • The -Wshadow warning has been split into three +variants. -Wshadow=global warns for any shadowing. This +is the default when using -Wshadow without any +argument. -Wshadow=local only warns for a local variable +shadowing another local variable or +parameter. -Wshadow=compatible-local only warns for a +local variable shadowing another local variable or parameter whose +type is compatible (in C++ compatible means that the type of the +shadowing variable can be converted to that of the shadowed variable).

    + +

    The following example shows the different kinds of shadow +warnings:

    + +
    +enum operation { add, count };
    +struct container { int nr; };
    +
    +int
    +container_count (struct container c, int count)
    +{
    +  int r = 0;
    +  for (int count = 0; count > 0; count--)
    +    {
    +      struct container count = c;
    +      r += count.nr;
    +    }
    +  return r;
    +}
    + +

    -Wshadow=compatible-local will warn for the parameter being +shadowed with the same type:

    + +
    +warn-test.c:8:12: warning: declaration of 'count' shadows a parameter [-Wshadow=compatible-local]
    +   for (int count = 0; count > 0; count--)
    +            ^~~~~
    +warn-test.c:5:42: note: shadowed declaration is here
    + container_count (struct container c, int count)
    +                                          ^~~~~
    + +

    -Wshadow=local will warn for the above and for the shadowed +declaration with incompatible type:

    + +
    +warn-test.c:10:24: warning: declaration of 'count' shadows a previous local [-Wshadow=local]
    +       struct container count = c;
    +                        ^~~~~
    +warn-test.c:8:12: note: shadowed declaration is here
    +   for (int count = 0; count > 0; count--)
    +            ^~~~~
    + +

    -Wshadow=global will warn for all of the above and the shadowing +of the global declaration:

    + +
    +warn-test.c:5:42: warning: declaration of 'count' shadows a global declaration [-Wshadow]
    + container_count (struct container c, int count)
    +                                          ^~~~~
    +warn-test.c:1:23: note: shadowed declaration is here
    + enum operation { add, count };
    +                       ^~~~~
    +
  • +
  • GCC 7 contains a number of enhancements that help detect buffer overflow + and other forms of invalid memory accesses. +
      +
    • The -Walloc-size-larger-than=size option + detects calls to standard and user-defined memory allocation + functions decorated with attribute alloc_size whose + argument exceeds the specified size + (PTRDIFF_MAX by default). The option also detects + arithmetic overflow in the computation of the size in two-argument + allocation functions like calloc where the total size + is the product of the two arguments. Since calls with an excessive + size cannot succeed they are typically the result of programming + errors. Such bugs have been known to be the source of + security vulnerabilities and a target of exploits. + -Walloc-size-larger-than=PTRDIFF_MAX is included + in -Wall.

      +

      For example, the following call to malloc incorrectly + tries to avoid passing a negative argument to the function and + instead ends up unconditionally invoking it with an argument less + than or equal to zero. Since after conversion to the type of + the argument of the function (size_t) a negative + argument results in a value in excess of the maximum + PTRDIFF_MAX the call is diagnosed.

      +
      +void* f (int n)
      +{
      +  return malloc (n > 0 ? 0 : n);
      +}
      +
      +warning: argument 1 range [2147483648, 4294967295] exceeds maximum object size 2147483647 [-Walloc-size-larger-than=]
    • +
    • The -Walloc-zero option detects calls to standard + and user-defined memory allocation functions decorated with attribute + alloc_size with a zero argument. -Walloc-zero + is not included in either -Wall or -Wextra + and must be explicitly enabled.
    • +
    • The -Walloca option detects all calls to the + alloca function in the program. -Walloca + is not included in either -Wall or -Wextra + and must be explicitly enabled.
    • +
    • The -Walloca-larger-than=size option detects + calls to the alloca function whose argument either may + exceed the specified size, or that is not known + to be sufficiently constrained to avoid exceeding it. + -Walloca-larger-than is not included in either + -Wall or -Wextra and must be explicitly + enabled.

      +

      For example, compiling the following snippet with + -Walloca-larger-than=1024 results in a warning because + even though the code appears to call alloca only with + sizes of 1kb and less, since n is signed, a negative + value would result in a call to the function well in excess of + the limit.

      +
      +void f (int n)
      +{
      +  char *d;
      +  if (n < 1025)
      +    d = alloca (n);
      +  else
      +    d = malloc (n);
      +  …
      +}
      +
      +warning: argument to 'alloca may be too large due to conversion from 'int' to 'long unsigned int' [-Walloca-larger-than=]
      +

      In contrast, a call to alloca that isn't bounded at all + such as in the following function will elicit the warning below + regardless of the size argument to the option.

      +
      +void f (size_t n)
      +{
      +  char *d = alloca (n);
      +  …
      +}
      +
      +warning: unbounded use of 'alloca' [-Walloca-larger-than=]
    • +
    • The -Wformat-overflow=level option detects + certain and likely buffer overflow in calls to the sprintf + family of formatted output functions. Although the option is enabled + even without optimization it works best with -O2 and + higher.

      +

      For example, in the following snippet the call to + sprintf is diagnosed because even though its + output has been constrained using the modulo operation it could + result in as many as three bytes if mday were negative. + The solution is to either allocate a larger buffer or make sure + the argument is not negative, for example by changing + mday's type to unsigned or by making + the type of the second operand of the modulo expression + unsigned: 100U.

      +
      +void* f (int mday)
      +{
      +  char *buf = malloc (3);
      +  sprintf (buf, "%02i", mday % 100);
      +  return buf;
      +}
      +
      +warning: 'sprintf may write a terminating nul past the end of the destination [-Wformat-overflow=]
      +note: 'sprintf' output between 3 and 4 bytes into a destination of size 3
    • +
    • The -Wformat-truncation=level option detects + certain and likely output truncation in calls to the + snprintf family of formatted output functions. + -Wformat-truncation=1 is included in -Wall + and enabled without optimization but works best with -O2 + and higher.

      +

      For example, the following function attempts to format an integer + between 0 and 255 in hexadecimal, including the 0x + prefix, into a buffer of four charactars. But since the function + must always terminate output by the null character ('\0') + such a buffer is only big enough to fit just one digit plus the prefix. + Therefore the snprintf call is diagnosed. To avoid + the warning either use a bigger buffer or handle the function's + return value which indicates whether or not its output has + been truncated.

      +
      +void f (unsigned x)
      +{
      +  char d[4];
      +  snprintf (d, sizeof d, "%#02x", x & 0xff);
      +  …
      +}
      +
      +warning: 'snprintf' output may be truncated before the last format character [-Wformat-truncation=]
      +note: 'snprintf' output between 3 and 5 bytes into a destination of size 4
    • +
    • The -Wnonnull option has been enhanced to detect + a broader set of cases of passing null pointers to functions that + expect a non-null argument (those decorated with attribute + nonnull). By taking advantage of optimizations the + option can detect many more cases of the problem than in prior GCC + versions.
    • +
    • The -Wstringop-overflow=type option detects + buffer overflow in calls to string handling functions like + memcpy and strcpy. The option relies on + + Object Size Checking and has an effect similar to defining + the _FORTIFY_SOURCE macro. + -Wstringop-overflow=2 is enabled by default.

      +

      For example, in the following snippet, because the call to + strncat specifies a maximum that allows the function to + write past the end of the destination, it is diagnosed. To correct + the problem and avoid the overflow the function should be called + with a size of at most sizeof d - strlen(d) - 1.

      +
      +void f (const char *fname)
      +{
      +  char d[8];
      +  strncpy (d, "/tmp/", sizeof d);
      +  strncat (d, fname, sizeof d);
      +  …
      +}
      +
      +warning: specified bound 8 equals the size of the destination [-Wstringop-overflow=]
      +
    • +
    +
  • +
  • The <limits.h> header provided by GCC defines + macros such as INT_WIDTH for the width in bits of + integer types, if __STDC_WANT_IEC_60559_BFP_EXT__ is + defined before the header is included. + The <stdint.h> header defines such macros + as SIZE_WIDTH and INTMAX_WIDTH for the + width of some standard typedef names for integer types, + again if __STDC_WANT_IEC_60559_BFP_EXT__ is defined + before the header is included; note that GCC's implementation of + this header is only used for freestanding compilations, not hosted + compilations, on most systems. These macros come from ISO/IEC TS + 18661-1:2014.
  • +
  • The <float.h> header provided by GCC defines + the macro CR_DECIMAL_DIG, from ISO/IEC TS 18661-1:2014, + if __STDC_WANT_IEC_60559_BFP_EXT__ is defined before + the header is included. This represents the number of decimal + digits for which conversions between decimal character strings and + binary formats, in both directions, are correctly rounded, and + currently has the value of UINTMAX_MAX on all systems, + reflecting that GCC's compile-time conversions are correctly rounded + for any number of digits.
  • +
  • New __builtin_add_overflow_p, + __builtin_sub_overflow_p, + __builtin_mul_overflow_p built-in functions have been added. + These work similarly to their siblings without the + _p suffix, but do not actually store the result of the + arithmetics anywhere, just return whether the operation would overflow. + Calls to these built-ins with integer constant arguments evaluate to + integer constants expressions.

    +

    For example, in the following, c is assigned the result + of a * b only if the multiplication does not overflow, + otherwise it is assigned the value zero. The multiplication is + performed at compile-time and without triggering + a -Woverflow warning.

    +
    enum {
    +  a = 12345678,
    +  b = 87654321,
    +  c = __builtin_mul_overflow_p (a, b, a) ? 0 : a * b
    +};
  • + +
+ +

C

+
    +
  • The C front end now supports type + names _FloatN for floating-point types with IEEE + interchange formats and _FloatNx for + floating-point types with IEEE extended formats. These type names + come from ISO/IEC TS 18661-3:2015.

    +

    The set of types supported depends on the target for which GCC is + configured. Most targets + support _Float32, _Float32x + and _Float64. _Float128 is supported on + targets where IEEE binary128 encoding was already supported + as long double + or __float128. _Float64x is supported on + targets where a type with either binary128 or Intel extended + precision format is available.

    +

    Constants with these types are supported using + suffixes fN, FN, + fNx and FNx + (e.g., 1.2f128 or 2.3F64x). Macros such + as FLT128_MAX are defined + in <float.h> + if __STDC_WANT_IEC_60559_TYPES_EXT__ is defined before + it is included.

    +

    These new types are always distinct from each other and + from float, double and long + double, even if they have the same encoding. Complex types + such as _Complex _Float128 are also supported.

    +

    Type-generic built-in functions such + as __builtin_isinf support the new types, and the + following type-specific built-in functions have versions + (suffixed fN or fNx) for the + new + types: __builtin_copysign, __builtin_fabs, __builtin_huge_val, __builtin_inf, __builtin_nan, __builtin_nans.

  • +
  • Compilation with -fopenmp is now compatible with the + C11 _Atomic keyword.
  • +
+ +

C++

+
    +
  • The C++ front end has experimental support for all of the current C++17 + draft with the -std=c++1z or -std=gnu++1z flags, + including if constexpr, class template argument + deduction, auto template parameters, and structured bindings. + For a full list of new features, + see the C++ + status page.
  • +
  • C++17 support for new of over-aligned types can be enabled + in other modes with the -faligned-new flag.
  • +
  • The C++17 evaluation order requirements can be selected in other modes + with the -fstrong-eval-order flag, or disabled in C++17 mode + with -fno-strong-eval-order.
  • +
  • The default semantics of inherited constructors has changed in all modes, + following P0136. Essentially, + overload resolution happens as if calling the inherited constructor + directly, and the compiler fills in construction of the other bases and + members as needed. Most uses should not need any changes. The old + behavior can be restored with -fno-new-inheriting-ctors, + or -fabi-version less than 11.
  • +
  • The resolution of DR 150 on matching of template template parameters, + allowing default template arguments to make a template match a parameter, + is currently enabled by default in C++17 mode only. The default can be + overridden with -f{no-,}new-ttp-matching.
  • +
  • The C++ front end will now provide fix-it hints for some missing + semicolons, allowing for automatic fixes by IDEs: +
    +test.cc:4:11: error: expected ';' after class definition
    + class a {} 
    +           ^
    +           ;
    +
  • +
  • -Waligned-new has been added to the C++ front end. It warns + about new of type with extended alignment without + -faligned-new.
  • +
+ +

Runtime Library (libstdc++)

+
    +
  • + The type of exception thrown by iostreams, + std::ios_base::failure, now uses the + cxx11 + ABI. +
  • +
  • Experimental support for C++17, including the following new features: +
      +
    • + std::string_view; +
    • +
    • + std::any, std::optional, + and std::variant; +
    • +
    • + std::invoke, std::is_invocable, + std::is_nothrow_invocable, and invoke_result; +
    • +
    • + std::is_swappable, + and std::is_nothrow_swappable; +
    • +
    • + std::apply, + and std::make_from_tuple; +
    • +
    • + std::void_t, std::bool_constant, + std::conjunction, std::disjunction, + and std::negation; +
    • +
    • Variable templates for type traits;
    • +
    • Mathematical Special Functions;
    • +
    • + std::chrono::floor, std::chrono::ceil, + std::chrono::round, and std::chrono::abs; +
    • +
    • + std::clamp, std::gcd, std::lcm, + 3-dimensional std::hypot; +
    • +
    • + std::scoped_lock, std::shared_mutex, + std::atomic<T>::is_always_lock_free; +
    • +
    • + std::sample, std::default_searcher, + std::boyer_moore_searcher and + std::boyer_moore_horspool_searcher; +
    • +
    • + Extraction and re-insertion of map and set nodes, try_emplace + members for maps, and functions for accessing containers + std::size, std::empty, and + std::data; +
    • +
    • + std::shared_ptr support for arrays, + std::shared_ptr<T>::weak_type, + std::enable_shared_from_this<T>::weak_from_this(), + and std::owner_less<void>; +
    • +
    • std::byte;
    • +
    • std::as_const, std::not_fn, + std::has_unique_object_representations, + constexpr std::addressof. +
    • +
    + Thanks to Daniel Krügler, Tim Shen, Edward Smith-Rowland, and Ville Voutilainen for + work on the C++17 support. +
  • +
  • + A new power-of-two rehashing policy for use with the + _Hashtable internals, thanks to François Dumont. +
  • +
+ +

Fortran

+
    + +
  • + Support for a number of extensions for compatibility with legacy code + with new flags: +
      +
    • + -fdec-structure + Support for DEC STRUCTURE and UNION +
    • +
    • + -fdec-intrinsic-ints + Support for new integer intrinsics with B/I/J/K prefixes such as + BABS, JIAND... +
    • +
    • + -fdec-math + Support for additional math intrinsics, including COTAN and + degree-valued trigonometric functions such as TAND, + ASIND... +
    • +
    • + -fdec + Enable the -fdec-* family of extensions. +
    • +
    +
  • + +
  • + New flag -finit-derived to allow default initialization of + derived-type variables. +
  • + +
  • + Improved DO loops with step equal to 1 or -1, generates faster + code without a loop preheader. A new warning, -Wundefined-do-loop, + warns when a loop iterates either to HUGE(i) (with step equal + to 1), or to -HUGE(i) (with step equal to -1). Invalid behavior + can be caught at run time with -fcheck=do enabled: +
    +program test
    +  implicit none
    +  integer(1) :: i
    +  do i = -HUGE(i)+10, -HUGE(i)-1, -1
    +    print *, i
    +  end do
    +end program test
    +
    +At line 8 of file do_check_12.f90
    +Fortran runtime error: Loop iterates infinitely
    +
  • +
  • Version 4.5 of the OpenMP specification is now partially supported also in the + Fortran compiler; the largest missing item is structure element + mapping.
  • + +
  • User-defined derived-type input/output (UDTIO) is added.
  • + +
  • Derived type coarrays with allocable and pointer components + is partially supported.
  • + +
  • Non-constant stop codes and error stop codes (Fortran 2015 feature).
  • + +
  • Derived types with allocatable components of recursive type.
  • + +
  • Intrinsic assignment to polymorphic variables.
  • + +
  • Improved submodule support.
  • + +
  • Improved diagnostics (polymorphic results in pure functions).
  • +
+ +

Go

+
    +
  • GCC 7 provides a complete implementation of the Go 1.8.1 + user packages.
  • + +
  • Compared to the Go 1.8.1 toolchain, the garbage collector is more + conservative and less concurrent.
  • + +
  • Escape analysis is available for experimental use via + the -fgo-optimize-allocs option. + The -fgo-debug-escape prints information useful for + debugging escape analysis choices.
  • + +
+ +

Java (GCJ)

+ +

The GCC Java frontend and associated libjava runtime library have been +removed from GCC.

+ + +

libgccjit

+ +

The libgccjit API gained support for marking calls as requiring +tail-call optimization via a new entrypoint: +gcc_jit_rvalue_set_bool_require_tail_call.

+ +

libgccjit performs numerous checks at the API boundary, but +if these succeed, it previously ignored errors and other diagnostics emitted +within the core of GCC, and treated the compile of a gcc_jit_context +as having succeeded. As of GCC 7 it now ensures that if any diagnostics are +emitted, they are visible from the libgccjit API, and that the the context is +flagged as having failed.

+ + +

New Targets and Target Specific Improvements

+ +

AArch64

+
    +
  • + The ARMv8.3-A architecture is now supported. It can be used by + specifying the -march=armv8.3-a option. +
  • +
  • + The option -msign-return-address= is supported to enable + return address protection using ARMv8.3-A Pointer Authentication + Extensions. For more information on the arguments accepted by this + option, please refer to + + AArch64-Options. +
  • +
  • + The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point + Extensions are now supported. They can be used by specifying the + -march=armv8.2-a or -march=armv8.2-a+fp16 + options. + The 16-bit Floating-Point Extensions introduce new half-precision data + processing floating-point instructions. +
  • +
  • + Support has been added for the following processors + (GCC identifiers in parentheses): + ARM Cortex-A73 (cortex-a73), + Broadcom Vulcan (vulcan), + Cavium ThunderX CN81xx (thunderxt81), + Cavium ThunderX CN83xx (thunderxt83), + Cavium ThunderX CN88xx (thunderxt88), + Cavium ThunderX CN88xx pass 1.x (thunderxt88p1), + Cavium ThunderX 2 CN99xx (thunderx2t99), + Qualcomm Falkor (falkor). + The GCC identifiers can be used + as arguments to the -mcpu or -mtune options, + for example: -mcpu=cortex-a73 or + -mtune=vulcan or as arguments to the equivalent target + attributes and pragmas. +
  • +
+ +

ARC

+
    +
  • + Add support for ARC HS and ARC EM processors. +
  • +
  • + Add support for ARC EM variation found in Intel QuarkSE SoCs. +
  • +
  • + Add support for NPS400 ARC700 based CPUs. +
  • +
  • + Thread Local Storage is now supported by ARC CPUs. +
  • +
  • + Fix errors for ARC600 when using 32x16 multiplier option. +
  • +
  • + Fix PIE for ARC CPUs. +
  • +
  • + New CPU templates are supported via multilib. +
  • +
+ +

ARM

+
    +
  • + Support for the ARMv5 and ARMv5E architectures has been deprecated + (which have no known implementations) and will be removed in a future + GCC release. Note that ARMv5T, ARMv5TE and ARMv5TEJ architectures + remain supported. + The values armv5 and armv5e of + -march are thus deprecated. +
  • +
  • + The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point + Extensions are now supported. They can be used by specifying the + -march=armv8.2-a or -march=armv8.2-a+fp16 + options. + The 16-bit Floating-Point Extensions introduce new half-precision data + processing floating-point instructions. +
  • +
  • + The ARMv8-M architecture is now supported in its two architecture + profiles: ARMv8-M Baseline and ARMv8-M Mainline with its DSP and + Floating-Point Extensions. They can be used by specifying the + -march=armv8-m.base, armv8-m.main or + armv8-m.main+dsp options. +
  • +
  • + Support has been added for the following processors + (GCC identifiers in parentheses): ARM Cortex-A73 + (cortex-a73), ARM Cortex-M23 (cortex-m23) and + ARM Cortex-M33 (cortex-m33). + The GCC identifiers can be used + as arguments to the -mcpu or -mtune options, + for example: -mcpu=cortex-a73 or + -mtune=cortex-m33. +
  • +
  • + A new command-line option -mpure-code has been added. + It does not allow constant data to be placed in code sections. + This option is only available when generating non-pic code for ARMv7-M + targets. +
  • +
  • + Support for the ACLE Coprocessor Intrinsics has been added. This enables + the generation of coprocessor instructions through the use of intrinsics + such as cdp, ldc, and others. +
  • +
  • + The configure option --with-multilib-list now accepts the + value rmprofile to build multilib libraries for a range of + embedded targets. See our + installation + instructions for details. +
  • +
+ +

AVR

+
    +
  • On the reduced Tiny cores, the progmem + variable + attribute + is now properly supported. Respective read-only variables are located + in flash memory in section .progmem.data. No special + code is needed to access such variables; the compiler automatically + adds an offset of 0x4000 to all addresses, which is needed + to access variables in flash memory. As opposed to ordinary cores + where it is sufficient to specify the progmem attribute + with definitions, on the reduced Tiny cores the attribute also has to + be specified with (external) declarations: +
    +extern const int array[] __attribute__((__progmem__));
    +
    +int get_value2 (void)
    +{
    +  /* Access via addresses array + 0x4004 and array + 0x4005. */
    +  return array[2];
    +}
    +
    +const int* get_address (unsigned idx)
    +{
    +  /* Returns array + 0x4000 + 2 * idx. */
    +  return &array[idx];
    +}
  • +
  • A new command-line option -Wmisspelled-isr has been added. + It turns off — or turns into errors — + warnings that are reported for interrupt service routines (ISRs) + which don't follow AVR-LibC's naming convention of prefixing + ISR names with __vector.
  • +
  • __builtin_avr_nops(n) is a new + built-in + function + that inserts n NOP instructions into + the instruction stream. n must be a value known at + compile time.
  • +
+ + + +

IA-32/x86-64

+
    +
  • Support for the AVX-512 Fused Multiply Accumulation Packed Single precision + (4FMAPS), AVX-512 Vector Neural Network Instructions Word variable precision + (4VNNIW), AVX-512 Vector Population Count (VPOPCNTDQ) and Software + Guard Extensions (SGX) ISA extensions has been added.
  • +
+ + + + + + + + + +

NVPTX

+
    +
  • OpenMP target regions can now be offloaded to NVidia PTX GPGPUs. + See the Offloading Wiki + on how to configure it.
  • +
+ +

PowerPC / PowerPC64 / RS6000

+
    +
  • The PowerPC port now uses LRA by default.
  • +
  • GCC now diagnoses inline assembly that clobbers register r2. + This has always been invalid code, and is no longer quietly + tolerated.
  • +
  • The PowerPC port's support for ISA 3.0 (-mcpu=power9) + has been enhanced to generate more of the new instructions by default, and + to provide more built-in functions to generate code for other new + instructions.
  • +
  • The configuration option --enable-gnu-indirect-function + is now enabled by default on PowerPC GNU/Linux builds.
  • +
  • The PowerPC port will now allow 64-bit and 32-bit integer types to be + allocated to the VSX vector registers (ISA 2.06 and above). In addition, + on ISA 3.0, 16-bit and 8-bit integer types can be allocated in the vector + registers. Previously, only 64-bit integer types were allowed in the + traditional floating point registers.
  • +
  • New options -mstack-protector-guard=global, + -mstack-protector-guard=tls, + -mstack-protector-guard-reg=, and + -mstack-protector-guard-offset= change how the stack + protector gets the value to use as canary.
  • +
+ + + +

RISC-V

+
    +
  • Support for the RISC-V instruction set has been added.
  • +
+ + + + + +

SPARC

+
    +
  • The SPARC port now uses LRA by default.
  • +
  • Support for the new Subtract-Extended-with-Carry instruction + available in SPARC M7 (Niagara 7) has been added.
  • +
+ + +

Operating Systems

+ +

AIX

+
    +
  • Visibility support has been enabled for AIX 7.1 and above.
  • +
+ +

Fuchsia

+
    +
  • Support has been added for the + Fuchsia OS.
  • +
+ + + + + + + +

RTEMS

+
    +
  • The ABI changes on ARM so that no short enums are used by default.
  • +
+ + + + + + + + + + + +

Other significant improvements

+
    +
  • -fverbose-asm previously emitted information on the + meanings of assembly expressions. This has been extended so that + it now also prints comments showing the source lines that correspond + to the assembly, making it easier to read the generated assembly + (especially with larger functions). + For example, given this C source file: +
    +int test (int n)
    +{
    +  int i;
    +  int total = 0;
    +
    +  for (i = 0; i < n; i++)
    +    total += i * i;
    +  return total;
    +}
    +
    + -fverbose-asm now gives output similar to this for + the function body (when compiling for x86_64, with + -Os): +
    +       .text
    +       .globl  test
    +       .type   test, @@function
    +test:
    +.LFB0:
    +       .cfi_startproc
    +# example.c:4:   int total = 0;
    +       xorl    %eax, %eax      # <retval>
    +# example.c:6:   for (i = 0; i < n; i++)
    +       xorl    %edx, %edx      # i
    +.L2:
    +# example.c:6:   for (i = 0; i < n; i++)
    +       cmpl    %edi, %edx      # n, i
    +       jge     .L5     #,
    +# example.c:7:     total += i * i;
    +       movl    %edx, %ecx      # i, tmp92
    +       imull   %edx, %ecx      # i, tmp92
    +# example.c:6:   for (i = 0; i < n; i++)
    +       incl    %edx    # i
    +# example.c:7:     total += i * i;
    +       addl    %ecx, %eax      # tmp92, <retval>
    +       jmp     .L2     #
    +.L5:
    +# example.c:10: }
    +       ret
    +       .cfi_endproc
    +
  • +
  • Two new options have been added for + printing fix-it hints: +
      +
    • -fdiagnostics-parseable-fixits + allows for fix-it hints to be emitted in a machine-readable + form, suitable for consumption by IDEs. For example, given: +
      +spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
      +   return ptr->colour;
      +               ^~~~~~
      +               color
      +
      +it will emit: +
      +fix-it:"spellcheck-fields.cc":{52:13-52:19}:"color"
      +
    • +
    • -fdiagnostics-generate-patch will print + a patch in "unified" format after any diagnostics are printed, + showing the result of applying all fix-it hints. For the above + example it would emit: +
      +--- spellcheck-fields.cc
      ++++ spellcheck-fields.cc
      +@@ -49,5 +49,5 @@
      +
      + color get_color(struct s *ptr)
      + {
      +-  return ptr->colour;
      ++  return ptr->color;
      + }
      +
  • +
  • The gcc and g++ driver programs will now + provide suggestions for misspelled arguments to command-line options. +
    +$ gcc -c test.c -ftls-model=global-dinamic
    +gcc: error: unknown TLS model 'global-dinamic'
    +gcc: note: valid arguments to '-ftls-model=' are: global-dynamic initial-exec local-dynamic local-exec; did you mean 'global-dynamic'?
    +
  • +
  • The compiler will now provide suggestions for misspelled parameters. +
    +$ gcc -c test.c --param max-early-inliner-iteration=3 
    +cc1: error: invalid --param name 'max-early-inliner-iteration'; did you mean 'max-early-inliner-iterations'?
    +
  • + +
  • Profile-guided optimization (PGO) instrumentation, as well as test coverage (GCOV), + can newly instrument constructors (functions marks with __attribute__((constructor))), + destructors and C++ constructors (and destructors) of classes that are used + as a type of a global variable. +
  • +
  • A new option -fprofile-update=atomic prevents creation of corrupted + profiles created during instrumentation run (-fprofile=generate) + of an application. Downside of the option is a speed penalty. Providing + -pthread on command line would result in selection of atomic + profile updating (when supports by a target). +
  • +
  • +

    GCC's already extensive testsuite has gained some new + capabilities, to further improve the reliability of the compiler:

    +
      +
    • GCC now has has an internal unit testing API and a suite of tests + for programmatic self-testing of subsystems.
    • +
    • GCC's C frontend has been extended so that it can parse dumps of + GCC's internal representations, allowing for DejaGnu tests + that more directly exercise specific optimization passes. This + covers both the + + GIMPLE representation (for testing higher-level + optimizations) and the + + RTL representation, allowing for more direct testing of + lower-level details, such as register allocation and instruction + selection.
    • +
    +
  • +
+ + + + + + + + + + + + + + + + --- gcc-7-7.3.0.orig/debian/README.Bugs.m4 +++ gcc-7-7.3.0/debian/README.Bugs.m4 @@ -0,0 +1,333 @@ +Reporting Bugs in the GNU Compiler Collection for DIST +======================================================== + +Before reporting a bug, please +------------------------------ + +- Check that the behaviour really is a bug. Have a look into some + ANSI standards document. + +- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known + +- Try to reproduce the bug with a current GCC development snapshot. You + usually can get a recent development snapshot from the gcc-snapshot +ifelse(DIST,`Debian',`dnl + package in the unstable (or experimental) distribution. + + See: http://packages.debian.org/gcc-snapshot +', DIST, `Ubuntu',`dnl + package in the current development distribution. + + See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/ +')dnl + +- Try to find out if the bug is a regression (an older GCC version does + not show the bug). + +- Check if the bug is already reported in the bug tracking systems. + +ifelse(DIST,`Debian',`dnl + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +', DIST, `Ubuntu',`dnl + Ubuntu: https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +')dnl + Upstream: http://gcc.gnu.org/bugzilla/ + + +Where to report a bug +--------------------- + +ifelse(DIST,`Debian',`dnl +Please report bugs found in the packaging of GCC to the Debian bug tracking +system. See http://www.debian.org/Bugs/ for instructions (or use the +reportbug script). +', DIST, `Ubuntu',`dnl +Please report bugs found in the packaging of GCC to Launchpad. See below +how issues should be reported. +')dnl + +DIST's current policy is to closely follow the upstream development and +only apply a minimal set of patches (which are summarized in the README.Debian +document). + +ifelse(DIST,`Debian',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Debian +GCC package maintainers, if you report the bug upstream and then submit +a bug report to the Debian BTS and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to the Debian BTS (but read "How to report a bug" +below). +', DIST, `Ubuntu',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Ubuntu +GCC package maintainers, if you report the bug upstream and then submit +a bug report to Launchpad and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to Launchpad (but read "How to report a bug" below). + +Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME. +')dnl + + +How to report a bug +------------------- + +There are complete instructions in the gcc info manual (found in the +gcc-doc package), section Bugs. + +The manual can be read using `M-x info' in Emacs, or if the GNU info +program is installed on your system by `info --node "(gcc)Bugs"'. Or see +the file BUGS included with the gcc source code. + +Online bug reporting instructions can be found at + + http://gcc.gnu.org/bugs.html + +[Some paragraphs taken from the above URL] + +The main purpose of a bug report is to enable us to fix the bug. The +most important prerequisite for this is that the report must be +complete and self-contained, which we explain in detail below. + +Before you report a bug, please check the list of well-known bugs and, +if possible in any way, try a current development snapshot. + +Summarized bug reporting instructions +------------------------------------- + +What we need + +Please include in your bug report all of the following items, the +first three of which can be obtained from the output of gcc -v: + + * the exact version of GCC; + * the system type; + * the options given when GCC was configured/built; + * the complete command line that triggers the bug; + * the compiler output (error messages, warnings, etc.); and + * the preprocessed file (*.i*) that triggers the bug, generated by + adding -save-temps to the complete compilation command, or, in + the case of a bug report for the GNAT front end, a complete set + of source files (see below). + +What we do not want + + * A source file that #includes header files that are left out + of the bug report (see above) + * That source file and a collection of header files. + * An attached archive (tar, zip, shar, whatever) containing all + (or some :-) of the above. + * A code snippet that won't cause the compiler to produce the + exact output mentioned in the bug report (e.g., a snippet with + just a few lines around the one that apparently triggers the + bug, with some pieces replaced with ellipses or comments for + extra obfuscation :-) + * The location (URL) of the package that failed to build (we won't + download it, anyway, since you've already given us what we need + to duplicate the bug, haven't you? :-) + * An error that occurs only some of the times a certain file is + compiled, such that retrying a sufficient number of times + results in a successful compilation; this is a symptom of a + hardware problem, not of a compiler bug (sorry) + * E-mail messages that complement previous, incomplete bug + reports. Post a new, self-contained, full bug report instead, if + possible as a follow-up to the original bug report + * Assembly files (*.s) produced by the compiler, or any binary files, + such as object files, executables, core files, or precompiled + header files + * Duplicate bug reports, or reports of bugs already fixed in the + development tree, especially those that have already been + reported as fixed last week :-) + * Bugs in the assembler, the linker or the C library. These are + separate projects, with separate mailing lists and different bug + reporting procedures + * Bugs in releases or snapshots of GCC not issued by the GNU + Project. Report them to whoever provided you with the release + * Questions about the correctness or the expected behavior of + certain constructs that are not GCC extensions. Ask them in + forums dedicated to the discussion of the programming language + + +Known Bugs and Non-Bugs +----------------------- + +[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first] + + +C++ exceptions don't work with C libraries +------------------------------------------ + +[Taken from the closed bug report #22769] C++ exceptions don't work +with C libraries, if the C code wasn't designed to be thrown through. +A solution could be to translate all C libraries with -fexceptions. +Mostly trying to throw an exception in a callback function (qsort, +Tcl command callbacks, etc ...). Example: + + #include + #include + + class A {}; + + static + int SortCondition(void const*, void const*) + { + printf("throwing 'sortcondition' exception\n"); + throw A(); + } + + int main(int argc, char *argv[]) + { + int list[2]; + + try { + SortCondition(NULL,NULL); + } catch (A) { + printf("caught test-sortcondition exception\n"); + } + try { + qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]), + &SortCondition); + } catch (A) { + printf("caught real-sortcondition exception\n"); + } + return 0; +} + +Andrew Macleod responded: + +When compiled with the table driven exception handling, exception can only +be thrown through functions which have been compiled with the table driven EH. +If a function isn't compiled that way, then we do not have the frame +unwinding information required to restore the registers when unwinding. + +I believe the setjmp/longjmp mechanism will throw through things like this, +but its produces much messier code. (-fsjlj-exceptions) + +The C compiler does support exceptions, you just have to turn them on +with -fexceptions. + +Your main options are to: + a) Don't use callbacks, or at least don't throw through them. + b) Get the source and compile the library with -fexceptions (You have to + explicitly turn on exceptions in the C compiler) + c) always use -fsjlj-exceptions (boo, bad choice :-) + + +g++: "undefined reference" to static const array in class +--------------------------------------------------------- + +The following code compiles under GNU C++ 2.7.2 with correct results, +but produces the same linker error with GNU C++ 2.95.2. +Alexandre Oliva responded: + +All of them are correct. A static data member *must* be defined +outside the class body even if it is initialized within the class +body, but no diagnostic is required if the definition is missing. It +turns out that some releases do emit references to the missing symbol, +while others optimize it away. + +#include + +class Test +{ + public: + Test(const char *q); + protected: + static const unsigned char Jam_signature[4] = "JAM"; +}; + +Test::Test(const char *q) +{ + if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0) + cerr << "Hello world!\n"; +} + +int main(void) +{ + Test::Test("JAM"); + return 0; +} + +g++: g++ causes passing non const ptr to ptr to a func with const arg + to cause an error (not a bug) +--------------------------------------------------------------------- + +Example: + +#include +void test(const char **b){ + printf ("%s\n",*b); +} +int main(void){ + char *test1="aoeu"; + test(&test1); +} + +make const +g++ const.cc -o const +const.cc: In function `int main()': +const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const' +make: *** [const] Error 1 + +Answer from "Martin v. Loewis" : + +> ok... maybe I missed something.. I haven't really kept up with the latest in +> C++ news. But I've never heard anything even remotly close to passing a non +> const var into a const arg being an error before. + +Thanks for your bug report. This is a not a bug in the compiler, but +in your code. The standard, in 4.4/4, puts it that way + +# A conversion can add cv-qualifiers at levels other than the first in +# multi-level pointers, subject to the following rules: +# Two pointer types T1 and T2 are similar if there exists a type T and +# integer n > 0 such that: +# T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1) +# pointer to cv(1,n) T +# and +# T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1) +# pointer to cv(2,n) T +# where each cv(i,j) is const, volatile, const volatile, or +# nothing. The n-tuple of cv-qualifiers after the first in a pointer +# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type +# T1, is called the cv-qualification signature of the pointer type. An +# expression of type T1 can be converted to type T2 if and only if the +# following conditions are satisfied: +# - the pointer types are similar. +# - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) , +# and similarly for volatile. +# - if the cv(1,j) and cv(2,j) are different, then const is in every +# cv(2,k) for 0 < k < j. + +It is the last rule that your code violates. The standard gives then +the following example as a rationale: + +# [Note: if a program could assign a pointer of type T** to a pointer +# of type const T** (that is, if line //1 below was allowed), a +# program could inadvertently modify a const object (as it is done on +# line //2). For example, +# int main() { +# const char c = 'c'; +# char* pc; +# const char** pcc = &pc; //1: not allowed +# *pcc = &c; +# *pc = 'C'; //2: modifies a const object +# } +# - end note] + +If you question this line of reasoning, please discuss it in one of +the public C++ fora first, eg. comp.lang.c++.moderated, or +comp.std.c++. + + +cpp removes blank lines +----------------------- + +With the new cpp, you need to add -traditional to the "cpp -P" args, else +blank lines get removed. + +[EDIT ME: scan Debian bug reports and write some nice summaries ...] --- gcc-7-7.3.0.orig/debian/README.C++ +++ gcc-7-7.3.0/debian/README.C++ @@ -0,0 +1,35 @@ +libstdc++ is an implementation of the Standard C++ Library, including the +Standard Template Library (i.e. as specified by ANSI and ISO). + +Some notes on porting applications from libstdc++-2.90 (or earlier versions) +to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the +installation of the package, look at: + + file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html + +On Debian GNU/Linux you find additional documentation in the +libstdc++6-4.3-doc package. After installing these packages, +point your browser to + + file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html + +Other documentation can be found: + + http://www.sgi.com/tech/stl/ + +with a good, recent, book on C++. + +A great deal of useful C++ documentation can be found in the C++ FAQ-Lite, +maintained by Marshall Cline . It can be found at the +mirror sites linked from the following URL (this was last updated on +2010/09/11): + + http://www.parashift.com/c++-faq/ + +or use some search engin site to find it, e.g.: + + http://www.google.com/search?q=c%2B%2B+faq+lite + +Be careful not to use outdated mirors. + +Please send updates to this list as bug report for the g++ package. --- gcc-7-7.3.0.orig/debian/README.Debian +++ gcc-7-7.3.0/debian/README.Debian @@ -0,0 +1,45 @@ + The Debian GNU Compiler Collection setup + ======================================== + +Please see the README.Debian in /usr/share/doc/gcc, contained in the +gcc package for a description of the setup of the different compiler +versions. + +For general discussion about the Debian toolchain (GCC, glibc, binutils) +please use the mailing list debian-toolchain@lists.debian.org; for GCC +specific things, please use debian-gcc@lists.debian.org. When in doubt +use the debian-toolchain ML. + + +Maintainers of these packages +----------------------------- + +Matthias Klose +Ludovic Brenta (gnat) +Iain Buclaw (gdc) +Aurelien Jarno (mips*-linux) +Aurelien Jarno (s390X*-linux) + +The following ports lack maintenance in Debian: powerpc, ppc64, +sparc, sparc64 (unmentioned ports are usually handled by the Debian +porters). + +Former and/or inactive maintainers of these packages +---------------------------------------------------- + +Falk Hueffner (alpha-linux) +Ray Dassen +Jeff Bailey (hurd-i386) +Joel Baker (netbsd-i386) +Randolph Chung (ia64-linux) +Philip Blundell (arm-linux) +Ben Collins (sparc-linux) +Dan Jacobowitz (powerpc-linux) +Thiemo Seufer (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Arthur Loiret (gdc) + +=============================================================================== + --- gcc-7-7.3.0.orig/debian/README.cross +++ gcc-7-7.3.0/debian/README.cross @@ -0,0 +1,20 @@ +Building cross-compiler Debian packages +--------------------------------------- + +The packaging for cross toolchains is now in the archive, including +all frontends, and targeting all release and ports architectures. + +Cross toolchains are built from the following source packages: + + - binutils + - cross-toolchain-base + - cross-toolchain-base-ports + - gcc-7-cross + - gcc-7-cross-ports + - gcc-8-cross + - gcc-8-cross-ports + - gcc-defaults + - gcc-defaults-ports + +Issues about the cross toolchains should be filed for one of the +above source packages. --- gcc-7-7.3.0.orig/debian/README.gnat +++ gcc-7-7.3.0/debian/README.gnat @@ -0,0 +1,35 @@ +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.mk Makefile snippet and/or include + it from debian/rules in order to set sensible defaults. --- gcc-7-7.3.0.orig/debian/README.libstdc++-baseline.in +++ gcc-7-7.3.0/debian/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. --- gcc-7-7.3.0.orig/debian/README.maintainers +++ gcc-7-7.3.0/debian/README.maintainers @@ -0,0 +1,190 @@ +-*- Outline -*- + +Read this file if you are a Debian Developer or would like to become +one, or if you would like to create your own binary packages of GCC. + +* Overview + +From the GCC sources, Debian currently builds 3 source packages and +almost 100 binary packages, using a single set of build scripts. The +3 source packages are: + +gcc-x.y: C, C++, Fortran, Objective-C and Objective-C++, plus many + common libraries like libssp and libgcc. +gnat-x.y: Ada. + +The way we do this is quite peculiar, so listen up :) + +When we build from the gcc-x.y source package, we produce, among many +others, a gcc-x.y-source binary package that contains the pristine +upstream tarball and some Debian-specific patches. Any user can then +install this package on their Debian system, and will have the full +souces in /usr/src/gcc-x.y/gcc-.tar.bz2, along with the +Makefile snippets that unpack and patch them. + +The intended use for this package is twofold: (a) allow users to build +their own cross-compilers, and (b) build the other packages like +gnat-x.y. + +- gcc-x.y requires only a C compiler to build and produces C, C++, + Fortran, Go and Objective-C compilers and libraries. It also + produces the binary package gcc-x.y-source containing all the + sources and patches in a tarball. + +- gnat-x.y build-depends on gcc-x.y-source and an Ada compiler. It + does not even have an .orig.tar.bz2 package; it is a Debian native + package. + +The benefits of this split are many: + +- bootstrapping a subset of languages is much faster than + bootstrapping all languages and libraries (which can take a full + week on slow architectures like mips or arm) + +- the language maintainers don't have to wait for each other + +- for new ports, the absence of a port of, say, gnat-x.y does not + block the porting of gcc-x.y. + +gcc-x.y-source is also intended for interested users to build +cross-compiler packages. Debian cannot provide all possible +cross-compiler packages (i.e. all possible host, target, language and +library combinations), so instead tries to facilitate building them. + +* The build sequence + +As for all other Debian packages, you build GCC by calling +debian/rules. + +The first thing debian/rules does it to look at the top-most entry in +debian/changelog: this tells it which source package it is building. +For example, if the first entry in debian/changelog reads: + +gnat-6 (6.2.0-1) unstable; urgency=low + + * Upload as gnat-6. + + -- Ludovic Brenta Tue, 26 Jun 2007 00:26:42 +0200 + +then, debian/rules will build only the gnat binary packages. + +The second step is to build debian/control from debian/control.m4 and +a complex set of rules specified in debian/rules.conf. The resulting +control file contains only the binary packages to be built. + +The third step is to select which patches to apply (this is done in +debian/rules.defs), and then to apply the selected patches (see +debian/rules.patch). The result of this step is a generated +debian/patches/series file for use by quilt. + +The fourth step is to unpack the GCC source tarball. This tarball is +either in the build directory (when building gcc-x.y), or in +/usr/src/gcc-x.y/gcc-x.y.z.tar.xz (when building the other source +packages). + +The fifth step is to apply all patches to the unpacked sources with +quilt. + +The sixth step is to create a "build" directory, cd into it, call +../src/configure, and bootstrap the compiler and libraries selected. +This is in debian/rules2. + +The seventh step is to call "make install" in the build directory: +this installs the compiler and libraries into debian/tmp +(i.e. debian/tmp/usr/bin/gcc, etc.) + +The eighth step is to run the GCC test suite. This actually takes at +least as much time as bootstrapping, and you can disable it by setting +WITHOUT_CHECK to "yes" in the environment. + +The ninth step is to build the binary packages, i.e. the .debs. This +is done by a set of language- and architecture-dependent Makefile +snippets in the debian/rules.d/ directory, which move files from the +debian/tmp tree to the debian/ trees. + +* Making your own packages + +In this example, we will build our own gnat-x.y package. + +1) Install gcc-x.y-source, which contains the real sources: + +# aptitude install gcc-x.y-source + +2) Create a build directory: + +$ mkdir gnat-x.y-x.y.z; cd gnat-x.y-x.y.z + +3) Checkout from Subversion: + +$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-x.y/debian + +4) Edit the debian/changelog file, adding a new entry at the top that + starts with "gnat-x.y". + +5) Generate the debian/control file, adjusted for gnat: + +$ debian/rules control + +8) Build: + +$ dpkg-buildpackage + +* Hints + +You need a powerful machine to build GCC. The larger, the better. +The build scripts take advantage of as many CPU threads as are +available in your box (for example: 2 threads on a dual-core amd64; 4 +threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1, +etc.). + +If you have 2 GB or more of physical RAM, you can achieve maximum +performance by building in a tmpfs, like this: + +1) as root, create the new tmpfs: + +# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram + +By default, the tmpfs will be limited to half your physical RAM. The +beauty of it is that it only consumes as much physical RAM as +necessary to hold the files in it; deleting files frees up RAM. + +2) As your regular user, create the working directory in the tmpfs + +$ cp --archive ~/src/debian/gcc-x.y-x.y.z ~/src/debian/ram + +3) Build in there. On my dual-core, 2 GHz amd64, it takes 34 minutes + to build gnat, and the tmpfs takes 992 MiB of physical RAM but + exceeds 1 GiB during the build. + +Note that the build process uses a lot of temporary files. Your $TEMP +directory should therefore also be in a ram disk. You can achieve +that either by mounting it as tmpfs, or by setting TEMP to point to +~/src/debian/ram. + +Also note that each thread in your processor(s) will run a compiler in +it and use up RAM. Therefore your physical memory should be: + +Physical_RAM >= 1.2 + 0.4 * Threads (in GiB) + +(this is an estimate; your mileage may vary). If you have less +physical RAM than recommended, reduce the number of threads allocated +to the build process, or do not use a tmpfs to build. + +* Patching GCC + +Debian applies a large number of patches to GCC as part of the build +process. It uses quilt but the necessary debian/patches/series is not +part of the packaging scripts; instead, "debian/rules patch" generates +this file by looking at debian/control (which is itself generated!), +debian/changelog and other files. Then it applies all the patches. +At this point, you can use quilt as usual: + +$ cd ~/src/debian/gcc-x.y +$ export QUILT_PATCHES=$PWD/debian/patches +$ quilt series + +If you add new patches, remember to add them to the version control +system too. + +-- +Ludovic Brenta, 2012-04-02. --- gcc-7-7.3.0.orig/debian/README.snapshot +++ gcc-7-7.3.0/debian/README.snapshot @@ -0,0 +1,36 @@ +Debian gcc-snapshot package +=========================== + +This package contains a recent development SNAPSHOT of all files +contained in the GNU Compiler Collection (GCC). + +DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + +This package will NEVER hit the testing distribution. It's used for +tracking gcc bugs submitted to the Debian BTS in recent development +versions of gcc. + +To use this snapshot, you should set the following environment variables: + + LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH + PATH=/usr/lib/gcc-snapshot/bin:$PATH + +You might also like to use a shell script to wrap up this +funcationality, e.g. + +place in /usr/local/bin/gcc-snapshot and chmod +x it + +----------- snip ---------- +#! /bin/sh +LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH +PATH=/usr/lib/gcc-snapshot/bin:$PATH +gcc "$@" +----------- snip ---------- + +Make the same for g++, g77, cpp, ... + +Don't forget the quotes around the $@ or gcc will not parse it's +command line correctly! + +Unset these variables before building Debian packages destined for an +upload to ftp-master.debian.org. --- gcc-7-7.3.0.orig/debian/README.source +++ gcc-7-7.3.0/debian/README.source @@ -0,0 +1,16 @@ +Patches applied to the Debian version of GCC +-------------------------------------------- + +Debian specific patches can be found in the debian/patches directory. +Quilt is used as the patch system. See /usr/share/doc/quilt/README.source +for details about quilt. + +Patches are applied by calling `debian/rules patch'. The `series' +file is constructed on the fly based on the files found in the to +debian/rules.patch "debian_patches" variable, configure scripts are +regenerated in the `patch' target. The gcc source is unpacked under +src/ this needs to be reflected in the patch header. + +The source packages gdc-x.y and gnat-x.y do not contain copies of the +source code but build-depend on the appropriate gcc-x.y-source package +instead. --- gcc-7-7.3.0.orig/debian/README.ssp +++ gcc-7-7.3.0/debian/README.ssp @@ -0,0 +1,28 @@ +Stack smashing protection is a feature of GCC that enables a program to +detect buffer overflows and immediately terminate execution, rather than +continuing execution with corrupt internal data structures. It uses +"canaries" and local variable reordering to reduce the likelihood of +stack corruption through buffer overflows. + +Options that affect stack smashing protection: + +-fstack-protector + Enables protection for functions that are vulnerable to stack + smashing, such as those that call alloca() or use pointers. + +-fstack-protector-all + Enables protection for all functions. + +-Wstack-protector + Warns about functions that will not be protected. Only active when + -fstack-protector has been used. + +Applications built with stack smashing protection should link with the +ssp library by using the option "-lssp" for systems with glibc-2.3.x or +older; glibc-2.4 and newer versions provide this functionality in libc. + +The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not +have support for stack smashing protection. + +More documentation can be found at the project's website: +http://researchweb.watson.ibm.com/trl/projects/security/ssp/ --- gcc-7-7.3.0.orig/debian/TODO +++ gcc-7-7.3.0/debian/TODO @@ -0,0 +1,46 @@ +(It is recommended to edit this file with emacs' todoo mode) +Last updated: 2008-05-02 + +* General + +- Clean up the sprawl of debian/rules. I'm sure there are neater + ways to do some of it; perhaps split it up into some more files? + Partly done. + +- Make debian/rules control build the control file without unpacking + the sources or applying patches. Currently, it unpacks the sources, + patches them, creates the control file, and a subsequent + dpkg-buildpackage deletes the sources, re-unpacks them, and + re-patches them. + +- Reorganise debian/rules.defs to decide which packages to build in a + more straightforward and less error-prone fashion: (1) start with + all languages; override the list of languages depending on the name + of the source package (gcc-4.3, gnat-4.3, gdc-4.3). (2) + filter the list of languages depending on the target platform; (3) + depending on the languages to build, decide on which libraries to + build. + +o [Ludovic Brenta] Ada + +- Done: Link the gnat tools with libgnat.so, instead of statically. + +- Done: Build libgnatvsn containing parts of the compiler (version + string, etc.) under GNAT-Modified GPL. Link the gnat tools with it. + +- Done: Build libgnatprj containing parts of the compiler (the project + manager) under pure GPL. Link the gnat tools with it. + +- Done: Build both the zero-cost and setjump/longjump exceptions + versions of libgnat. In particular, gnat-glade (distributed systems) + works best with SJLJ. + +- Done: Re-enable running the test suite. + +- Add support for building cross-compilers. + +- Add support for multilib (not yet supported upstream). + +* Fortran + +- gfortran man page generation --- gcc-7-7.3.0.orig/debian/acats-killer.sh +++ gcc-7-7.3.0/debian/acats-killer.sh @@ -0,0 +1,62 @@ +#! /bin/sh + +# on ia64 systems, the acats hangs in unaligned memory accesses. +# kill these testcases. + +pidfile=acats-killer.pid + +usage() +{ + echo >&2 "usage: `basename $0` [-p ] " + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -eq 2 ] || usage + +logfile=$1 +stopfile=$2 +interval=30 + +echo $$ > $pidfile + +while true; do + if [ -f "$stopfile" ]; then + echo "`basename $0`: finished." + rm -f $pidfile + exit 0 + fi + sleep $interval + if [ ! -f "$logfile" ]; then + continue + fi + pids=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ -n "$pids" ]; then + sleep $interval + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill: $pids + kill $pids + sleep 1 + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill -9: $pids + kill -9 $pids + fi + fi + fi +done --- gcc-7-7.3.0.orig/debian/ada/confirm_debian_bugs.py +++ gcc-7-7.3.0/debian/ada/confirm_debian_bugs.py @@ -0,0 +1,980 @@ +#!/usr/bin/python2 + +# 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 = "7" + +for line in subprocess.check_output (("dpkg", "--status", "gnat-" + new_version)).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) + 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; +"""),)) + +# Once the bug box disappears, check the executable. +# check_produces_a_faulty_executable ( +check_reports_an_error_but_should_not ( + bug = 427108, + make = ("gnatmake", "test1"), + regex = "Program_Error exp_disp.adb:7840 explicit raise", + sources = ( + ("test1.adb", """-- "For the execution of a call on an inherited subprogram, +-- a call on the corresponding primitive subprogram of the +-- parent or progenitor type is performed; the normal conversion +-- of each actual parameter to the subtype of the corresponding +-- formal parameter (see 6.4.1) performs any necessary type +-- conversion as well." + +with Text_IO; use Text_IO; +procedure Test1 is + package Pak1 is + type T1 is tagged null record; + function Eq(X, Y: T1) return Boolean renames "="; + end Pak1; + + package Pak2 is + type T2 is new Pak1.T1 with record + F1: Integer; + end record; + end Pak2; + + Z1: Pak2.T2 := (F1 => 1); + Z2: Pak2.T2 := (F1 => 2); +begin + if Pak2.Eq(Z1, Z2) = Pak1.Eq(Pak1.T1(Z1), Pak1.T1(Z2)) + then Put_Line("PASSED"); + else Put_Line("FAILED"); + end if; +end Test1; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 660698, + make = ("gnatmake", "proc.adb"), + regex = 'proc\.adb:17:28: there is no applicable operator "And" for type "Standard\.Integer"', + sources = ( + ("proc.adb", """procedure Proc is + package P1 is + type T is new Integer; + function "and" (L, R : in Integer) return T; + end P1; + package body P1 is + function "and" (L, R : in Integer) return T is + pragma Unreferenced (L, R); + begin + return 0; + end "and"; + end P1; + use type P1.T; + package P2 is + use P1; + end P2; + G : P1.T := Integer'(1) and Integer'(2); +begin + null; +end Proc; +"""), )) + +check_produces_a_faulty_executable ( + bug = 737225, + make = ("gnatmake", "round_decimal"), + trigger = "round_decimal", + regex = "Bug reproduced.", + sources = ( + ("round_decimal.adb", """with Ada.Text_IO; + +procedure Round_Decimal is + + -- OJBECTIVE: + -- Check that 'Round of a decimal fixed point type does round + -- away from zero if the operand is of a decimal fixed point + -- type with a smaller delta. + + Unexpected_Compiler_Bug : exception; + + type Milli is delta 0.001 digits 9; + type Centi is delta 0.01 digits 9; + + function Rounded (Value : Milli) return Centi; + -- Value, rounded using Centi'Round + + function Rounded (Value : Milli) return Centi is + begin + return Centi'Round (Value); + end Rounded; + +begin + -- Operands used directly: + if not (Milli'Round (0.999) = Milli'(0.999) + and + Centi'Round (0.999) = Centi'(1.0) + and + Centi'Round (Milli'(0.999)) = Centi'(1.0)) + then + raise Unexpected_Compiler_Bug; + end if; + if Rounded (Milli'(0.999)) /= Centi'(1.0) then + Ada.Text_IO.Put_Line ("Bug reproduced."); + end if; +end Round_Decimal; +"""),)) + +# Even if an error is reported, the problem with the atomic variable +# should be checked. +check_reports_an_error_but_should_not ( + bug = 643663, + make = ("gnatmake", "test"), + regex = 'test\.adb:4:25: no value supplied for component "Reserved"', + sources = ( + ("pkg.ads", """package Pkg is + type Byte is mod 2**8; + type Reserved_24 is mod 2**24; + + type Data_Record is + record + Data : Byte; + Reserved : Reserved_24; + end record; + + for Data_Record use + record + Data at 0 range 0 .. 7; + Reserved at 0 range 8 .. 31; + end record; + + for Data_Record'Size use 32; + for Data_Record'Alignment use 4; + + Data_Register : Data_Record; + pragma Atomic (Data_Register); +end Pkg; +"""), ("test.adb", """with Pkg; +procedure Test is +begin + Pkg.Data_Register := ( + Data => 255, + others => <> -- expected error: no value supplied for component "Reserved" + ); +end Test; +"""))) + +check_produces_a_faulty_executable ( + bug = 864969, + make = ("gnatmake", "main"), + trigger = "main", + regex = "ZZund", + sources = ( + ("main.adb", """with Ada.Locales, Ada.Text_IO; +procedure Main is +begin + Ada.Text_IO.Put_Line (String (Ada.Locales.Country) + & String (Ada.Locales.Language)); +end Main; +"""),)) + +try: + os.rmdir (workspace) +except: + print ("Some unconfirmed, not removing directory {}.".format (workspace)) --- gcc-7-7.3.0.orig/debian/ada/debian_packaging.mk +++ gcc-7-7.3.0/debian/ada/debian_packaging.mk @@ -0,0 +1,91 @@ +# Common settings for Ada Debian packaging. +# +# Copyright (C) 2012-2014 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 . +# + +# dpkg-dev (>= 1.16.1) 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 DPKG_EXPORT_BUILDFLAGS + export ADAFLAGS +endif + +# 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. +LDFLAGS += -Wl,--as-needed + +# Warn during build time if undefined symbols. +LDFLAGS += -Wl,-z,defs + +ifdef DPKG_EXPORT_BUILDFLAGS + export LDFLAGS +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 +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 + +BUILDER_OPTIONS += -v +# Make exact command lines available for automatic log checkers. + +BUILDER_OPTIONS += -eS +# Tell gnatmake to echo commands to stdout instead of stderr, avoiding +# buildds thinking it is inactive and killing it. +# -eS is the default on gprbuild. + +# You may be interested in +# -s recompile if compilation switches have changed +# (bad default because of interactions between -amxs and standard library) +# -we handle warnings as errors +# -vP2 verbose when parsing projects. --- gcc-7-7.3.0.orig/debian/bin-wrapper.in +++ gcc-7-7.3.0/debian/bin-wrapper.in @@ -0,0 +1,11 @@ +#! /bin/sh + +# some build tools are linked with a new libstdc++ and fail to run +# when building libstdc++. + +if [ -n "$LD_LIBRARY_PATH" ]; then + ma=$(dpkg-architecture -qDEB_BUILD_MULTIARCH) + export LD_LIBRARY_PATH="/lib/$ma:/usr/lib/$ma:/lib:/usr/lib:$LD_LIBRARY_PATH" +fi + +exec /usr/bin/$(basename $0) "$@" --- gcc-7-7.3.0.orig/debian/changelog +++ gcc-7-7.3.0/debian/changelog @@ -0,0 +1,3973 @@ +gcc-7 (7.3.0-31ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 29 Nov 2018 13:25:21 +0100 + +gcc-7 (7.3.0-31) unstable; urgency=medium + + * GCC 7.4.0 release candidate 1. + * Update to SVN 20181129 (r266612) from the gcc-7-branch. + - Fix PR libstdc++/88199, PR libstdc++/87822, PR tree-optimization/79351, + PR bootstrap/81033, PR target/81733, PR target/52795, + PR middle-end/87645, PR middle-end/87610, PR tree-optimization/87665, + PR tree-optimization/87745, PR tree-optimization/87665, + PR middle-end/86139, PR middle-end/86076, PR target/88051 (x86), + PR target/82961, PR target/87867 (ARM), PR tree-optimization/84777, + PR rtl-optimization/84003, PR target/87853 (x86), PR target/87928 (x86), + PR rtl-optimization/85925, PR debug/88006, PR debug/87462, + PR middle-end/58372, PR c++/84281, PR c++/87075, PR fortran/88073, + PR fortran/88143, PR fortran/87597. + * Backport the libstdc++ mersenne twister optimization for AArch64, so that + the random header is the same on all architectures (Ubuntu only). + LP: #1799955. + * Fix VCS attribute in the control file. Addresses: #912405. + + -- Matthias Klose Thu, 29 Nov 2018 12:32:23 +0100 + +gcc-7 (7.3.0-30ubuntu1) disco; urgency=medium + + * Backport the libstdc++ mersenne twister optimization for AArch64, so that + the random header is the same on all architectures (Ubuntu only). + LP: #1799955. + + -- Matthias Klose Tue, 04 Sep 2018 17:28:42 +0200 + +gcc-7 (7.3.0-30) unstable; urgency=medium + + * Update to SVN 20181030 (r265622) from the gcc-7-branch. + - Fix PR middle-end/86542, PR middle-end/86539, PR middle-end/86660, + PR libstdc++/87749, PR libstdc++/87704, PR libstdc++/79433, + PR libstdc++/87641, PR libstdc++/86751, PR libstdc++/78595, + PR libstdc++/87061, PR libstdc++/70966, PR libstdc++/77854, + PR libstdc++/87538, PR tree-optimization/87473, PR middle-end/87623, + PR target/87511 (AArch64), PR target/87550 (x86), PR middle-end/87248, + PR rtl-optimization/87065, PR middle-end/86627, PR middle-end/86542, + PR middle-end/86539, PR middle-end/86660, PR middle-end/87024, + PR middle-end/86505, PR target/87370 (x86), PR target/87517 (x86), + PR target/87522 (x86), PR other/87353, PR target/87467 (x86), + PR target/87033 (PPC), PR debug/86687, PR c++/3698, PR c++/86208, + PR fortran/86421. + * Don't configure native builds with --with-sysroot. Apparently this cannot + be completely overridden with the command line option --sysroot. + * Update VCS attributes in the control file. + + -- Matthias Klose Tue, 30 Oct 2018 13:52:34 +0100 + +gcc-7 (7.3.0-29) unstable; urgency=medium + + * Update to SVN 20180904 (r264075) from the gcc-7-branch. + - Fix PR sanitizer/86022, PR tree-optimization/85859, PR target/86662, + PR target/87014 (x86), PR c++/86763. + + -- Matthias Klose Tue, 04 Sep 2018 12:27:14 +0200 + +gcc-7 (7.3.0-28ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 14 Aug 2018 13:55:24 +0200 + +gcc-7 (7.3.0-28) unstable; urgency=medium + + * Update to SVN 20180814 (r264534) from the gcc-7-branch. + - Fix PR libstdc++/86138, PR libstdc++/85672, PR libstdc++/84654, + PR libstdc++/80893, PR libstdc++/80893, PR libstdc++/68519, + PR libstdc++/86292, PR libstdc++/60555, PR libstdc++/86861, + PR libstdc++/86734, PR rtl-optimization/85645, PR rtl-optimization/85645, + PR target/86197 (PPC), PR middle-end/86705, PR c++/86728. + - Fix PR bootstrap/86724. Closes: #905539. + + [ Matthias Klose ] + * Add some basic autopkg tests for Ada, C, C++, Go, OpenMP and Fortran. + * Build again using gnat-7. + + [ Nicolas Boulenguez ] + * gnat: Improve the ada-gcc-name patch. + + -- Matthias Klose Tue, 14 Aug 2018 13:27:39 +0200 + +gcc-7 (7.3.0-27ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 20 Jul 2018 13:57:51 +0200 + +gcc-7 (7.3.0-27) unstable; urgency=medium + + * Update to SVN 20180720 (r262899) from the gcc-7-branch. + - Fix PR target/84168 (AArch64). + + [ 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. + * Build using gnat-6, avoiding the broken gnat in 7.3.0-26. + + -- Matthias Klose Fri, 20 Jul 2018 12:55:24 +0200 + +gcc-7 (7.3.0-26ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 17 Jul 2018 14:03:53 +0200 + +gcc-7 (7.3.0-26) unstable; urgency=medium + + * Update to SVN 20180717 (r262814) from the gcc-7-branch. + - Fix PR target/84829, 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 12:20:13 +0200 + +gcc-7 (7.3.0-25ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 12 Jul 2018 10:28:13 +0200 + +gcc-7 (7.3.0-25) unstable; urgency=medium + + * Update to SVN 20180712 (r262577) from the gcc-7-branch. + - Fix PR c++/86291, PR libstdc++/86272, PR libstdc++/86127, + PR target/85904, PR libstdc++/85098, PR libstdc++/85671, PR hsa/86371, + PR libstdc++/83982, PR libstdc++/84087, PR target/86314 (x86), + PR c++/86378, PR c++/80290, PR c++/86291, PR fortran/82969, + PR fortran/86242. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 12 Jul 2018 10:16:26 +0200 + +gcc-7 (7.3.0-24ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 26 Jun 2018 10:04:47 +0200 + +gcc-7 (7.3.0-24) unstable; urgency=medium + + * Update to SVN 20180626 (r262132) from the gcc-7-branch. + - Fix PR jit/85384, PR libstdc++/86138, PR c++/86210, PR c/85696, + PR c++/85662, PR c/85696, PR c/84999, PR c/84853, PR target/84786 (x86), + PR tree-optimization/85989, PR tree-optimization/86231, + PR middle-end/85878, PR target/85945, PR c++/86025, PR c++/85659, + PR web/85578, PR tree-optimization/85529, PR tree-optimization/85446, + PR rtl-optimization/85431, PR target/85430 (x86), + PR rtl-optimization/85300, PR tree-optimization/85257, PR debug/85252, + PR rtl-optimization/85167, PR target/85095, PR inline-asm/85022, + PR inline-asm/85034, PR inline-asm/85022, PR inline-asm/84941, + PR sanitizer/85018, PR debug/84875, PR c/84953, PR target/84990, + PR sanitizer/78651, PR sanitizer/78651, PR target/84899, + PR tree-optimization/84841, PR c++/79085, PR target/84860, + PR middle-end/84834, PR target/84827, PR target/84786, PR target/84772, + PR c++/84767, PR tree-optimization/84739, PR target/84700, + PR middle-end/82063, PR c++/85952, PR c/85696, PR c++/85662, + PR c++/84463, PR c++/85210, PR c++/85208, PR inline-asm/85172, + PR c++/85147, PR c++/85140, PR c++/84791, PR c++/85076, PR c++/85068, + PR c++/84961, PR c++/84874, PR c++/84222, PR c++/84076, PR c++/80598, + PR c++/84662, PR fortran/83118, PR fortran/85313, PR fortran/86110, + PR target/85424 (PPC), PR fortran/82972, PR fortran/83088, + PR fortran/85851. + + [ 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. + + -- Matthias Klose Tue, 26 Jun 2018 09:52:10 +0200 + +gcc-7 (7.3.0-23ubuntu2) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 17 Jun 2018 06:24:58 +0200 + +gcc-7 (7.3.0-23) unstable; urgency=medium + + * Update to SVN 20180617 (r261686) from the gcc-7-branch. + - Fix PR libstdc++/86169. + * Fix applying the powerpcspe patches. + * Fix running the gnat testsuite. + + -- Matthias Klose Sun, 17 Jun 2018 09:34:13 +0200 + +gcc-7 (7.3.0-22) unstable; urgency=medium + + * Update to SVN 20180614 (r261597) from the gcc-7-branch. + - Fix PR sanitizer/84761, PR target/85755 (PPC), PR target/63177 (PPC), + PR middle-end/85588, PR middle-end/85567, PR tree-optimization/85597, + PR tree-optimization/85712, PR c++/85815, PR c++/86060, PR fortran/44491, + PR fortran/38351, PR fortran/63514, PR fortran/78278, PR fortran/86059, + PR fortran/85138, PR fortran/85996, PR fortran/86051, PR fortran/86045, + PR fortran/85641, PR fortran/85981, PR libgfortran/86070, + PR libgfortran/85840, PR fortran/86110. + * Fix PR middle-end/86139, taken from the gcc-8-branch. Addresses: #901290. + + -- Matthias Klose Thu, 14 Jun 2018 16:31:52 +0200 + +gcc-7 (7.3.0-21ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 31 May 2018 13:27:08 +0200 + +gcc-7 (7.3.0-21) unstable; urgency=medium + + * Update to SVN 20180531 (r260992) from the gcc-7-branch. + - Fix PR sanitizer/86012, libsanitizer build on sparc64. + + -- Matthias Klose Thu, 31 May 2018 13:22:03 +0200 + +gcc-7 (7.3.0-20) unstable; urgency=medium + + * Update to SVN 20180529 (r260895) from the gcc-7-branch. + - Fix PR sanitizer/85835, PR libstdc++/85812, PR libstdc++/67554, + PR libstdc++/82966, PR target/85903 (x86), PR target/85698 (PPC), + PR ipa/85655, PR fortran/85543, PR fortran/85779, PR fortran/85780, + PR fortran/85895, PR fortran/80657, PR fortran/82275, PR fortran/82923, + PR fortran/66694, PR fortran/82617, PR fortran/83149, PR fortran/83898, + PR fortran/84546, PR fortran/85542, PR fortran/68846, PR fortran/70864. + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + + -- Matthias Klose Tue, 29 May 2018 15:02:12 +0200 + +gcc-7 (7.3.0-19ubuntu2) cosmic; urgency=medium + + * Update to SVN 20180514 (r260228) from the gcc-7-branch. + - Fix PR fortran/85542, PR fortran/68846, PR fortran/70864. + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + + -- Matthias Klose Mon, 14 May 2018 11:27:51 -0400 + +gcc-7 (7.3.0-19ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 12 May 2018 11:12:38 -0400 + +gcc-7 (7.3.0-19) unstable; urgency=medium + + * Update to SVN 20180512 (r260198) from the gcc-7-branch. + - Fix PR libstdc++/80506, PR c++/85646, PR fortran/85507, + PR fortran/70870, PR fortran/85521, PR fortran/85687. + * Fix name of the g++ multiarch include directory. Addresses: #898323. + + -- Matthias Klose Sat, 12 May 2018 11:01:49 -0400 + +gcc-7 (7.3.0-18ubuntu2) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + * + + -- Matthias Klose Tue, 30 Oct 2018 14:00:04 +0100 + +gcc-7 (7.3.0-29ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 04 Sep 2018 12:49:56 +0200 + +gcc-7 (7.3.0-29) unstable; urgency=medium + + * Update to SVN 20180904 (r264075) from the gcc-7-branch. + - Fix PR sanitizer/86022, PR tree-optimization/85859, PR target/86662, + PR target/87014 (x86), PR c++/86763. + + -- Matthias Klose Tue, 04 Sep 2018 12:27:14 +0200 + +gcc-7 (7.3.0-28ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 14 Aug 2018 13:55:24 +0200 + +gcc-7 (7.3.0-28) unstable; urgency=medium + + * Update to SVN 20180814 (r264534) from the gcc-7-branch. + - Fix PR libstdc++/86138, PR libstdc++/85672, PR libstdc++/84654, + PR libstdc++/80893, PR libstdc++/80893, PR libstdc++/68519, + PR libstdc++/86292, PR libstdc++/60555, PR libstdc++/86861, + PR libstdc++/86734, PR rtl-optimization/85645, PR rtl-optimization/85645, + PR target/86197 (PPC), PR middle-end/86705, PR c++/86728. + - Fix PR bootstrap/86724. Closes: #905539. + + [ Matthias Klose ] + * Add some basic autopkg tests for Ada, C, C++, Go, OpenMP and Fortran. + * Build again using gnat-7. + + [ Nicolas Boulenguez ] + * gnat: Improve the ada-gcc-name patch. + + -- Matthias Klose Tue, 14 Aug 2018 13:27:39 +0200 + +gcc-7 (7.3.0-27ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 20 Jul 2018 13:57:51 +0200 + +gcc-7 (7.3.0-27) unstable; urgency=medium + + * Update to SVN 20180720 (r262899) from the gcc-7-branch. + - Fix PR target/84168 (AArch64). + + [ 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. + * Build using gnat-6, avoiding the broken gnat in 7.3.0-26. + + -- Matthias Klose Fri, 20 Jul 2018 12:55:24 +0200 + +gcc-7 (7.3.0-26ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 17 Jul 2018 14:03:53 +0200 + +gcc-7 (7.3.0-26) unstable; urgency=medium + + * Update to SVN 20180717 (r262814) from the gcc-7-branch. + - Fix PR target/84829, 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 12:20:13 +0200 + +gcc-7 (7.3.0-25ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 12 Jul 2018 10:28:13 +0200 + +gcc-7 (7.3.0-25) unstable; urgency=medium + + * Update to SVN 20180712 (r262577) from the gcc-7-branch. + - Fix PR c++/86291, PR libstdc++/86272, PR libstdc++/86127, + PR target/85904, PR libstdc++/85098, PR libstdc++/85671, PR hsa/86371, + PR libstdc++/83982, PR libstdc++/84087, PR target/86314 (x86), + PR c++/86378, PR c++/80290, PR c++/86291, PR fortran/82969, + PR fortran/86242. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 12 Jul 2018 10:16:26 +0200 + +gcc-7 (7.3.0-24ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 26 Jun 2018 10:04:47 +0200 + +gcc-7 (7.3.0-24) unstable; urgency=medium + + * Update to SVN 20180626 (r262132) from the gcc-7-branch. + - Fix PR jit/85384, PR libstdc++/86138, PR c++/86210, PR c/85696, + PR c++/85662, PR c/85696, PR c/84999, PR c/84853, PR target/84786 (x86), + PR tree-optimization/85989, PR tree-optimization/86231, + PR middle-end/85878, PR target/85945, PR c++/86025, PR c++/85659, + PR web/85578, PR tree-optimization/85529, PR tree-optimization/85446, + PR rtl-optimization/85431, PR target/85430 (x86), + PR rtl-optimization/85300, PR tree-optimization/85257, PR debug/85252, + PR rtl-optimization/85167, PR target/85095, PR inline-asm/85022, + PR inline-asm/85034, PR inline-asm/85022, PR inline-asm/84941, + PR sanitizer/85018, PR debug/84875, PR c/84953, PR target/84990, + PR sanitizer/78651, PR sanitizer/78651, PR target/84899, + PR tree-optimization/84841, PR c++/79085, PR target/84860, + PR middle-end/84834, PR target/84827, PR target/84786, PR target/84772, + PR c++/84767, PR tree-optimization/84739, PR target/84700, + PR middle-end/82063, PR c++/85952, PR c/85696, PR c++/85662, + PR c++/84463, PR c++/85210, PR c++/85208, PR inline-asm/85172, + PR c++/85147, PR c++/85140, PR c++/84791, PR c++/85076, PR c++/85068, + PR c++/84961, PR c++/84874, PR c++/84222, PR c++/84076, PR c++/80598, + PR c++/84662, PR fortran/83118, PR fortran/85313, PR fortran/86110, + PR target/85424 (PPC), PR fortran/82972, PR fortran/83088, + PR fortran/85851. + + [ 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. + + -- Matthias Klose Tue, 26 Jun 2018 09:52:10 +0200 + +gcc-7 (7.3.0-23ubuntu2) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 17 Jun 2018 06:24:58 +0200 + +gcc-7 (7.3.0-23) unstable; urgency=medium + + * Update to SVN 20180617 (r261686) from the gcc-7-branch. + - Fix PR libstdc++/86169. + * Fix applying the powerpcspe patches. + * Fix running the gnat testsuite. + + -- Matthias Klose Sun, 17 Jun 2018 09:34:13 +0200 + +gcc-7 (7.3.0-22) unstable; urgency=medium + + * Update to SVN 20180614 (r261597) from the gcc-7-branch. + - Fix PR sanitizer/84761, PR target/85755 (PPC), PR target/63177 (PPC), + PR middle-end/85588, PR middle-end/85567, PR tree-optimization/85597, + PR tree-optimization/85712, PR c++/85815, PR c++/86060, PR fortran/44491, + PR fortran/38351, PR fortran/63514, PR fortran/78278, PR fortran/86059, + PR fortran/85138, PR fortran/85996, PR fortran/86051, PR fortran/86045, + PR fortran/85641, PR fortran/85981, PR libgfortran/86070, + PR libgfortran/85840, PR fortran/86110. + * Fix PR middle-end/86139, taken from the gcc-8-branch. Addresses: #901290. + + -- Matthias Klose Thu, 14 Jun 2018 16:31:52 +0200 + +gcc-7 (7.3.0-21ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 31 May 2018 13:27:08 +0200 + +gcc-7 (7.3.0-21) unstable; urgency=medium + + * Update to SVN 20180531 (r260992) from the gcc-7-branch. + - Fix PR sanitizer/86012, libsanitizer build on sparc64. + + -- Matthias Klose Thu, 31 May 2018 13:22:03 +0200 + +gcc-7 (7.3.0-20) unstable; urgency=medium + + * Update to SVN 20180529 (r260895) from the gcc-7-branch. + - Fix PR sanitizer/85835, PR libstdc++/85812, PR libstdc++/67554, + PR libstdc++/82966, PR target/85903 (x86), PR target/85698 (PPC), + PR ipa/85655, PR fortran/85543, PR fortran/85779, PR fortran/85780, + PR fortran/85895, PR fortran/80657, PR fortran/82275, PR fortran/82923, + PR fortran/66694, PR fortran/82617, PR fortran/83149, PR fortran/83898, + PR fortran/84546, PR fortran/85542, PR fortran/68846, PR fortran/70864. + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + + -- Matthias Klose Tue, 29 May 2018 15:02:12 +0200 + +gcc-7 (7.3.0-19ubuntu2) cosmic; urgency=medium + + * Update to SVN 20180514 (r260228) from the gcc-7-branch. + - Fix PR fortran/85542, PR fortran/68846, PR fortran/70864. + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + + -- Matthias Klose Mon, 14 May 2018 11:27:51 -0400 + +gcc-7 (7.3.0-19ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 12 May 2018 11:12:38 -0400 + +gcc-7 (7.3.0-19) unstable; urgency=medium + + * Update to SVN 20180512 (r260198) from the gcc-7-branch. + - Fix PR libstdc++/80506, PR c++/85646, PR fortran/85507, + PR fortran/70870, PR fortran/85521, PR fortran/85687. + * Fix name of the g++ multiarch include directory. Addresses: #898323. + + -- Matthias Klose Sat, 12 May 2018 11:01:49 -0400 + +gcc-7 (7.3.0-18ubuntu2) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 06 May 2018 14:13:31 +0200 + +gcc-7 (7.3.0-18) unstable; urgency=medium + + * Update to SVN 20180506 (r259973) from the gcc-7-branch. + - Fix PR middle-end/84955, PR libstdc++/pr66689, PR libstdc++/68397, + PR libstdc++/84769, PR libstdc++/85632, PR fortran/81773, + PR fortran/83606. + * Update the Linaro support to the 7-2018.04 snapshot. + * 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 Sun, 06 May 2018 13:25:30 +0200 + +gcc-7 (7.3.0-17ubuntu1) cosmic; urgency=medium + + * Update to SVN 20180502 (r259836) from the gcc-7-branch. + - Fix PR middle-end/84955, PR libstdc++/pr66689, PR libstdc++/68397, + PR fortran/81773, PR fortran/83606. + * Update the Linaro support to the 7-2018.04 snapshot. + + -- Matthias Klose Wed, 02 May 2018 15:31:26 +0200 + +gcc-7 (7.3.0-17) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20180427 (r259697) from the gcc-7-branch. + - Fix PR libstdc++/85222, PR libstdc++/85442, PR target/85261 (ARM), + PR sanitizer/85389, PR c/84873, PR tree-optimization/85284, + PR middle-end/85244, PR tree-optimization/85168, PR lto/85405, + PR lto/85405, PR sanitizer/85081, PR ipa/84963, PR ipa/84658, + PR target/83660 (PPC), PR middle-end/85496, PR target/83969 (PPC). + * Update the gcc-foffload-default patch. LP: #1721355. + * Use the binutils in the build chroot if present. + * Don't use dwz for GCC backports. + + [ Aurelien Jarno ] + * Enable logwatch on riscv64. + + -- Matthias Klose Sat, 28 Apr 2018 15:20:26 +0200 + +gcc-7 (7.3.0-16ubuntu3) bionic; urgency=medium + + * Update to SVN 20180415 (r259389) from the gcc-7-branch. + - Fix PR libstdc++/85222. + * Remove our own PR libstdc++/85222 backport. + + -- Matthias Klose Sun, 15 Apr 2018 06:52:13 +0200 + +gcc-7 (7.3.0-16ubuntu2) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + * Update the gcc-foffload-default patch. LP: #1721355. + + -- Matthias Klose Thu, 12 Apr 2018 00:45:22 +0200 + +gcc-7 (7.3.0-16) unstable; urgency=medium + + * Update to SVN 20180411 (r259316) from the gcc-7-branch. + - Fix PR target/85203 (ARM), PR target/84748 (AArch64), PR c++/85279, + PR target/85196 (SPARC). + * Use triplet-prefixed as and ld (Helmut Grohne). Addresses: #895251. + * Link libasan, liblsan, libubsan always with --no-as-needed. LP: #1762683. + * Backport r251558 from the trunk, addresses Linaro #3718. LP: #1759369. + * Fix PR libstdc++/85222, taken from the trunk. + * Use --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed for linking libgcc. + + -- Matthias Klose Wed, 11 Apr 2018 19:10:46 +0200 + +gcc-7 (7.3.0-15ubuntu2) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 06 Apr 2018 13:00:39 +0200 + +gcc-7 (7.3.0-15) unstable; urgency=medium + + * Update to SVN 20180405 (r259156) from the gcc-7-branch. + - Fix PR target/85100 (x86), PR target/85193 (x86), + PR rtl-optimization/84878, PR target/85056 (nvptx), + PR target/84912 (PPC), PR target/80546 (PPC), PR c++/82152, + PR c++/84665, PR c++/85006, PR c++/85118, PR c++/85148, + PR c++/85113, PR c++/64095, PR c++/85060. + * Don't install i586 symlinks anymore for i386 builds in sid. + * Fix zlib-dev dependencies for the libphobos cross multilib packages. + * Fix dependency generation for libatomic and libquadmath cross packages. + + -- Matthias Klose Thu, 05 Apr 2018 23:34:09 +0200 + +gcc-7 (7.3.0-14ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 01 Apr 2018 20:57:18 +0200 + +gcc-7 (7.3.0-14) unstable; urgency=medium + + * Update to SVN 20180401 (r258998) from the gcc-7-branch. + - Fix PR c++/84783, PR target/84826 (ARM32), PR target/81647 (AArch64), + PR target/85026 (ARM32), PR target/82411 (PPC), PR fortran/85084, + PR fortran/85001. + * Build a native compiler with a cross directory layout using the + FORCE_CROSS_LAYOUT environment variable. + + -- Matthias Klose Sun, 01 Apr 2018 20:53:29 +0200 + +gcc-7 (7.3.0-13ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 28 Mar 2018 00:34:39 +0800 + +gcc-7 (7.3.0-13) unstable; urgency=medium + + * Update to SVN 20180327 (r258888) from the gcc-7-branch. + - Fix PR libstdc++/77691, PR target/82518 (ARM32), PR target/83789 (PPC), + PR tree-optimization/84956, PR target/84574 (x86), PR c++/78489, + PR c++/84489, PR c++/71834, PR c++/84937, PR c++/80227, PR c++/84839, + PR c++/84798, PR c++/84355, PR c++/82336, PR c++/84854, PR c++/84927, + PR c++/71638, PR fortran/85001, PR fortran/84931, PR fortran/77414, + PR fortran/65453, PR target/82989 (ARM32). + * Fix PR sanitizer/84761, taken from the trunk. Addresses: #892096. + * Fix control file generation for nolang=biarch builds (Helmut Grohne). + Addresses: #891289. + * Simplify architecture to gnu-type mapping (Helmut Grohne). + Addresses: #893493. + * Fix PR target/85026 (ARM32), taken from the trunk. + + -- Matthias Klose Wed, 28 Mar 2018 00:15:04 +0800 + +gcc-7 (7.3.0-12ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 18 Mar 2018 22:15:33 +0800 + +gcc-7 (7.3.0-12) unstable; urgency=medium + + * Update to SVN 20180318 (r258626) from the gcc-7-branch. + - Fix PR libstdc++/84769, PR libstdc++/84773, PR libstdc++/83662, + PR tree-optimization/84485, PR ada/82813, PR fortran/83939, + PR target/83451 (PA), PR fortran/78741. + + [ John David Anglin ] + * Switch hppa-linux to caller-copies ABI (as done in GCC 8). Closes: #892848. + + [ Aurelien Jarno ] + * Default to PIE on riscv64. + * Temporarily do not build-depend on gdb on riscv64. + + [ Matthias Klose ] + * Update the Linaro support to the 7-2018.01 snapshot. + + -- Matthias Klose Sun, 18 Mar 2018 22:11:44 +0800 + +gcc-7 (7.3.0-11ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 12 Mar 2018 07:59:22 +0100 + +gcc-7 (7.3.0-11) unstable; urgency=medium + + * Update to SVN 20180312 (r258443) from the gcc-7-branch. + - Fix PR target/83984 (PA), PR c++/84785, PR fortran/84734. + + [ Svante Signell ] + * Update go patches for hurd-i386. + + [ Matthias Klose ] + * Fix typo in lib32asan symbols file for s390x. + + [ Aurelien Jarno ] + * Fix PR target/84475, taken from the trunk. + * Disable gnat and go on riscv64. + * Backport RISC-V libffi support from upstream. + + -- Matthias Klose Mon, 12 Mar 2018 07:51:27 +0100 + +gcc-7 (7.3.0-10) unstable; urgency=medium + + * Fix typo in libasan symbols file for s390x. + + -- Matthias Klose Sat, 10 Mar 2018 17:37:35 +0700 + +gcc-7 (7.3.0-9ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 10 Mar 2018 10:43:42 +0700 + +gcc-7 (7.3.0-9) unstable; urgency=medium + + * Update to SVN 20180310 (r258405) from the gcc-7-branch. + * Update libasan symbols files for s390x. + + -- Matthias Klose Sat, 10 Mar 2018 10:31:12 +0700 + +gcc-7 (7.3.0-8ubuntu3) bionic; urgency=medium + + * Update libasan symbols files for s390x. + + -- Matthias Klose Fri, 09 Mar 2018 15:47:38 +0700 + +gcc-7 (7.3.0-8ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 09 Mar 2018 13:17:18 +0700 + +gcc-7 (7.3.0-8) unstable; urgency=medium + + * Update to SVN 20180309 (r258378) from the gcc-7-branch. + - Fix PR fortran/64124, PR fortran/70409. + * Build libasan and libubsan packages on s390x. + + -- Matthias Klose Fri, 09 Mar 2018 13:06:52 +0700 + +gcc-7 (7.3.0-6ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 08 Mar 2018 10:29:50 +0700 + +gcc-7 (7.3.0-6) unstable; urgency=medium + + * Update to SVN 20180308 (r258348) from the gcc-7-branch. + - Fix PR fortran/84418, PR libgomp/84096, PR libstdc++/84671, + PR libstdc++/84532, PR target/84209 (AVR), PR c/84310, PR target/79747, + PR other/80589, PR gcov-profile/84137, PR gcov-profile/83879, + PR rtl-optimization/82675, PR c/84229, PR ipa/81360, PR target/81572, + PR tree-optimization/84486, PR middle-end/84607, PR target/84524 (x86), + PR ipa/84628, PR inline-asm/84625, PR bootstrap/82916, PR c++/84444, + PR ipa/84425, PR c/82210, PR sanitizer/83987, PR rtl-optimization/84308, + PR sanitizer/84285, PR c++/83659, PR tree-optimization/81661, + PR tree-optimization/84117, PR rtl-optimization/83986, PR target/83930, + PR middle-end/84040, PR middle-end/83977, PR middle-end/83945, + PR preprocessor/83722, PR tree-optimization/83605, PR target/84039 (x86), + PR target/84530 (x86), PR target/83790 (nvptx), PR preprocessor/69869, + PR rtl-optimization/83496, PR c++/84684, PR c++/84686, PR c++/84558, + PR c++/84557, PR c++/84445, PR c++/84449, PR c++/84448, PR c++/84430, + PR c++/84192, PR c++/84341, PR c++/83659, PR c++/84082, PR c++/83993, + PR c++/84031, PR c++/83958, PR c++/83824, PR c++/83817, PR c++/84489, + PR c++/71569, PR c++/71569, PR c++/71784, PR c++/84496, PR c++/84441, + PR c++/84520, PR c++/81589, PR c++/84015, PR fortran/56667, + PR fortran/83076, PR fortran/71085, PR fortran/51434, PR fortran/80965, + PR fortran/78990, PR fortran/84418, PR fortran/84116, PR fortran/83633, + PR fortran/78238, PR fortran/30792, PR fortran/84511, PR fortran/84346, + PR fortran/84506, PR fortran/81116, PR fortran/84495, PR lto/81440, + PR ipa/81360, PR lto/81004, PR lto/83954, PR lto/83954, + target/81228 (AArch64, closes: #882417). + + [ 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 ] + * Fix cross-building libgnat on armel, when not building the common libraries. + + [ Dann Frazier ] + * Fix PR target/81356 (AArch64): Avoid memory access w/ __builtin_strcpy of + empty string, taken from the trunk. LP: #1742289. + - aarch64-simd: Avoid emitting dup insn by using canonical form for fnma. + - aarch64/thunderx2: Add pipeline/scheduling info for missing insn types. + + -- Matthias Klose Thu, 08 Mar 2018 17:02:46 +0700 + +gcc-7 (7.3.0-5ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 20 Feb 2018 13:42:54 +0700 + +gcc-7 (7.3.0-5) unstable; urgency=medium + + * Update to SVN 20180220 (r257837) from the gcc-7-branch. + - Fix PR libstdc++/81797, PR fortran/82007, PR libgfortran/84412. + * Fix cross-building libcilkrts, when not building the common libraries. + + -- Matthias Klose Tue, 20 Feb 2018 13:27:46 +0700 + +gcc-7 (7.3.0-4ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 18 Feb 2018 15:54:15 +0700 + +gcc-7 (7.3.0-4) unstable; urgency=medium + + * Update to SVN 20180218 (r257787) from the gcc-7-branch. + - S/390: Disable branch prediction for indirect branches. + - Fix PR tree-optimization/84233 (closes: #889724), + PR target/PR84295 (s390), PR target/84113 (PPC), PR target/84154 (PPC), + PR target/83758 (PPC), PR target/84279 (PPC), PR c++/83990, + PR target/84089 (PA), PR fortran/68560, PR fortran/35299, + PR fortran/54223, PR fortran/84276, PR target/79242 (MSP430). + PR target/82096 (ARM), PR tree-optimization/84190, PR c++/84151, + PR c++/81853, PR c++/84420, PR c++/83835, PR c++/82664, PR c++/82764, + PR c++/83227, PR c++/84045, PR fortran/84270. + * Fix PR c++/83204, taken from the trunk. Closes: #882855. + * Refresh patches. + * Configure with --disable-libquadmath-support when not explicitly enabled. + + -- Matthias Klose Sun, 18 Feb 2018 15:19:16 +0700 + +gcc-7 (7.3.0-3ubuntu1) bionic; urgency=medium + + * Update to SVN 20180209 (r257526) from the gcc-7-branch. + - S/390: Disable branch prediction for indirect branches. + - Fix PR tree-optimization/84233 (closes: #889724), + PR target/PR84295 (s390), PR target/84113 (PPC). + * Fix PR c++/83204, taken from the trunk. Closes: #882855. + + -- Matthias Klose Fri, 09 Feb 2018 15:59:15 +0100 + +gcc-7 (7.3.0-3) unstable; urgency=medium + + * Update to SVN 20180208 (r257477) from the gcc-7-branch. + - Fix PR fortran/82994, PR fortran/82049. + * Stop building more packages now built by gcc-8. + + -- Matthias Klose Thu, 08 Feb 2018 09:10:11 +0100 + +gcc-7 (7.3.0-2) unstable; urgency=medium + + * Update to SVN 20180207 (r257455) from the gcc-7-branch. + - Fix PR libstdc++/81076, PR libstdc++/83830, PR rtl-optimization/83985, + PR target/83862 (PPC), PR target/83399 (PPC), PR c++/82878, PR c++/78495, + PR libstdc++/83833, PR libstdc++/83658, PR libstdc++/83833, PR c++/82461, + PR bootstrap/80867, PR rtl-optimization/84071, PR target/68467 (m68k), + PR target/81763 (x86), PR target/84033 (PPC), PR target/83905 (x86), + PR target/56010 (PPC), PR target/83743 (PPC), PR rtl-optimization/84123, + PR target/83370 (AArch64), PR tree-optimization/82795. + * Stop building packages now built by gcc-8. + * Include arm_cmse.h header for ARM32 architectures. + * Store basename only in gfortran .mod files. Closes: #889133. + + -- Matthias Klose Wed, 07 Feb 2018 19:26:12 +0100 + +gcc-7 (7.3.0-1ubuntu1) bionic; urgency=medium + + * GCC 7.3.0 release. + + -- Matthias Klose Thu, 25 Jan 2018 12:34:11 +0100 + +gcc-7 (7.3.0-1) unstable; urgency=medium + + * GCC 7.3.0 release. + * Ignore bootstrap comparison failures in gcc/d on alpha. Addresses: #888394. + + -- Matthias Klose Thu, 25 Jan 2018 12:07:10 +0100 + +gcc-7 (7.2.0-20ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 23 Jan 2018 22:44:26 +0100 + +gcc-7 (7.2.0-20) unstable; urgency=medium + + * GCC 7.3 release candidate 2. + * Update to SVN 20180122 (r256970) from the gcc-7-branch. + - Fix PR libstdc++/83834, PR libstdc++/83626, PR target/83946 (PPC), + PR target/80870 (SH), PR tree-optimization/81877, PR middle-end/81782, + PR target/83687 (ARM), PR ipa/82352, PR ipa/83549, + PR tree-optimization/83552, PR rtl-optimization/83424, + PR target/83839 (x86), PR target/81481 (closes: #887327), + PR target/83629 (PPC), PR target/83330 (x86), PR target/83677 (PPC), + PR target/83628 (alpha), PR target/83628 (alpha), PR target/81819 (RX), + PR rtl-optimization/83565 (closes: #887066), + PR bootstrap/81926, PR target/81821 (RX), PR middle-end/83713, + PR target/82975 (ARM), PR target/83628 (alpha), PR c++/81843, + PR c++/72801, PR c++/82331, PR c++/82760, PR fortran/83900, + PR fortran/83900, PR fortran/80768, PR fortran/83864, PR fortran/78814, + PR fortran/82367, PR fortran/83093, PR libgfortran/83811. + * Install the msa.h header for mips targets (YunQiang Su). Closes: #887066. + * Fix mipsen r6 biarch configs (YunQiang Su). Closes: #886977. + + -- Matthias Klose Tue, 23 Jan 2018 13:20:11 +0100 + +gcc-7 (7.2.0-19ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 07 Jan 2018 10:09:10 +0100 + +gcc-7 (7.2.0-19) unstable; urgency=medium + + * Update to SVN 20180107 (r256317) from the gcc-7-branch. + - Fix PR libstdc++/82522, PR debug/83550, PR middle-end/83608, + PR middle-end/83609, PR middle-end/83623, PR c++/83553, PR lto/82027, + PR c/83448, PR rtl-optimization/80747, PR rtl-optimization/83512, + PR tree-optimization/83523, PR tree-optimization/83521, PR ipa/82801, + PR ipa/83346, PR target/83467 (x86), PR tree-optimization/82726, + PR tree-optimization/70754, PR target/83387 (PPC), PR c++/83556, + PR c++/83116, PR Fortran/83679, PR fortran/83650, PR Fortran/83548, + PR libgfortran/83649, PR libgfortran/83613, PR libgfortran/81937, + PR libgfortran/78549, PR libstdc++/83600, PR libstdc++/83598, + PR libstdc++/83279, PR libstdc++/83626, PR libstdc++/83626, + PR preprocessor/83492. + * debian/rules2: Fix typo for N32 conditions (YunQiang Su). Closes: #886316. + * More libffi mips r6 updates (YunQiang Su). Addresses: #886201. + * libgo: Backport upstream sparc64 fix (James Clark). Closes: #884642. + * Default to PIE on the hurd (Samuel Thibault). Closes: #885056. + * Use internal libunwind for ia64 cross-builds. Closes: #885931. + * Strip -z,defs from linker options for internal libunwind (James Clarke). + Closes: #885937. + * Fix rtlibs stage build with debhelper 10.9.1 (Helmut Grohne). + Closes: #879054. + + -- Matthias Klose Sun, 07 Jan 2018 08:55:48 +0100 + +gcc-7 (7.2.0-18ubuntu2) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 16 Dec 2017 10:04:11 +0100 + +gcc-7 (7.2.0-18) unstable; urgency=medium + + * Update to SVN 20171216 (r255739) from the gcc-7-branch. + - Fix PR target/80101 (PPC), PR libstdc++/83427, PR libstdc++/59568, + PR libstdc++/83395, PR c++/83059, PR c/81875, PR tree-optimization/83269, + PR tree-optimization/83198, PR tree-optimization/80631, + PR target/81906 (x86), PR c++/81212, PR target/78643 (x86), + PR target/80583 (x86), PR target/80819 (x86), PR rtl-optimization/81553, + PR sanitizer/83014, PR middle-end/82253, PR debug/83084, + PR target/82880 (mips), PR bootstrap/83439, PR target/66488 (MingW), + PR tree-optimization/82060, PR tree-optimization/82102, + PR middle-end/82128, PR tree-optimization/82402, + PR tree-optimization/82697, PR middle-end/82765, + PR tree-optimization/82902, PR target/80210 (PPC), PR target/81959 (PPC), + PR c++/83205, PR c++/81197, PR c++/83217, PR c++/79650, PR c++/80259, + PR c++/81888, PR c++/81675, PR c++/82781, PR fortran/81304, + PR fortran/81841. + * Move the .gox files into the gccgo packages. Closes: #883136. + * Re-enable gccgo on m68k. Closes: #883794. + * 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 Sat, 16 Dec 2017 09:49:29 +0100 + +gcc-7 (7.2.0-17ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 05 Dec 2017 14:58:41 +0100 + +gcc-7 (7.2.0-17) unstable; urgency=medium + + * Update to SVN 20171205 (r255408) from the gcc-7-branch. + - Fix PR rtl-optimization/82621, PR target/83111 (SH), + PR rtl-optimization/82044, PR tree-optimization/82042, + PR gcov-profile/82457, PR sanitizer/82792, PR gcov-profile/82633, + PR driver/81829, PR sanitizer/82545, PR target/77687 (PPC), + PR fortran/79072, PR fortran/78686, PR libgfortran/78549, + PR fortran/83021 (closes: #881918), PR libstdc++/82522, + PR libstdc++/83134, PR libstdc++/82685, PR libstdc++/83226, + PR target/82941 (x86), PR target/82942 (x86), PR target/82990 (x86), + PR 81288/target (PPC), PR target/82717 (RISC-V), PR ipa/82808, + PR libgfortran/83168, PR libgfortran/83191, PR libgfortran/83225. + + [ Matthias Klose ] + * Update sanitizer and libcc1 symbols. + * Remove libgphobos symbols files. + * libcc1: Fix setting the compiler name, taken from the trunk. + * Don't revert the fix for PR target/55947, fixed for GCC 7. + * Build cilkrts libs when not building common libs (removed in GCC 8). + * Update the Linaro support to the 7-2017.11 snapshot (no changes). + * Apply proposed patch for PR target/70216, __builtin_trap() on SH. + Closes: #883433. + + [ Aurelien Jarno / Svante Signell ] + * Do not enable go on GNU/kFreeBSD, it has been wrongly enabled in + 7.2.0-15. Closes: #881656. + + -- Matthias Klose Tue, 05 Dec 2017 12:28:35 +0100 + +gcc-7 (7.2.0-16ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 15 Nov 2017 21:44:36 +0100 + +gcc-7 (7.2.0-16) unstable; urgency=medium + + * Apply the libgo patches for the Hurd conditionally. + + -- Matthias Klose Wed, 15 Nov 2017 21:36:47 +0100 + +gcc-7 (7.2.0-15) unstable; urgency=medium + + * Update to SVN 20171115 (r254781) from the gcc-7-branch. + - Fix PR fortran/82934, PR fortran/78619, PR fortran/82869, + PR tree-optimization/82985, PR tree-optimization/81790, + PR debug/82155. + * Fix libgo build on ia64 (Jason Duerstock). Closes: #881372. + * Port libgo to the Hurd (Svante Signell). + * Compress debug symbols for compiler binaries with dwz. + * Fix PR other/82880, gcc --help=target hangs on mips (James Cowgill). + Closes: #880962. + * Add support for a plethora of mips r6 packages (YunQiang Su). + Closes: #881729. + * gcc-7-base: Add breaks to gnat (<< 7). Closes: #881775. + + -- Matthias Klose Wed, 15 Nov 2017 20:02:41 +0100 + +gcc-7 (7.2.0-14) unstable; urgency=medium + + * Remove the gcc-mips64-stack-spilling patch, applied upstream. + * Remove the build dependency on autogen. + + -- Matthias Klose Thu, 09 Nov 2017 13:04:27 +0100 + +gcc-7 (7.2.0-13ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 09 Nov 2017 12:21:54 +0100 + +gcc-7 (7.2.0-13) unstable; urgency=medium + + * Update to SVN 20171109 (r254567) from the gcc-7-branch. + - Fix PR c++/82159, PR sanitizer/81715, PR rtl-optimization/82192, + PR c/82234, PR target/82703 (x86), PR c++/82085, PR c++/82373, + PR fortran/81758, PR libgfortran/81938, PR c++/81702, PR target/82772, + PR fortran/80554, PR fortran/80850, PR libgcc/82635, + PR rtl-optimization/64682, PR rtl-optimization/69567, + PR rtl-optimization/69737, PR rtl-optimization/82683, + PR rtl-optimization/81803, PR middle-end/60580, PR fortran/78641, + PR fortran/69739, PR fortran/82796, PR fortran/81735. + - Fix subminor version number. Closes: #879823. + * Bump libunwind (build-)dependency for ia64. Closes: #879959. + * libgcc and libstdc++ symbols files updates for mipsn32. + + -- Matthias Klose Thu, 09 Nov 2017 11:56:16 +0100 + +gcc-7 (7.2.0-12ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 25 Oct 2017 12:34:22 +0200 + +gcc-7 (7.2.0-12) unstable; urgency=medium + + * Update to SVN 20171025 (r254073) from the gcc-7-branch. + - Fix PR sanitizer/82595, PR libstdc++/81395, PR libstdc++/82481, + PR libstdc++/79433, PR tree-optimization/82603, PR target/82445 (ARM), + PR tree-optimization/82436, PR rtl-optimization/82602, + PR middle-end/82556, PR tree-optimization/82549, PR c++/82560, + PR fortran/82312, PR fortran/79795, PR libfortran/82233. + * Install the gcov.h header file. + * Do the extra/optional dance ... + * Override hardening-no-pie flags for compiler executables. + + -- Matthias Klose Wed, 25 Oct 2017 12:10:43 +0200 + +gcc-7 (7.2.0-11) unstable; urgency=medium + + * Update to SVN 20171017 (r253807) from the gcc-7-branch. + - Fix PR fortran/52832, PR fortran/80120, PR fortran/81903, + PR fortran/82121, PR fortran/67543, PR fortran/78152, PR fortran/81048. + - Fix libgo bootstrap on s390x and alpha, introduced by the mips backport. + * Mask __float128 from CUDA compilers. LP: #1717257. + * Update the Linaro support to the 7-2017.10 snapshot. + + -- Matthias Klose Tue, 17 Oct 2017 14:42:35 +0200 + +gcc-7 (7.2.0-10) unstable; urgency=medium + + * Update to SVN 20171014 (r253748) from the gcc-7-branch. + - Fix PR go/80914, PR target/82274 (x86), PR target/82524 (x86). + * Set QUILT_PATCH_OPTS='-E' for applying patches (James Cowgill). + + -- Matthias Klose Sat, 14 Oct 2017 07:12:28 +0200 + +gcc-7 (7.2.0-9) unstable; urgency=medium + + * Update to SVN 20171010 (r253580) from the gcc-7-branch. + - Fix PR fortran/80118, PR tree-optimization/82337, PR sanitizer/82379, + PR target/71727 (AArch64), PR c++/82406, PR c++/70029, PR c++/82299, + PR c++/82406, PR c++/70029, PR c++/81525, PR ada/82393. + - libgo: use golang arch names as the default GOARCHs on MIPS. + Closes: #876639. + * Fix builds without hppa64 cross compiler and new debhelper. Closes: #877589. + * Fix build dependency on realpath. Closes: #877821. + + -- Matthias Klose Tue, 10 Oct 2017 12:35:39 +0200 + +gcc-7 (7.2.0-8ubuntu2) artful; urgency=medium + + * Dont't apply the PR 67165 backport on armhf. + + -- Matthias Klose Wed, 04 Oct 2017 05:55:11 +0200 + +gcc-7 (7.2.0-8ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 01 Oct 2017 23:51:25 +0200 + +gcc-7 (7.2.0-8) unstable; urgency=medium + + * Update to SVN 20171001 (r253234) from the gcc-7-branch. + - Fix PR tree-optimization/82244, PR tree-optimization/82276, + PR tree-optimization/82264, PR tree-optimization/82285, PR c/82340, + PR tree-optimization/82291, PR c++/82159. + * Fix "privacy breeches" for NEWS.html file. + * Build lsan and tsan packages on arm64, ppc64 and ppc64el. + * Fix PR other/67165, libbacktrace support for compressed debug sections, + taken from the trunk. + + -- Matthias Klose Sun, 01 Oct 2017 23:35:36 +0200 + +gcc-7 (7.2.0-7ubuntu4) artful; urgency=medium + + * Fix lsan/tsan symbols files for arm64 and ppc64el. + + -- Matthias Klose Thu, 28 Sep 2017 02:56:39 +0200 + +gcc-7 (7.2.0-7ubuntu3) artful; urgency=medium + + * Update to SVN 20170927 (r253234) from the gcc-7-branch. + - Fix PR tree-optimization/82244, PR tree-optimization/82276, + PR tree-optimization/82264, PR tree-optimization/82285, + PR tree-optimization/82291. + * Fix "privacy breeches" for NEWS.html file. + * Build lsan and tsan packages on arm64, ppc64 and ppc64el. + + -- Matthias Klose Wed, 27 Sep 2017 18:16:17 +0200 + +gcc-7 (7.2.0-7ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 23 Sep 2017 11:42:38 +0200 + +gcc-7 (7.2.0-7) unstable; urgency=medium + + * Update to SVN 20170923 (r253114) from the gcc-7-branch. + - Fix PR libstdc++/79162, PR libstdc++/79162, PR libstdc++/82262, + PR libstdc++/82254, PR target/81996 (PPC), PR target/71951 (AArch64), + PR sanitizer/81929. + * Fix PR go/82284, taken from the trunk. Closes: #876353. + + -- Matthias Klose Sat, 23 Sep 2017 11:31:21 +0200 + +gcc-7 (7.2.0-6ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 20 Sep 2017 11:21:01 +0200 + +gcc-7 (7.2.0-6) unstable; urgency=medium + + * Update to SVN 20170920 (r253002) from the gcc-7-branch. + - Fix PR target/82112 (PPC), PR c++/81355, PR tree-optimization/82084, + PR tree-optimization/82108, PR target/81325 (PPC), PR c++/81236, + PR c++/80767, PR c++/82030, PR c++/80935, PR c++/81671, PR c++/81525, + PR c++/81314, PR libgfortran/78387. + * Fix fortran cross compiler build with debhelper 10.9. Closes: #876246. + * Strip the compiler binaries again. Closes: #872672. + * Bump binutils dependency to 2.29.1 for sid/buster. + + -- Matthias Klose Wed, 20 Sep 2017 11:13:31 +0200 + +gcc-7 (7.2.0-5ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 15 Sep 2017 12:19:48 +0200 + +gcc-7 (7.2.0-5) unstable; urgency=medium + + * Update to SVN 20170915 (r252791) from the gcc-7-branch. + - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), + PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, + PR sanitizer/81923, PR target/81621, PR driver/81650, + PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926, + PR libstdc++/79162, PR libstdc++/81468, PR libstdc++/81835, + PR libstdc++/70483, PR libstdc++/70483, PR target/81833 (PPC), + PR other/39851, PR ipa/81128, PR inline-asm/82001, PR c++/81355, + PR tree-opt/81696. + * Enable libgo tests and rebuilds with make -C (Svante Signell). + Closes: #873929. + * Fix PR sanitizer/77631, support separate debug info in libbacktrace. + * Update the Linaro support to the 7-2017.09 snapshot. + + -- Matthias Klose Fri, 15 Sep 2017 12:15:21 +0200 + +gcc-7 (7.2.0-4ubuntu2) artful; urgency=medium + + * Update to SVN 20170912 (r251998) from the gcc-7-branch. + - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), + PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, + PR sanitizer/81923, PR target/81621, PR driver/81650, + PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926. + + -- Matthias Klose Tue, 12 Sep 2017 11:38:01 +0200 + +gcc-7 (7.2.0-5) unstable; urgency=medium + + * Update to SVN 20170915 (r252791) from the gcc-7-branch. + - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), + PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, + PR sanitizer/81923, PR target/81621, PR driver/81650, + PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926, + PR libstdc++/79162, PR libstdc++/81468, PR libstdc++/81835, + PR libstdc++/70483, PR libstdc++/70483, PR target/81833 (PPC), + PR other/39851, PR ipa/81128, PR inline-asm/82001, PR c++/81355, + PR tree-opt/81696. + * Enable libgo tests and rebuilds with make -C (Svante Signell). + Closes: #873929. + * Fix PR sanitizer/77631, support separate debug info in libbacktrace. + * Update the Linaro support to the 7-2017.09 snapshot. + + -- Matthias Klose Fri, 15 Sep 2017 12:15:21 +0200 + +gcc-7 (7.2.0-4ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 06 Sep 2017 11:07:43 +0200 + +gcc-7 (7.2.0-4) unstable; urgency=medium + + * Update to SVN 20170906 (r251753) from the gcc-7-branch. + - Fix PR c++/82039, PR libstdc++/81912, PR libstdc++/81891, + PR libstdc++/81599, PR libstdc++/81338, PR tree-optimization/81503, + PR ada/79542, PR ada/62235, PR fortran/81770. + * Fix PR target/81833 (PPC), taken from the trunk. Closes: #871565. + + -- Matthias Klose Wed, 06 Sep 2017 10:38:05 +0200 + +gcc-7 (7.2.0-3ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 02 Sep 2017 14:02:06 +0200 + +gcc-7 (7.2.0-3) unstable; urgency=high + + * Update to SVN 20170901 (r251583) from the gcc-7-branch. + - Fix PR target/81504 (PPC), PR c++/82040. + * Apply proposed patch for PR target/81803 (James Cowgill), conditionally + for mips* targets. Closes: #871514. + * Bump standards version. + + -- Matthias Klose Sat, 02 Sep 2017 13:55:18 +0200 + +gcc-7 (7.2.0-2ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 30 Aug 2017 12:23:25 +0200 + +gcc-7 (7.2.0-2) unstable; urgency=medium + + * Update to SVN 20170830 (r251446) from the gcc-7-branch. + - Fix PR target/72804 (PPC), PR target/80210 (PPC), PR target/81910 (AVR), + PR target/79883 (AVR), PR fortran/81296, PR fortran/80164, + PR target/81593 (PPC), PR target/81170 (PPC), PR target/81295 (PPC), + PR tree-optimization/81977, PR debug/81993 (closes: #873609), + PR middle-end/81088, PR middle-end/81065, PR sanitizer/80932, + PR middle-end/81884, PR tree-optimization/81181, + PR tree-optimization/81723, PR target/81921 (x86), PR c++/81607. + * Update the Linaro support to the 7-2017.08 snapshot. + * Restore configuring with --with-mode=thumb on armhf. Closes: #873584. + * Default to PIE on powerpc again, now that PR target/81170 and + PR target/81295 are fixed. Closes: #856224. + + -- Matthias Klose Wed, 30 Aug 2017 11:47:42 +0200 + +gcc-7 (7.2.0-1ubuntu2) artful; urgency=medium + + * Update to SVN 20170824 (r251336) from the gcc-7-branch. + - Fix PR target/72804 (PPC), PR target/80210 (PPC), PR target/81910 (AVR), + PR target/79883 (AVR), PR fortran/81296, PR fortran/80164. + * Update the Linaro support to the 7-2017.08 snapshot. + + -- Matthias Klose Thu, 24 Aug 2017 17:33:34 +0200 + +gcc-7 (7.2.0-1ubuntu1) artful; urgency=medium + + * Update to SVN 20170818 (r251184) from the gcc-7-branch. + + -- Matthias Klose Fri, 18 Aug 2017 18:54:43 +0200 + +gcc-7 (7.2.0-1) unstable; urgency=medium + + * GCC 7.2.0 release. + * Update libgcc1 symbols file for s390x. + * Apply proposed patch for PR driver/81829. Closes: #853537. + + -- Matthias Klose Fri, 18 Aug 2017 18:34:45 +0200 + +gcc-7 (7.1.0-13ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 08 Aug 2017 11:43:39 -0400 + +gcc-7 (7.1.0-13) unstable; urgency=medium + + * GCC 7.2 release candidate 2. + * Don't build the gc enabled libobjc for cross compilers. Closes: #870895. + * Configure cross-build-native builds with --program-prefix (Adrian + Glaubitz). Closes: #871034. + * Update build dependencies for powerpcspe. Closes: #868186. + * Fix PR tree-optimization/81723, taken from the trunk. Closes: #853345. + + -- Matthias Klose Tue, 08 Aug 2017 11:12:56 -0400 + +gcc-7 (7.1.0-12ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 03 Aug 2017 09:57:19 -0400 + +gcc-7 (7.1.0-12) unstable; urgency=medium + + * GCC 7.2 release candidate 1. + * Update to SVN 20170803 (r250853) from the gcc-7-branch. + + -- Matthias Klose Thu, 03 Aug 2017 09:20:48 -0400 + +gcc-7 (7.1.0-11ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 31 Jul 2017 23:34:35 +0200 + +gcc-7 (7.1.0-11) unstable; urgency=medium + + * Update to SVN 20170731 (r250749) from the gcc-7-branch. + + [ Matthias Klose ] + * Update sanitizer symbols for ppc64 and sparc64. + + [ Nicolas Boulenguez ] + * Only build gnatvsn as a native library. + + -- Matthias Klose Mon, 24 Jul 2017 13:41:34 +0200 + +gcc-7 (7.1.0-10ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 24 Jul 2017 10:55:47 +0200 + +gcc-7 (7.1.0-10) unstable; urgency=medium + + * Update to SVN 20170722 (r250453) from the gcc-7-branch. + + [ Nicolas Boulenguez ] + * libgnatvsn: embed xutil rident for version 2017 of asis package. + + [ Matthias Klose ] + * Fix gnat cross build on m68k (Adrian Glaubitz). Closes: #862927. + * Enable gnat cross build on m68k. Closes: #868365. + * Update the Linaro support to the 7-2017.07 snapshot. + * Stop ignoring symbol mismatches for runtime libraries. + + [ Aurelien Jarno ] + * libgo-s390x-default-isa.diff: do not build libgo with -march=z196, + use the default ISA instead. + + -- Matthias Klose Sat, 22 Jul 2017 15:06:36 +0200 + +gcc-7 (7.1.0-9ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 05 Jul 2017 19:28:21 +0200 + +gcc-7 (7.1.0-9) unstable; urgency=medium + + * Update to SVN 20170705 (r250006) from the gcc-7-branch. + + [ Matthias Klose ] + * gcc-linaro-revert-r49596.diff: fix build for the linaro branch. + * Don't configure powerpc with --enable-default-pie, fails to build. + See #856224, PR target/81295. + + [ Nicolas Boulenguez ] + * ada-gcc-name.diff: unpatch gnatchop. Addresses: #856274. + * Link libgnat with libatomic on armel. Closes: #861734. + * libgnat-dev: use multiarch paths in project and to install .ali files. + * Build Ada on armel, kfreebsd-*, hurd-i386; #86173[457] are closed. + + -- Matthias Klose Wed, 05 Jul 2017 19:21:55 +0200 + +gcc-7 (7.1.0-8ubuntu2) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 29 Jun 2017 17:42:16 +0200 + +gcc-7 (7.1.0-8) unstable; urgency=medium + + * Update to SVN 20170629 (r249793) from the gcc-7-branch. + + [ Matthias Klose ] + * Move the liblto_plugin from the cpp to the gcc package. + * libstdc++6: Add more Breaks to smoothen upgrades from jessie to stretch. + Addresses: #863845, #863745. + * Don't provide libobjc_gc symlinks for the libobjc multilib packages. + * Configure with --enable-default-pie on ppc64 (Adrian Glaubitz) and + powerpc (Mathieu Malaterre). Addresses: #856224. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs.py for gcc-7. + * Drop ada-driver-check.diff, the problem is unreproducible. + * Stop symlinking gcc-7-7 -> gcc-7. See #856274 and #814977. + * gnatmake: compile once even with SOURCE_DATE_EPOCH. Closes: #866029. + + -- Matthias Klose Thu, 29 Jun 2017 17:36:03 +0200 + +gcc-7 (7.1.0-7ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 20 Jun 2017 14:19:39 +0200 + +gcc-7 (7.1.0-7) unstable; urgency=medium + + * Update to SVN 20170618 (r249347) from the gcc-7-branch. + + [ Matthias Klose ] + * Update to SVN 20170524 (r248432) from the gcc-7-branch. + * Don't build libada with -O3 (ftbfs on ppc64el). + * Update sanitizer symbol files (Helmut Grohne). Closes: #864835. + + [ Aurelien Jarno ] + * Remove proposed patch for PR65618, the issue has been fixed upstream + another way. + + [ Nicolas Boulenguez ] + * Ada: link system.ads to system-freebsd.ads on hurd and *freebsd + system-freebsd-x86.ads does not exist anymore. Closes: #861735, #861737. + * Ada: prevent parallel gnatmake invokations for gnattools. Closes: #857831. + * Drop generated and obsolete debian/source.lintian-overrides. + * Drop debian/relink, never executed and redundant with ada patches. + * Ada: Drop dpkg-buildflags usage in patches. Closes: #863289. + * ada: Drop references to obsolete termio-h.diff. Closes: #845159. + * ada-749574.diff: replace work-around with fix and forward it. + * ada-kfreebsd.diff: reduce a lot thanks to Ada2012 syntax. + * ada-link-lib.diff: remove dubious parts. + + -- Matthias Klose Sun, 18 Jun 2017 15:31:39 +0200 + +gcc-7 (7.1.0-6ubuntu2) artful; urgency=medium + + * Update to SVN 20170524 (r248432) from the gcc-7-branch. + * Don't build libada with -O3 (ftbfs on ppc64el). + * Restore building gnattools sequentially. Reopens #857831. + + -- Matthias Klose Wed, 24 May 2017 15:18:49 -0700 + +gcc-7 (7.1.0-6ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 22 May 2017 16:38:40 -0700 + +gcc-7 (7.1.0-6) experimental; urgency=medium + + * Update to SVN 20170522 (r248347) from the gcc-7-branch. + - Fix PR libstdc++/80796, PR libstdc++/80478, PR libstdc++/80761, + PR target/80799 (x86), PR ada/80784, PR fortran/78659, PR fortran/80752, + PR libgfortran/80727. + + [ Matthias Klose ] + * Re-add unwind support on kfreebsd-amd64 (James Clarke). + * Work around #814977 (gnat calling gcc-7-7) by providing a gcc-7-7 + symlink. + * Fix gnat build dependencies on x32. + * Build gnat on mips64 and powerpcspe. + * Update the Linaro support to the 7-2017.05 snapshot. + * Fix libmpx dependency generation for cross builds. + * Build again gnat cross compilers on 32bit archs targeting 64bit targets. + + [ Nicolas Boulenguez ] + * Remove ada-gnattools-noparallel patch, apparently fixed. Closes: #857831. + * Reduce diff with upstream in ada-gnattools-cross patch. + * debian/rules2: Simplify build flags transmission. + * Append build flags from dpkg during Ada target builds. + + -- Matthias Klose Mon, 22 May 2017 12:43:09 -0700 + +gcc-7 (7.1.0-5ubuntu2) artful; urgency=medium + + * Update to SVN 20170519 (r248295) from the gcc-7-branch. + - Fix PR libstdc++/80796, PR libstdc++/80478, PR libstdc++/80761, + PR target/80799 (x86), PR ada/80784, PR fortran/78659, PR fortran/80752, + PR libgfortran/80727. + * Starting with 17.10, enable PIE on armhf, arm64 and i386. + * Build from the Linaro gcc-7 branch on armhf and arm64. + * Re-add unwind support on kfreebsd-amd64 (James Clarke). + * Work around #814977 (gnat calling gcc-7-7) by providing a gcc-7-7 + symlink. + * Fix gnat build dependencies on x32. + * Build gnat on mips64 and powerpcspe. + * Update the Linaro support to the 7-2017.05 snapshot. + + -- Matthias Klose Fri, 19 May 2017 12:07:42 -0700 + +gcc-7 (7.1.0-5ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 14 May 2017 09:15:57 -0700 + +gcc-7 (7.1.0-5) experimental; urgency=medium + + * Update to SVN 20170514 (r248033) from the gcc-7-branch. + * Disable offload compilers for snapshot builds. + * Build libgo when not building common libs. + * Fix building libgfortran and libgphobos when building without common libs. + * Build gnat on x32. + + -- Matthias Klose Sun, 14 May 2017 08:50:34 -0700 + +gcc-7 (7.1.0-4ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 05 May 2017 11:57:06 +0200 + +gcc-7 (7.1.0-4) experimental; urgency=medium + + * Update to SVN 20170505 (r247630) from the gcc-7-branch. + * Add sh3 support to gcc-multiarch patch. Closes: #861760. + * Remove libquadmath/gdtoa license from debian/copyright (files removed). + * Fix gdc build on sh4 (sh5 support was removed upstream). + * Disable gnat on KFreeBSD (see #861737) and the Hurd (see #861735) for now. + * Disable running the testsuite on KFreeBSD and the Hurd, hanging on + the buildds. + + -- Matthias Klose Fri, 05 May 2017 11:27:27 +0200 + +gcc-7 (7.1.0-3ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 04 May 2017 00:02:42 +0200 + +gcc-7 (7.1.0-3) experimental; urgency=medium + + * Update to SVN 20170503 (r247549) from the gcc-7-branch. + * Fix gdc build on sparc. + * Update the gdc-cross-install-location patch for GCC 7. + * Bump libgphobos soname. + * dpkg-buildflags stopped fiddling around with spec files; remove + the code removing and warning about dpkg's specs. + * Don't build the native gnat on armel. See issue #861734. + + -- Matthias Klose Wed, 03 May 2017 16:51:15 +0200 + +gcc-7 (7.1.0-2) experimental; urgency=medium + + * Update the disable-gdc-tests patch for GCC 7.1. + + -- Matthias Klose Tue, 02 May 2017 18:35:14 +0200 + +gcc-7 (7.1.0-1ubuntu2) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 02 May 2017 18:13:00 +0200 + +gcc-7 (7.1.0-1) experimental; urgency=medium + + * GCC 7.1.0 release. + * Update NEWS.html and NEWS.gcc. + * Update gdc to the gdc-7 branch 20170502. + * Add multiarch bits for non-glibc architectures (musl, uclibc) (Helmut + Grohne). Closes: #861588. + * Fix dependency on gcc-base package for rtlibs stage build (Helmut Grohne). + Closes: #859938. + + -- Matthias Klose Tue, 02 May 2017 18:07:07 +0200 + +gcc-7 (7-20170407-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170407. + + -- Matthias Klose Fri, 07 Apr 2017 13:40:05 +0200 + +gcc-7 (7-20170322-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170322. + + -- Matthias Klose Wed, 22 Mar 2017 09:08:47 +0100 + +gcc-7 (7-20170316-1ubuntu3) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170316. + + -- Matthias Klose Thu, 16 Mar 2017 22:18:58 +0100 + +gcc-7 (7-20170316-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170316. + * Install the gcov-dump utility. + * Allow to use lld with -fuse-ld=ld.lld. + * Build gnattools sequentially (fails with parallel build). See #857831. + * Add profile to the autogen build dependency. + * Re-add the generated Makefile.in changes to the gdc-libphobos-build patch. + + -- Matthias Klose Thu, 16 Mar 2017 12:34:18 +0100 + +gcc-7 (7-20170314-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170314. + + [ Matthias Klose ] + * Bump binutils version requirement to 2.28. + * Fix libcc1.so symlink for cross compilers. Addresses: #856875. + * Fix base package name for rtlibs stage build (Helmut Grohne). + Closes: #857074. + * Update the cross-install-location patch (Helmut Grohne). Closes: #855565. + * Fix symlinks to man pages in the hppa64 package. Addresses: #857583. + * Don't ship the gnatgcc manpage symlink when building GFDL packages. + Addresses: #857384. + * Allow bootstrapping with libc headers installed in multiarch location. + (Helmut Grohne). Closes: #857535 + * gccbrig: Depend on hsail-tools. + + [ Nicolas Boulenguez ] + * Create the libgnatsvn packages again. Closes: #857606. + * Replace libgnat-BV.overrides with a fixed command. + * Install gnatvsn.gpr project into /u/s/gpr instead of + /u/s/ada/adainclude. Debian is migrating to GPRbuild's upstream layout. + * Avoid hardcoding the version in the ada-gcc-name patch. + * Reorganize Ada patches. See #857606 for details. + + -- Matthias Klose Tue, 14 Mar 2017 10:42:24 +0100 + +gcc-7 (7-20170303-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170303. + + -- Matthias Klose Fri, 03 Mar 2017 10:27:49 +0100 + +gcc-7 (7-20170302-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170302. + + [ Matthias Klose ] + * Update gdc to trunk 20170227. + * Update libcc1 symbols file. + * Bump binutils version requirement. + * Allow to disable brig in DEB_BUILD_OPTIONS. Closes: #856452. + * Build the nvptx offload compilers. + * Add the newlib copyright, used for the gcc-7-offload-nvptx package. + * Install the libcp1plugin. + * Fix the installation directory of the ada-sjlj includes and libraries. + + [ Nicolas Boulenguez ] + * Use SOURCE_DATE_EPOCH for reproducible ALI timestamps. Closes: #856042. + * Remove obsolete references to libgnatprj, but keep existing + references to libgnatvsn as it will be restored. Closes: #844367. + * Drop obsolete and unapplied ada-default-project-path.diff. + + -- Matthias Klose Thu, 02 Mar 2017 10:12:34 +0100 + +gcc-7 (7-20170226-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + + -- Matthias Klose Sun, 26 Feb 2017 17:21:13 +0100 + +gcc-7 (7-20170226-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170226. + + -- Matthias Klose Sun, 26 Feb 2017 17:00:48 +0100 + +gcc-7 (7-20170221-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170221. + * Update gdc to trunk 20170221. + + [ Matthias Klose ] + * Fix some hppa64 related build issues. Addresses: #853023. + * Allow setting offload targets by OFFLOAD_TARGET_DEFAULT. + * Again, disable go on m68k. Closes: #853906. + * Configure with --enable-default-pie on sparc and sparc64 (James Clark). + Addresses: #854090. + * Configure with --enable-default-pie on kfreebsd-* (Steven Chamberlain). + * Build gccbrig and the libhsail-rt library for i386. + * Configure staged builds with --disable-libmpx and --disable-libhsail-rt. + * Fix target architecture for sparc non-multilib builds (Adrian Glaubitz). + Addresses: #855197. + * Bump binutils version requirement. + + [ Aurelien Jarno ] + * Disable lxc1/sxc1 instruction on mips and mipsel. + * Disable madd4 instructions on mipsel, mips64el and mipsn32el. + + -- Matthias Klose Tue, 21 Feb 2017 14:54:12 +0100 + +gcc-7 (7-20170129-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170129. + * Fix removing the RUNPATH from the asan, tsan, ubsan, cilkrts, gfortran + and gphobos runtime libraries. + * Let the gnatgcc symlinks point to the versioned names. Addresses: #839209. + * Build the BRIG frontend on amd64. + * Install new intrinsics headers. Closes: #852551. + * libgo version bumped to 11. + * Package gccbrig and the libhsail-rt library. + + -- Matthias Klose Sun, 29 Jan 2017 13:51:35 +0100 + +gcc-7 (7-20170121-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + + -- Matthias Klose Sat, 21 Jan 2017 21:03:01 +0100 + +gcc-7 (7-20170121-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + * Configure --with-gcc-major-version-only, drop the gcc-base-version, + gccgo-version and gdc-base-version patches. + * Adjust the g++-multiarch-incdir patch for reverted upstream patch, + causing bootstrap regression (PR 78880). Closes: #852104. + + -- Matthias Klose Sat, 21 Jan 2017 20:34:04 +0100 + +gcc-7 (7-20170118-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170118. + * Always configure sparc builds --with-cpu-32=ultrasparc (James Clark). + * Enable gccgo on m68k (John Paul Adrian Glaubitz). Addresses: #850749. + * Install the unprefixed man pages for gcc-ar, -nm and ranlib. + Closes: #851698. + + -- Matthias Klose Wed, 18 Jan 2017 22:41:11 +0100 + +gcc-7 (7-20170105-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170105. + + -- Matthias Klose Thu, 05 Jan 2017 14:41:15 +0100 + +gcc-7 (7-20170105-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170105. + * Update zlib to 1.2.10. + * Always configure sparc builds --with-cpu-32=ultrasparc (James Clark). + + -- Matthias Klose Thu, 05 Jan 2017 14:19:02 +0100 + +gcc-7 (7-20161229-1ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161229. + + -- Matthias Klose Thu, 29 Dec 2016 07:57:28 +0100 + +gcc-7 (7-20161229-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161229. + * Update gdc to trunk 20161229. + * Build the cilk runtime on armel, armhf, sparc and sparc64. + * Use --push-state/--pop-state for gold as well when linking libtsan. + * In GCC ICE dumps, prefix each line with the PID of the driver. + * Apply proposed patch for PR target/78748. + * Apply proposed patch for PR libstdc++/64735. + * Don't mark libphobos multilib packages as M-A: same. + * Configure libphobos builds with --with-target-system-zlib. + * Ignore dpkg's pie specs when pie is not enabled. Addresses: #848129. + + -- Matthias Klose Thu, 29 Dec 2016 07:38:54 +0100 + +gcc-7 (7-20161217-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161217. + + -- Matthias Klose Sat, 17 Dec 2016 14:09:52 +0100 + +gcc-7 (7-20161212-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161212. + * Apply proposed patch for PR target/78748. + + -- Matthias Klose Mon, 12 Dec 2016 17:08:48 +0100 + +gcc-7 (7-20161208-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161208. + - Revert r243346, breaking bootstrap on AArch64. + * Build the cilk runtime on armel, armhf, sparc and sparc64. + * Use --push-state/--pop-state for gold as well when linking libtsan. + * In GCC ICE dumps, prefix each line with the PID of the driver. + + -- Matthias Klose Thu, 08 Dec 2016 12:08:40 +0100 + +gcc-7 (7-20161203-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161203. + + -- Matthias Klose Sat, 03 Dec 2016 12:00:35 +0100 + +gcc-7 (7-20161201-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161201. + + * Install missing vecintrin.h header on s390x. + * Install missing avx512 intrinsics headers on x86*. Closes: #846075. + + -- Matthias Klose Thu, 01 Dec 2016 14:38:26 +0100 + +gcc-7 (7-20161125-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161125. + + [ Matthias Klose ] + + [ Svante Signell ] + * GNU/Hurd port for gccgo. + + -- Matthias Klose Fri, 25 Nov 2016 13:30:48 +0100 + +gcc-7 (7-20161125-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161125. + + [ Matthias Klose ] + * Update libgphobos symbol files. + * libphobos: Fix ARM32 multilib detection for system zlib. + * Update libgphobos symbols files for ARM32 targets. + * Build the GC enabled libobjc using the system libgc when available + * Mark libgphobos symbols changing with the file location (sic!) as optional. + * Add pkg-config to the build dependencies. + * Drop the work around for PR libstdc++/65913. + * gdc: Link with the shared libgphobos runtime by default. + * Fix PR middle-end/78501, proposed patch. + * Fix dependency generation for libgphobos multilib builds. + * Drop the ada-revert-pr63225 patch, only needed for libgnatvsn. + * Always apply the ada patches. + + [ YunQiang Su ] + * Update gnat patches for GCC 7, stop building libgnatvsn and libgnatprj. + Addresses: #844367. + + -- Matthias Klose Fri, 25 Nov 2016 12:41:07 +0100 + +gcc-7 (7-20161123-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161117. + * Disable x32 multilib builds (broken in libgo). + * Disable go on powerpc and s390x (broken in libgo). + + -- Matthias Klose Tue, 22 Nov 2016 16:51:14 +0100 + +gcc-7 (7-20161117-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161117. + + -- Matthias Klose Thu, 17 Nov 2016 14:18:21 +0100 + +gcc-7 (7-20161116-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161116. + * Build shared phobos runtime libraries (not yet enabled by default). + * Add symbols for libobjc_gc library. + + -- Matthias Klose Wed, 16 Nov 2016 19:16:39 +0100 + +gcc-7 (7-20161115-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161115. + + -- Matthias Klose Tue, 15 Nov 2016 15:23:57 +0100 + +gcc-7 (7-20161115-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161115. + * More symbol files updates. + * Update gdc to the trunk 20161113. + * Update conflicts with GCC 6 packages. Closes: #844296. + + -- Matthias Klose Tue, 15 Nov 2016 13:02:02 +0100 + +gcc-7 (7-20161112-1ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161112. + + -- Matthias Klose Sat, 12 Nov 2016 13:21:36 +0100 + +gcc-7 (7-20161112-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161112. + * Remove gij/gcj packages, removed upstream. + * Don't build gdc and gnat for now. + + -- Matthias Klose Sat, 12 Nov 2016 11:17:17 +0100 + +gcc-6 (6.2.0-13ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 09 Nov 2016 21:04:13 +0100 + +gcc-6 (6.2.0-13) unstable; urgency=medium + + * Update to SVN 20161109 (r241998, 6.2.1) from the gcc-6-branch. + - Fix PR c/71115, PR target/78229 (closes: #843379), + PR tree-optimization/77768, PR c++/78039 (closes: #841316), + PR libgcc/78064, PR driver/78206. + * Fix using the gcc-6-source package (Stephen Kitt). Closes: #843476. + * Fix PR target/77822 (AArch64), taken from the trunk. Closes: #839249. + * Fix PR target/77822 (s390x), proposed patch. + * Update libiberty to the trunk 20161108. Addresses security issues: + CVE-2016-6131, CVE-2016-4493, CVE-2016-4492, CVE-2016-4490, + CVE-2016-4489, CVE-2016-4488, CVE-2016-4487, CVE-2016-2226. + + -- Matthias Klose Wed, 09 Nov 2016 20:42:53 +0100 + +gcc-6 (6.2.0-11ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 03 Nov 2016 15:27:16 +0100 + +gcc-6 (6.2.0-11) unstable; urgency=medium + + * Update to SVN 20161103 (r241817, 6.2.1) from the gcc-6-branch. + - Fix PR debug/77773, PR middle-end/72747, PR tree-optimization/78047, + PR tree-optimization/77879, PR tree-optimization/77839, + PR tree-optimization/77745, PR tree-optimization/77648, + PR target/78166 (PA), PR rtl-optimization/78038, PR middle-end/78128, + PR middle-end/71002, PR fortran/69544, PR fortran/78178, + PR fortran/71902, PR fortran/67219, PR fortran/71891, PR lto/78129, + PR libgfortran/78123. + * Fix symlinks for gcj manual pages. Closes: #842407. + * Fix ICE in tree_to_shwi, Linaro issue #2575. + + -- Matthias Klose Thu, 03 Nov 2016 14:10:24 +0100 + +gcc-6 (6.2.0-10ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 27 Oct 2016 22:12:20 +0200 + +gcc-6 (6.2.0-10) unstable; urgency=medium + + * Update to SVN 20161027 (r241619, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77288, PR libstdc++/77727, PR libstdc++/78052, + PR tree-optimization/77550, PR tree-optimization/77916, + PR fortran/71895, PR fortran/77763, PR fortran/61420, PR fortran/78013, + PR fortran/78021, PR fortran/72832, PR fortran/78092, PR fortran/78108, + PR target/78057 (x86), PR target/78037 (x86). + * Include go-relocation-test-gcc620-sparc64.obj.uue to fix libgo's + debug/elf TestDWARFRelocations test case (James Clark). + * Reapply fix for PR c++/71912, apply proposed fix for PR c++/78039. + Closes: #841292. + * Don't install alternatives for go and gofmt. The preferred way to do that + is to install the golang-any package. + * For Debian builds, don't enable bind now by default when linking with pie + by default. + + -- Matthias Klose Thu, 27 Oct 2016 15:27:07 +0200 + +gcc-6 (6.2.0-9) unstable; urgency=medium + + * Regenerate the control file. + + -- Matthias Klose Thu, 20 Oct 2016 10:46:44 +0200 + +gcc-6 (6.2.0-8ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 19 Oct 2016 18:47:57 +0200 + +gcc-6 (6.2.0-8) unstable; urgency=medium + + * Update to SVN 20161019 (r241346, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77990, PR target/77991 (x86). + * Install arm_fp16.h header on arm* architectures for Linaro builds. + * Backport upstream revisions from trunk (James Clark). Closes: #840574. + - r240457 (add getrandom for MIPS/SPARC) + - r241051 (fix getrandom on sparc64 and clone on sparc*) + - r241072 (make rawClone no_split_stack) + - r241084 (don't use pt_regs; unnecessary, and seemingly not defined by + the included headers on arm64) + - r241171 (sparc64 relocations, e1fc2925 in go master, now also in + gofrontend/gccgo) + * Revert fix for PR c++/71912, causing PR c++/78039. Addresses: #841292. + + -- Matthias Klose Wed, 19 Oct 2016 08:57:23 +0200 + +gcc-6 (6.2.0-7ubuntu11) zesty; urgency=medium + + * Build using the Linaro branch on armhf and arm64. + + -- Matthias Klose Tue, 18 Oct 2016 09:09:47 +0200 + +gcc-6 (6.2.0-7) unstable; urgency=medium + + * Update to SVN 20161018 (r241301, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77987, PR libstdc++/77322, PR libstdc++/72820, + PR libstdc++/77994, PR tree-optimization/77937, PR c++/71912, + PR tree-optimization/77937, PR tree-optimization/77943, + PR bootstrap/77995, PR fortran/77978, PR fortran/77915, PR fortran/77942. + + [ Matthias Klose ] + * Backport Mips go closure support, taken from libffi. Closes: #839132. + * Configure with --enable-default-pie and pass -z now when pie is enabled; + on amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x. + Closes: #835148. + * Update the Linaro support to the 6-2016.10 snapshot. + + [ Aurelien Jarno ] + * Enable logwatch on mips64el. + + -- Matthias Klose Tue, 18 Oct 2016 13:53:00 +0200 + +gcc-6 (6.2.0-6) unstable; urgency=medium + + * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795, + PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86), + PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804, + PR fortran/41922, PR fortran/60774, PR fortran/61318, PR fortran/68566, + PR fortran/69514, PR fortran/69867, PR fortran/69962, PR fortran/70006, + PR fortran/71067, PR fortran/71730, PR fortran/71799, PR fortran/71859, + PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372, + PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429, + PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612, + PR fortran/77694, PR libgfortran/77707, PR libstdc++/70101, + PR libstdc++/77864, PR libstdc++/70564, PR target/77874 (x86), + PR target/77759 (sparc), PR fortran/77406, PR fortran/58991, + PR fortran/58992. + * Really fix gij installation on hppa. Closes: #838111. + * Install alternatives for go and gofmt. Closes: #840190. + + -- Matthias Klose Mon, 10 Oct 2016 05:20:07 +0200 + +gcc-6 (6.2.0-5ubuntu12) yakkety; urgency=medium + + * Update to SVN 20161005 (r240765, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795, + PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86), + PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804, + PR fortran/41922, PR fortran/60774, PR fortran/61318, PR fortran/68566, + PR fortran/69514, PR fortran/69867, PR fortran/69962, PR fortran/70006, + PR fortran/71067, PR fortran/71730, PR fortran/71799, PR fortran/71859, + PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372, + PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429, + PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612, + PR fortran/77694, PR libgfortran/77707. + * Really fix gij installation on hppa. Closes: #838111. + * Strip again the compiler binaries. + + -- Matthias Klose Wed, 05 Oct 2016 09:01:56 +0200 + +gcc-6 (6.2.0-5ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 28 Sep 2016 15:58:48 +0200 + +gcc-6 (6.2.0-5) unstable; urgency=medium + + * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch. + - Fix PR sanitizer/77396, PR libstdc++/77645, PR libstdc++/77645, + PR target/77326 (AVR), PR target/77349 (PPC), PR middle-end/77594, + PR sanitizer/68260, PR fortran/77516, PR target/69255 (x86), + PR c++/77553, PR c++/77539, PR fortran/77500, PR c/77450, + PR middle-end/77436, PR tree-optimization/77514, PR middle-end/77544, + PR tree-optimization/77514, PR middle-end/77605, PR middle-end/77679, + PR tree-optimization/77621, PR target/77621 (x86), PR c++/71979. + * Fix gij installation on hppa. Closes: #838111. + * Fix PR rtl-optimization/71709, taken from the trunk. LP: #1628207. + * Apply workaround for PR libstdc++/77686. Addresses: #838438. + + -- Matthias Klose Wed, 28 Sep 2016 15:53:28 +0200 + +gcc-6 (6.2.0-4) unstable; urgency=medium + + * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. + - Fix PR rtl-optimization/77452, PR c++/77427. + * gcj: Depend on the ecj1 standalone binary. + * Configure native builds using --with-program-prefix. + * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. + * Backport from libffi trunk (Stefan Bühler): + - Always check for PaX MPROTECT on linux, make EMUTRAMP experimental. + - dlmmap_locked always needs locking as it always modifies execsize. + + -- Matthias Klose Thu, 15 Sep 2016 19:22:35 +0200 + +gcc-6 (6.2.0-3ubuntu15) yakkety; urgency=medium + + * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. + - PR c++/77427. + * Fix updating gcj-6-jdk. LP: #1623337. + + -- Matthias Klose Wed, 14 Sep 2016 13:33:20 +0200 + +gcc-6 (6.2.0-3ubuntu14) yakkety; urgency=medium + + * Update to SVN 20160910 (r240069, 6.2.1) from the gcc-6-branch. + - Fix PR rtl-optimization/77452. + * gcj: Depend on the ecj1 standalone binary. + * Configure native builds using --with-program-prefix. + * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. + * Restore the AArch64 vulcan support for non Linaro builds. + + -- Matthias Klose Sun, 11 Sep 2016 12:50:59 +0200 + +gcc-6 (6.2.0-3ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 04 Sep 2016 13:28:31 +0200 + +gcc-6 (6.2.0-3) unstable; urgency=medium + + * Update to SVN 20160901 (r239944, 6.2.1) from the gcc-6-branch. + - Fix PR fortran/71014, PR libstdc++/77395, PR tree-optimization/72866, + PR debug/77363, PR middle-end/77377, PR middle-end/77259, + PR target/71910 (cygwin), PR target/77281 (ARM), + PR tree-optimization/71077, PR tree-optimization/68542, PR fortran/77352, + PR fortran/77374, PR fortran/71014, PR fortran/69281. + * Fix setting the stage1 C++ compiler. + * gdc: Always link with -ldl when linking with -lgphobos. + Closes: #835255, #835757. + * Fix building D code with external C++ references. + + -- Matthias Klose Sun, 04 Sep 2016 12:38:47 +0200 + +gcc-6 (6.2.0-2ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 31 Aug 2016 12:38:54 +0200 + +gcc-6 (6.2.0-2) unstable; urgency=medium + + * Update to SVN 20160830 (r239868, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77334, PR tree-optimization/76783, + PR tree-optimization/72851, PR target/72867 (x86), PR middle-end/71700, + PR target/77403 (x86), PR target/77270 (x86), PR target/77270 (x86), + PR lto/70955, PR target/72863 (PPC), PR tree-optimization/76490, + PR fortran/77358. + * Call default_file_start from s390_asm_file_start, taken from the trunk. + * Update multiarch patches for mips* r6 (YunQiang Su). + * Fix install location of D header files for cross builds (YunQiang Su). + Closes: #835847. + * Fix PR c++/77379, taken from the trunk. + * Update the Linaro support to the 6-2016.08 snapshot. + + -- Matthias Klose Wed, 31 Aug 2016 12:28:38 +0200 + +gcc-6 (6.2.0-1ubuntu12) yakkety; urgency=medium + + * Update to SVN 20160824 (r239726, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77334, PR tree-optimization/76783, + PR tree-optimization/72851, PR target/72867 (x86), PR middle-end/71700, + * Call default_file_start from s390_asm_file_start, taken from the trunk. + + -- Matthias Klose Wed, 24 Aug 2016 08:12:10 +0200 + +gcc-6 (6.2.0-1ubuntu11) yakkety; urgency=medium + + * GCC 6.2 release. + + -- Matthias Klose Mon, 22 Aug 2016 15:23:46 +0200 + +gcc-6 (6.2.0-1) unstable; urgency=medium + + * GCC 6.2 release. + * Update gdc to the gdc-6 branch 20160822. + + -- Matthias Klose Mon, 22 Aug 2016 14:15:21 +0200 + +gcc-6 (6.1.1-12ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 15 Aug 2016 17:56:19 +0200 + +gcc-6 (6.1.1-12) unstable; urgency=medium + + * GCC 6.2 release candidate 1. + * Update to SVN 20160815 (r239482, 6.1.1) from the gcc-6-branch. + Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), + PR c++/72415, PR sanitizer/71042, PR libstdc++/71964, PR libstdc++/70940, + PR c/67410, PR c/72816, PR driver/72765, PR debug/71906, + PR tree-optimization/73434, PR tree-optimization/72824, PR target/76342, + PR target/72843, PR c/71512, PR tree-optimization/71083, PR target/72819, + PR target/72853, PR tree-optimization/72824, PR ipa/71981, PR ipa/68273, + PR tree-optimization/71881, PR target/72802, PR target/72802, + PR rtl-optimization/71976, PR c++/71972, PR c++/72868, PR c++/73456, + PR c++/72800, PR c++/68724, PR debug/71906, PR fortran/71936, + PR fortran/72698, PR fortran/70524, PR fortran/71795, PR libgfortran/71123, + PR libgfortran/73142. + + [ Matthias Klose ] + * Fix running the libjava testsuite. + * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. + * Update the Linaro support to the 6-2016.07 snapshot. + + [ Aurelien Jarno ] + * Replace proposed fix for PR ipa/68273 by the corresponding patch taken + from trunk. + + -- Matthias Klose Mon, 15 Aug 2016 17:51:10 +0200 + +gcc-6 (6.1.1-11ubuntu12) yakkety; urgency=medium + + * Update to SVN 20160805 (r239167, 6.1.1) from the gcc-6-branch. + Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), + PR c++/72415. + + * Fix running the libjava testsuite. + * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. + + -- Matthias Klose Fri, 05 Aug 2016 15:09:39 +0200 + +gcc-6 (6.1.1-11ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 03 Aug 2016 21:55:46 +0200 + +gcc-6 (6.1.1-11) unstable; urgency=medium + + * Update to SVN 20160802 (r238981, 6.1.1) from the gcc-6-branch. + - Fix PR target/72767 (AVR), PR target/71151 (AVR), PR c/7652, + PR target/71216 (PPC), PR target/72103 (PPC), PR c++/72457, PR c++/71576, + PR c++/71833, PR fortran/71883. + + [ Nicolas Boulenguez ] + * debian/ada/confirm_debian_bugs.py: Update for GCC 6. Closes: #832799. + + [ Matthias Klose ] + * Backport AArch64 Vulcan cost models (Dann Frazier). LP: #1603587. + + -- Matthias Klose Wed, 03 Aug 2016 21:53:37 +0200 + +gcc-6 (6.1.1-10ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 24 Jul 2016 20:28:46 +0200 + +gcc-6 (6.1.1-10) unstable; urgency=medium + + * Update to SVN 20160724 (r238695, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71856, PR libstdc++/71320, PR c++/71214, + PR sanitizer/71953, PR fortran/71688, PR rtl-optimization/71916, + PR debug/71855, PR middle-end/71874, PR target/71493 (PPC), + PR rtl-optimization/71634, PR target/71733 (PPC), PR ipa/71624, + PR target/71805 (PPC), PR target/70098 (PPC), PR target/71763 (PPC), + PR middle-end/71758, PR tree-optimization/71823, PR middle-end/71606, + PR tree-optimization/71518, PR target/71806 (PPC), PR target/71720 (PPC), + PR middle-end/64516, PR tree-optimization/71264, PR middle-end/71423, + PR tree-optimization/71521, PR tree-optimization/71452, PR target/50739, + PR tree-optimization/71522, PR c++/55922, PR c++/63151, PR c++/70709, + PR c++/70778, PR c++/71738, PR c++/71350, PR c++/71748, PR c++/52746, + PR c++/69223, PR c++/71630, PR c++/71913, PR c++/71728, PR c++/71941, + PR c++/70822, PR c++/70106, PR c++/67565, PR c++/67579, PR c++/71843, + PR c++/70781, PR c++/71896, PR c++/71092, PR c++/71117, PR c++/71495, + PR c++/71511, PR c++/71513, PR c++/71604, PR c++/54430, PR c++/71711, + PR c++/71814, PR c++/71718, PR c++/70824, PR c++/71909, PR c++/71835, + PR c++/71828, PR c++/71822, PR c++/71871, PR c++/70869, PR c++/71054, + PR fortran/71807, PR fortran/70842, PR fortran/71764, PR fortran/71623, + PR fortran/71783. + + [ Matthias Klose ] + * Build-depend on gnat-6 instead of gnat-5 on development distros. + + [ Aurelien Jarno ] + * Replace libjava-mips64el-proposed.diff by the corresponding patch + taken from trunk. + + -- Matthias Klose Sun, 24 Jul 2016 19:42:10 +0200 + +gcc-6 (6.1.1-9ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 05 Jul 2016 15:15:56 +0200 + +gcc-6 (6.1.1-9) unstable; urgency=medium + + * Update to SVN 20160705 (r237999, 6.1.1) from the gcc-6-branch. + - Fix PR fortran/71717, PR libstdc++/71313, PR c/71685, PR c++/71739, + PR target/71670 (PPC), PR middle-end/71626, PR target/71559 (x86), + PR target/71656 (PPC), PR target/71698 (PPC), PR driver/71651, + PR fortran/71687, PR fortran/71704, PR fortran/71705. + * Mark cross compilers as M-A: foreign. Addresses: #827136. + * On sparc64, configure with --with-cpu-32=ultrasparc, drop the + sparc-force-cpu patch. Closes: #809509. + + -- Matthias Klose Tue, 05 Jul 2016 11:19:50 +0200 + +gcc-6 (6.1.1-8ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 30 Jun 2016 15:41:06 +0200 + +gcc-6 (6.1.1-8) unstable; urgency=medium + + * Update to SVN 20160630 (r237878, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/71647, PR target/30417 (AVR), + PR target/71103 (AVR), PR tree-optimization/71588, PR middle-end/71581, + PR c++/71528, PR fortran/70673, PR middle-end/71693. + + [ Aurelien Jarno ] + * Apply proposed patch from Matthew Fortune to fix libjava on mips64el. + + [ Matthias Klose ] + * Add AArch64 Vulcan cpu support (Dann Frazier). LP: #1594452. + * gfortran: Suggest libcoarrays-dev. Closes: #827995. + * cpp: Breaks libmagics++-dev (<< 2.28.0-4). Closes: #825278. + * Optimize for mips32r2 for o32 (YunQiang Su). Closes: #827801. + + -- Matthias Klose Thu, 30 Jun 2016 14:12:55 +0200 + +gcc-6 (6.1.1-7ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 20 Jun 2016 20:27:58 +0200 + +gcc-6 (6.1.1-7) unstable; urgency=medium + + * Update to SVN 20160620 (r237590, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/71373, PR c/71381, PR libstdc++/71545, PR c/68657, + PR sanitizer/71498, PR middle-end/71529, PR target/71103 (AVR), + PR target/71554 (x86), PR middle-end/71494, PR c++/71448, + PR tree-optimization/71405, PR tree-optimization/71505, + PR target/71379 (s390), PR target/71186 (PPC), PR target/70915 (PPC), + PR c++/70572, PR c++/71516, PR c/71381. + * Fix libgnatprj build to avoid undefined symbols (YunQiang Su). + Closes: #826503. + * Add build support for tilegx (Helmut Grohne). Closes: #827578. + * Drop support for loongson 2f (YunQiang Su). Closes: #827554. + + -- Matthias Klose Mon, 20 Jun 2016 13:41:44 +0200 + +gcc-6 (6.1.1-6ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 09 Jun 2016 19:27:27 +0200 + +gcc-6 (6.1.1-6) unstable; urgency=medium + + * Update to SVN 20160609 (r237267, 6.1.1) from the gcc-6-branch. + - Fix PR target/71389 (x86), PR tree-optimization/71259, + PR target/70830 (ARM), PR target/67310 (x86), PR c++/71442, + PR c++/70847, PR c++/71330, PR c++/71393, PR fortran/69659. + * gdc: Fix linking the runtime library. Addresses: #826645. + * Fix building libgnatprj on powerpc, and on PIE enabled builds (YunQiang Su). + Closes: #826365. + + -- Matthias Klose Thu, 09 Jun 2016 18:19:42 +0200 + +gcc-6 (6.1.1-5ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 03 Jun 2016 19:46:59 +0200 + +gcc-6 (6.1.1-5) unstable; urgency=medium + + * Update to SVN 20160603 (r237075, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/70762, PR libstdc++/69703, PR libstdc++/69703, + PR libstdc++/71038, PR libstdc++/71036, PR libstdc++/71037, + PR libstdc++/71005, PR libstdc++/71004, PR libstdc++/70609, PR c/71171, + PR middle-end/71279, PR c++/71147, PR c++/71257, + PR tree-optimization/70884, PR c++/71210, PR tree-optimization/71031, + PR c++/69872, PR c++/71257, PR c++/70344, PR c++/71184, PR fortran/66461, + PR fortran/71204, PR libffi/65567, PR c++/71349, PR target/71201, + PR middle-end/71371, PR debug/71057, PR target/71056 (ARM32), + PR tree-optimization/69068, PR middle-end/71002, PR bootstrap/71071, + PR c++/71372, PR c++/70972, PR c++/71166, PR c++/71227, PR c++/60095, + PR c++/69515, PR c++/69009, PR c++/71173, PR c++/70522, PR c++/70584, + PR c++/70735, PR c++/71306, PR c++/71349, PR c++/71105, PR c++/71147, + PR ada/71358, PR ada/71317, PR fortran/71156, PR middle-end/71387. + * Fix cross building libgnatprj on i386 targeting 64bit archs (YunQiang Su). + Closes: #823126. + * Detect hard float for non-linux or non-glibc arm-*-*eabihf builds (Helmut + Grohne). Closes: #823894. + * Update embedded timestamp setting patch, backported from the trunk. + * gccgo: Combine combine gccgo's ld() and ldShared() methods + in cmd/go (Michael Hudson-Doyle). LP: #1586872. + + -- Matthias Klose Fri, 03 Jun 2016 18:58:40 +0200 + +gcc-6 (6.1.1-4ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 19 May 2016 17:24:36 +0200 + +gcc-6 (6.1.1-4) unstable; urgency=medium + + * Update to SVN 20160519 (r236478, 6.1.1) from the gcc-6-branch. + - Fix PR sanitizer/71160, PR c++/70498, PR target/71161 (x86), + PR fortran/70856, PR c++/71100, PR target/71145 (alpha), PR c++/70466, + PR target/70860 (nvptx), PR target/70809 (AArch64), PR hsa/70857, + PR driver/68463, PR target/70947 (PPC), PR ipa/70760, PR middle-end/70931, + PR middle-end/70941, PR tree-optimization/71006, PR target/70830 (ARM), + PR fortran/69603, PR fortran/71047, PR fortran/56226, PR ipa/70646. + * libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler + packages. + + -- Matthias Klose Thu, 19 May 2016 18:40:49 +0200 + +gcc-6 (6.1.1-3ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 12 May 2016 02:33:19 +0200 + +gcc-6 (6.1.1-3) unstable; urgency=medium + + * Update to SVN 20160511 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71049, PR middle-end/70877, PR tree-optimization/70876, + PR target/70963, PR tree-optimization/70916, PR debug/70935. + * Enable gdc for sh4. + + -- Matthias Klose Wed, 11 May 2016 22:35:33 +0200 + +gcc-6 (6.1.1-2ubuntu12) yakkety; urgency=medium + + * Fix package replacements with gccgo-6 packages. LP: #1578247, #1578250. + + -- Matthias Klose Tue, 10 May 2016 14:31:52 +0200 + +gcc-6 (6.1.1-2) unstable; urgency=medium + + * Update to SVN 20160510 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/70956, PR sanitizer/70875, PR sanitizer/70342, + PR ada/70969, PR ada/70900. + + [ Matthias Klose ] + * Call dh_makeshlibs with the --noscripts option when building a + cross compiler. + * Fix building cross gnat libs when not building the common libs. + * Fix building cross mips* multilibs when not building the common libs. + * Re-enable gnat build on some architectures for snapshot builds. + * Don't build gnat cross compilers on 32bit archs targeting 64bit targets. + Addresses: #823126. + * Avoid empty architecture lists in build dependencies. Closes: #823280. + * Tighten debhelper build dependency for cross build dependencies. + * Allow build dependencies for musl configurations (Helmut Grohne). + Closes: #823769. + * Fix dependency resolution for libraries not built anymore from + this source package. + + [ Samuel Thibault ] + * patches/ada-hurd.diff: Fix Get_Page_Size type. + + -- Matthias Klose Tue, 10 May 2016 13:34:49 +0200 + +gcc-6 (6.1.1-1) unstable; urgency=medium + + * GCC 6.1.0 release. + - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684, + PR middle-end/70626, PR java/70839, PR target/70858, PR ada/70759, + PR ada/70786, PR c++/70540, PR middle-end/70626. + * Update to SVN 20160430 (r235678, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/70680, PR target/70750 (x86), PR ipa/70785, + PR sanitizer/70712, PR target/70728 (x86). + - Don't encode the minor version in the gcj abi version. + + [ Aurelien Jarno ] + * Apply proposed patch for PR target/68273 (Wrong code on mips/mipsel due to + (invalid?) peeking at alignments in function_arg) on mips and mipsel. + + [ Matthias Klose ] + * Always configure with --enable-targets=powerpcle-linux on ppc64el. + * Stop building libcc1 and libgccjit0, when not building common libs. + * Rename libgccjit-5-dbg to libgccjit0-dbg. + * Fix libjava testsuite with dejagnu 1.6, taken from the trunk. + * Allow embedded timestamps by C/C++ macros to be set externally (Eduard + Sanou). + * Add missing libstdc++ symbol to symbols file. + * libstdc++-doc: Ignore warnings about formulas and long identifiers in + man pages. + * Default the 32bit x86 architectures to i686, keep i585 symlinks. + See https://lists.debian.org/debian-devel/2015/09/msg00589.html + * Build-depend on debhelper (>= 9) and dpkg-dev (>= 1.17.14). + * Update gdc to the gdc-6 branch 20160430. + + -- Matthias Klose Sat, 30 Apr 2016 13:31:12 +0200 + +gcc-6 (6.1.1-0ubuntu12) yakkety; urgency=medium + + * GCC 6.1.0 release. + - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684. + * Update to SVN 20160428 (r235548, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/70680, PR target/70750 (x86), PR ipa/70785, + PR sanitizer/70712, PR target/70728 (x86). + - Don't encode the minor version in the gcj abi version. + * Always configure with --enable-targets=powerpcle-linux on ppc64el. + * Stop building libcc1 and libgccjit0, when not building common libs. + * Rename libgccjit-5-dbg to libgccjit0-dbg. + * Fix libjava testsuite with dejagnu 1.6, taken from the trunk. + * Re-enable running the tests. + + -- Matthias Klose Thu, 28 Apr 2016 10:33:38 +0200 + +gcc-6 (6.0.1-2ubuntu12) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 23 Apr 2016 18:24:49 +0200 + +gcc-6 (6.0.1-2) unstable; urgency=medium + + * GCC 6.1 release candidate 2. + * Update gdc to the trunk 20160423. + + -- Matthias Klose Sat, 23 Apr 2016 17:56:52 +0200 + +gcc-6 (6.0.1-1ubuntu11) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 15 Apr 2016 18:38:06 +0200 + +gcc-6 (6.0.1-1) experimental; urgency=medium + + * GCC 6 release candidate 1. + + [ Michael Hudson-Doyle ] + * cmd/go: deduplicate gccgo afiles by package path, not *Package. LP: #1566552. + + -- Matthias Klose Fri, 15 Apr 2016 18:32:25 +0200 + +gcc-6 (6-20160405-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160405. + + -- Matthias Klose Tue, 05 Apr 2016 17:10:35 +0200 + +gcc-6 (6-20160319-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160319. + + -- Matthias Klose Sat, 19 Mar 2016 12:17:24 +0100 + +gcc-6 (6-20160313-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160313. + + -- Matthias Klose Sun, 13 Mar 2016 10:19:12 +0100 + +gcc-6 (6-20160227-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160227. + + -- Matthias Klose Sat, 27 Feb 2016 11:02:40 +0100 + +gcc-6 (6-20160225-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160225. + + -- Matthias Klose Thu, 25 Feb 2016 02:09:51 +0100 + +gcc-6 (6-20160225-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160225. + * Update gdc to the trunk 20160224. + * Install missing architecture specific plugin header files. + * Fix PR target/69885, bootstrap error on m68k. + + -- Matthias Klose Thu, 25 Feb 2016 02:00:57 +0100 + +gcc-6 (6-20160220-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160220. + + -- Matthias Klose Sat, 20 Feb 2016 04:38:26 +0100 + +gcc-6 (6-20160206-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160206. + + -- Matthias Klose Sat, 06 Feb 2016 12:07:51 +0100 + +gcc-6 (6-20160205-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160205. + - Fix PR tree-optimization/69320. Closes: #811921. + - Fix PR c++/68782. Closes: #812287. + - Fix PR tree-optimization/69328. Closes: #812247. + - Fix PR target/69421. Closes: #812246. + - Fix PR c++/69379. Closes: #812068. + - Fix PR lto/69393. Closes: #812062. + - Fix PR tree-optimization/69166. Closes: #812061. + * Update gdc to the trunk 20160205. + - Fix data corruption bug when passing around longdoubles. + Closes: #812080. + * Add more conflicts to GCC 5's debug and doc packages. Closes: #813081. + * Fix dependency generation for armel/armhf multilib cross targets. + * Fix libc dependency generation for multilib cross targets. + * Build libitm on alpha, s390x, sh4, sparc64. + + -- Matthias Klose Fri, 05 Feb 2016 18:08:37 +0100 + +gcc-6 (6-20160122-1) experimental; urgency=medium + + * Fix gnat build failure on KFreeBSD (Steven Chamberlain). Closes: #811372. + * Fix dependencies on target libraries which are not built anymore + from this source. + * Bump libmpx soname. Closes: #812084. + * Apply proposed patch for PR target/69129. Closes: #810081. + * Apply proposed patch for PR go/66904, pass linker flags from + "#cgo pkg-config:" directives (Michael Hudson). + * Configure with --enable-fix-cortex-a53-843419 on AArch64. + + -- Matthias Klose Fri, 22 Jan 2016 13:33:19 +0100 + +gcc-6 (6-20160117-1ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160117. + + -- Matthias Klose Sun, 17 Jan 2016 12:34:33 +0100 + +gcc-6 (6-20160117-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160117. + * Update gdc to the trunk 20160115. + * Update libgnatvsn/libgnatprj conflicts. Closes: #810809. + * Fix gnat build failures on the Hurd and KFreeBSD (Svante Signell). + Closes: #811063. + * Build libstdc++-6-doc with a fixed doxygen. Closes: #810717. + + -- Matthias Klose Sun, 17 Jan 2016 12:14:39 +0100 + +gcc-6 (6-20160109-1ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160109. + + -- Matthias Klose Sat, 09 Jan 2016 12:03:28 +0100 + +gcc-6 (6-20160109-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160109. + * Install new header file pkuintrin.h. Closes: #809807. + * Fix libcc1-0 dependency for cross compilers. + + -- Matthias Klose Sat, 09 Jan 2016 11:49:50 +0100 + +gcc-6 (6-20160105-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160105. + * Install new header file pkuintrin.h. Closes: #809807. + * Fix libgcc1-0 dependency for cross compilers. + + -- Matthias Klose Sat, 02 Jan 2016 15:55:27 +0100 + +gcc-6 (6-20160103-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + + -- Matthias Klose Sun, 03 Jan 2016 12:47:13 +0100 + +gcc-6 (6-20160101-0ubuntu2) xenial; urgency=medium + + * Bump the libgcj version. + + -- Matthias Klose Sat, 02 Jan 2016 15:55:27 +0100 + +gcc-6 (6-20160101-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + + -- Matthias Klose Fri, 01 Jan 2016 21:40:43 +0100 + +gcc-6 (6-20151221-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151220. + + -- Matthias Klose Mon, 21 Dec 2015 15:56:05 +0100 + +gcc-6 (6-20151220-1ubuntu1) xenial; urgency=medium + + * Test build for xenial. + + -- Matthias Klose Sun, 20 Dec 2015 14:11:14 +0100 + +gcc-6 (6-20151220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151220. + * Update libstdc++-dbg conflicts. Closes: #807885. + * Set target tools and build dependencies for cross builds. + * Relax gcj-6-{jre,jre-headless,jdk} dependencies on libgcj16. + * Fix cross build issues. + + -- Matthias Klose Sun, 20 Dec 2015 13:46:12 +0100 + +gcc-6 (6-20151219-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151219. + * Update libstdc++-dbg conflicts. Closes: #807885. + * Set target tools and build dependencies for cross builds. + + -- Matthias Klose Sat, 19 Dec 2015 10:17:25 +0100 + +gcc-6 (6-20151213-1ubuntu2) xenial; urgency=medium + + * Test build for xenial. + + -- Matthias Klose Sun, 13 Dec 2015 15:04:49 +0100 + +gcc-6 (6-20151213-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151213. + * Update the ada-kfreebsd and ada-m68k patches. + * Fix cross-building without having the common cross libraries installed. + * Allow unstripped, non-optimized debug builds with setting DEB_BUILD_OPTIONS + including gccdebug. + * Remove obsolete libgccmath packaging support. + * Define SONAME macros whether the libraries are built or not. + + -- Matthias Klose Sun, 13 Dec 2015 13:24:55 +0100 + +gcc-6 (6-20151211-1ubuntu3) xenial; urgency=medium + + * Test build for xenial. + + -- Matthias Klose Fri, 11 Dec 2015 17:42:35 +0100 + +gcc-6 (6-20151211-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151211. + * Update gnat and gdc patches, re-enable gnat and gdc. + + -- Matthias Klose Fri, 11 Dec 2015 12:35:03 +0100 + +gcc-6 (6-20151210-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from 20151210. + + -- Matthias Klose Thu, 10 Dec 2015 22:09:13 +0100 + +gcc-5 (5.3.1-3ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Tue, 08 Dec 2015 02:21:55 +0100 + +gcc-5 (5.3.1-3) unstable; urgency=medium + + * Update to SVN 20151207 (r231361, 5.3.1) from the gcc-5-branch. + * Remove upstreamed chunks from the ada-kfreebsd patch. + + -- Matthias Klose Tue, 08 Dec 2015 02:10:51 +0100 + +gcc-5 (5.3.1-2ubuntu2) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Mon, 07 Dec 2015 00:00:19 +0100 + +gcc-5 (5.3.1-2) unstable; urgency=medium + + * Update to SVN 20151206 (r231339, 5.3.1) from the gcc-5-branch. + * Re-enable building gdc/libphobos, fixing the profiled build. + * Fix PR sanitizer/67899, build failure on sparc/sparc64. + + -- Matthias Klose Sun, 06 Dec 2015 19:15:46 +0100 + +gcc-5 (5.3.1-1ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Sat, 05 Dec 2015 11:40:27 +0100 + +gcc-5 (5.3.1-1) unstable; urgency=medium + + * Update to SVN 20151205 (r231314, 5.3.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 05 Dec 2015 11:36:26 +0100 + +gcc-5 (5.3.1-0ubuntu2) xenial; urgency=medium + + * Update libgcc symbols file. + + -- Matthias Klose Fri, 04 Dec 2015 18:52:20 +0100 + +gcc-5 (5.3.1-0ubuntu1) xenial; urgency=medium + + * Update to SVN 20151204 (r231267, 5.3.1) from the gcc-5-branch. + * Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Fri, 04 Dec 2015 15:04:01 +0100 + +gcc-5 (5.3.0-3) unstable; urgency=medium + + * Update libgcc symbols file. + * Restore libgcc.symbols.aebi. + * Disabled profiled bootstraps for backports. + + -- Matthias Klose Sat, 05 Dec 2015 07:50:48 +0100 + +gcc-5 (5.3.0-1) experimental; urgency=medium + + * GCC 5.3 release. + - Fix PR libstdc++/65142 (CVE-2015-5276). + * Update gdc to the gcc-5 branch 20151130. + * Enable the profiled bootstrap on amd64, arm64, armel armhf, i386, powerpc, + ppc64, ppc64el, s390x, x32 (excluding builds from the Linaro branch). + * Move test summary into the gcc-test-results package. + * Simplify libatomic, libcilkrts, libgcc, libgfortran, libgomp, libitm, + libmpx, libquadmath symbols files using versioned symbol references. + Closes: #806784. + * Only build the hppa64 cross compiler when either building the native compiler, + or when cross building the native compiler. Closes: #806479. + * Configure staged build with --enable-linker-build-id. + + -- Matthias Klose Fri, 04 Dec 2015 12:01:04 +0100 + +gcc-5 (5.2.1-27ubuntu1) xenial; urgency=medium + + * Configure with --enable-default-pie on s390x. + + -- Matthias Klose Mon, 30 Nov 2015 00:49:40 +0100 + +gcc-5 (5.2.1-27) unstable; urgency=medium + + * Update to SVN 20151129 (r231053, 5.2.1) from the gcc-5-branch. + * Don't strip cc1plus when shipping with unstripped frontends. + * Relax libgnatvsn5-dev-*-cross and libgnatprj5-dev-*-cross dependencies + on gnat-5-*-linux-gnu. + * Fix setting the explicit libc dependency for cross builds. + * Don't build m4-nofpu multilibs on sh4, install the default multilib + into the standard location. + * Stop building gnat on mips64, see https://gcc.gnu.org/PR65337 (#806370). + * Update the patch for PR go/67508 and re-enable Go on sparc and sparc64. + * Fix gnat sparc/sparc64 architecture detection. + * Update libgcc and libstdc++ symbols files. + * Don't ship the gcov tools in the gcc-hppa64-linux-gnu package. + * Run the autoconf generation in parallel. + * Add --enable-default-pie option to GCC configure, taken from the trunk. + * Enable gnat for m68k cross builds. + * Link gnat tools, gnat libs and libgccjit with the defaults LDFLAGS. + * Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds. + * Ship an empty debian/rules.parameters in the gcc-5-source package. + + -- Matthias Klose Sun, 29 Nov 2015 23:48:58 +0100 + +gcc-5 (5.2.1-26ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 25 Nov 2015 17:29:15 +0100 + +gcc-5 (5.2.1-26) unstable; urgency=medium + + * Update to SVN 20151125 (r230897, 5.2.1) from the gcc-5-branch. + * Fix the rtlibs stage build. Closes: #806186. + * Fix packaging the cross libphobos package. + * Build the hppa64 cross compiler on x86 architectures. + * gcc-5-hppa64-linux-gnu: Stop providing unversioned tools using + alternatives. Build a gcc-hppa64-linux-gnu package instead. + * Split out a gcc-5-test-results package from g++-5, allowing a post + build analysis, and reducing the size of the g++-5 package. + + -- Matthias Klose Wed, 25 Nov 2015 20:33:08 +0100 + +gcc-5 (5.2.1-25ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 23 Nov 2015 06:06:11 +0100 + +gcc-5 (5.2.1-25) unstable; urgency=medium + + * Update to SVN 20151123 (r230734, 5.2.1) from the gcc-5-branch. + * Fix libgcc4-dbg dependency on libgcc4. Closes: #805839. + * Fix building epoch prefixed cross packages. + + -- Matthias Klose Mon, 23 Nov 2015 05:48:00 +0100 + +gcc-5 (5.2.1-24ubuntu3) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 21 Nov 2015 12:21:06 +0100 + +gcc-5 (5.2.1-24) unstable; urgency=medium + + * Update to SVN 20151121 (r230703, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/56158, taken from the trunk. Closes: #804521. LP: #1514309. + * Don't try to build a gnat cross compiler when there is no gnat compiler + for the build architecture. + * Update gnat build dependencies for backports. + * Parallelize building documentation and parallelize the packaging step. + * Update the Linaro support to the 5-2015.11 snapshot. + + -- Matthias Klose Sat, 21 Nov 2015 11:22:16 +0100 + +gcc-5 (5.2.1-23ubuntu1) xenial; urgency=medium + + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + + -- Matthias Klose Wed, 28 Oct 2015 12:18:49 +0100 + +gcc-5 (5.2.1-23) unstable; urgency=medium + + * Update to SVN 20151028 (r229478, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.10 snapshot. + * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). + * gcj: Fix priority of java alternatives. Closes: #803055. + * gnat-5: Reintroduce the unversioned gnatgcc name. Closes: #802838. + + [ Aurelien Jarno ] + * Replace proposed patch for PR rtl-optimization/67736 by the one + committed on trunk. + + -- Matthias Klose Wed, 28 Oct 2015 10:36:54 +0100 + +gcc-5 (5.2.1-22ubuntu5) xenial; urgency=medium + + * Revert the fix for PR ipa/67056, causing an ICE. + + -- Matthias Klose Fri, 23 Oct 2015 19:13:51 +0200 + +gcc-5 (5.2.1-22ubuntu4) xenial; urgency=medium + + * Update to SVN 20151022 (r229176, 5.2.1) from the gcc-5-branch. + * Fix PR ipa/67056, taken from the trunk. Closes: #788299. + * Target POWER8 on ppc64el. + * Again, don't strip the compiler binaries for more verbose ICEs. + + -- Matthias Klose Thu, 22 Oct 2015 17:32:47 +0200 + +gcc-5 (5.2.1-22ubuntu2) wily; urgency=medium + + * Strip the compiler binaries for the release. + + -- Matthias Klose Fri, 16 Oct 2015 12:17:17 +0200 + +gcc-5 (5.2.1-22ubuntu1) wily; urgency=medium + + * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). + + -- Matthias Klose Sun, 11 Oct 2015 10:13:52 +0200 + +gcc-5 (5.2.1-22) unstable; urgency=medium + + * Update to SVN 20151010 (r228681, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/65913, PR libstdc++/67173, PR libstdc++/67747, + PR c/67730, PR middle-end/67563, PR lto/67699, PR tree-optimization/67821, + PR debug/58315. + + [ Matthias Klose ] + * Restore the work around for PR libstdc++/65913, still needed at least + for powerpc. + * Rename gcc-5-hppa64 to gcc-5-hppa64-linux-gnu, update (build) dependency + on binutils. Closes: #800563. + * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting + globbing of arguments. Closes: #800250. + * Build-depend on gnat-5 instead of gnat-4.9. + + [ Aurelien Jarno ] + * Do not Use --with-mips-plt on mips and mipsel. Closes: #799811. + + -- Matthias Klose Sat, 10 Oct 2015 22:17:09 +0200 + +gcc-5 (5.2.1-21ubuntu2) wily; urgency=medium + + * Restore the work around for PR libstdc++/65913, still needed at least + for powerpc. + + -- Matthias Klose Sun, 04 Oct 2015 02:21:30 +0200 + +gcc-5 (5.2.1-21ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 03 Oct 2015 21:30:44 +0200 + +gcc-5 (5.2.1-21) unstable; urgency=medium + + * Update to SVN 20151003 (r228449, 5.2.1) from the gcc-5-branch. + * Fix building gnat. Closes: #800781. + + -- Matthias Klose Sat, 03 Oct 2015 17:28:45 +0200 + +gcc-5 (5.2.1-20ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 02 Oct 2015 11:35:22 +0200 + +gcc-5 (5.2.1-20) unstable; urgency=medium + + * Update to SVN 20151002 (r228373, 5.2.1) from the gcc-5-branch. + * Fix packaging the ada cross library packages. + + -- Matthias Klose Fri, 02 Oct 2015 10:24:38 +0200 + +gcc-5 (5.2.1-19ubuntu1) wily; urgency=medium + + * Configure --with-arch=zEC12 on s390x Ubuntu. + + -- Matthias Klose Wed, 30 Sep 2015 22:55:14 +0200 + +gcc-5 (5.2.1-19) unstable; urgency=medium + + * Update to SVN 20150930 (r228302, 5.2.1) from the gcc-5-branch. + - Fix PR ipa/66424. Closes: #800318. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.09 snapshot. + * Fix PR libstdc++/67707, taken from the trunk. LP: #1499564. + * Ship libgcj.spec in gcj-5 instead of gcj-5-jdk. Closes: #800010. + * gcj-5: Suggest gcj-5-jdk. + * Fix base dependency for ada cross library packages. + * Add ${shlibs:Depends} for libgnatvsn and libgnatprj. + * Link lrealpath.o into libgnatprj. Closes: #800045. + * libgnat{svn,prj}-dev: For cross builds, move adainclude and adalib files + into the gcc libdir. + * Default to POWER8 on ppc64el. + * armv8: Fix slt lda missing conditional code (taken from the trunk). + * Fix lintian pre-depends-directly-on-multiarch-support warnings. + + [ Aurelien Jarno ] + * Apply proposed patch for PR rtl-optimization/67736 when building for + mips64 or mips64el. Closes: #800321. + + -- Matthias Klose Wed, 30 Sep 2015 20:36:50 +0200 + +gcc-5 (5.2.1-18ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 23 Sep 2015 03:10:37 +0200 + +gcc-5 (5.2.1-18) unstable; urgency=medium + + * Update to SVN 20150922 (r228023, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. + * Fix PR libstdc++/65913, taken from the trunk. Closes: #797577. + + [ YunQiang Su ] + * Build again the gnat-5-sjlj package. Closes: #798782. + * Fix gnat cross builds, and cross building gnat. + + -- Matthias Klose Tue, 22 Sep 2015 23:15:17 +0200 + +gcc-5 (5.2.1-17ubuntu5) wily; urgency=medium + + * Don't assume --push-state/--pop-state being available for every linker. + LP: #1496743. + + -- Matthias Klose Tue, 22 Sep 2015 20:54:29 +0200 + +gcc-5 (5.2.1-17ubuntu4) wily; urgency=medium + + * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. + * Work around PR c++/65913, link with -latomic when linking with -lstdc++. + Closes: #797577. + + -- Matthias Klose Tue, 15 Sep 2015 17:57:31 +0200 + +gcc-5 (5.2.1-17ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 11 Sep 2015 03:24:48 +0200 + +gcc-5 (5.2.1-17) unstable; urgency=medium + + * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch. + - Fix PR c++/67369, ICE on valid code. LP: #1489173. + + [ Matthias Klose ] + * Build-depend on linux-libc-dev [m68k] for gcc and gcc-snapshot builds. + Closes: #796906. + * Don't ignore anymore bootstrap comparison failures on sh4. Closes: #796939. + * Fix stage1 cross build for KFreeBSD. Closes: #796901. + * libgo: Fix PR go/67508, rewrite lfstack packing/unpacking to look more + like that in Go (Michael Hudson). LP: #1472650. + * Fix PR target/67143 (AArch64), ICE on valid code. LP: #1481333. + + [ Aurelien Jarno ] + * Use --with-mips-plt on mips*. + * Build for R2 ISA on mips, mips64 and mips64el. + * Optimize for R2 ISA on mipsel. + * Only apply mips-fix-loongson2f-nop on mipsel. + + [ YunQiang Su ] + * Fix running the acats tests. Closes: #798531. + + -- Matthias Klose Fri, 11 Sep 2015 03:17:20 +0200 + +gcc-5 (5.2.1-16ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 03 Sep 2015 16:00:26 +0200 + +gcc-5 (5.2.1-16) unstable; urgency=medium + + * Update to SVN 20150903 (r227431, 5.2.1) from the gcc-5-branch. + - Backport the filesystem TS library. + * libstdc++-dev: Install libstdc++fs.a. + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + * Apply proposed patch for PR target/67211 (ppc64el). + * libgo-dev: Install libgolibbegin.a. + * Apply proposed patch for PR target/67280 (ARM). LP: #1482320. + + -- Matthias Klose Thu, 03 Sep 2015 12:16:15 +0200 + +gcc-5 (5.2.1-15ubuntu5) wily; urgency=medium + + * Fix libstdc++-breaks (add version for the clustalx breaks). + + -- Matthias Klose Tue, 25 Aug 2015 17:56:26 +0200 + +gcc-5 (5.2.1-15ubuntu3) wily; urgency=medium + + * Update to SVN 20150825 (r227166, 5.2.1) from the gcc-5-branch. + - Backport the filesystem TS library. + * libstdc++-dev: Install libstdc++fs.a. + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + * Apply proposed patch for PR target/67211 (ppc64el). + * libgo-dev: Install libgolibbegin.a. + * Add the PR libstdc++/66145 breaks for wily. + + -- Matthias Klose Tue, 25 Aug 2015 15:56:11 +0200 + +gcc-5 (5.2.1-15ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 09 Aug 2015 13:20:15 +0200 + +gcc-5 (5.2.1-15) unstable; urgency=medium + + * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch. + * Adjust libstdc++-breaks: Break libantlr-dev instead of antlr; + adjust libreoffice version (closes: #794203), drop xxsd break (see + #793289), remove cython breaks (closes: #794511), add breaks for + packages built using cython (chemps2, fiona, guiqwt, htseq, imposm, + pysph, pytaglib, python-scipy, python-sfml, rasterio). + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + + -- Matthias Klose Sat, 08 Aug 2015 11:18:24 +0200 + +gcc-5 (5.2.1-14) unstable; urgency=high + + * Fix libstdc++6 breaks. + + -- Matthias Klose Fri, 31 Jul 2015 04:12:08 +0200 + +gcc-5 (5.2.1-13) unstable; urgency=high + + * Upload to unstable (https://wiki.debian.org/GCC5). See also + https://lists.debian.org/debian-devel-announce/2015/07/msg00000.html + * Update to SVN 20150730 (r226411, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/67015. Closes: #793784. + * Fix version macros in the plugin-header.h header. Closes: #793478. + * libstdc++6: Add breaks for issues tagged with gcc-pr66145. + * Add libcpprest2.4 to libstdc++6 breaks. Closes: #784655. + * Fix PR c++/66857, taken from the trunk. + * Ignore differences in gcc/real.o in the bootstrap build for + sh*-*linux-gnu targets. According to PR 67002, "A rare indeterminacy + of the register choice. Both codes are valid. It seems very hard to + find where has this indeterminacy come from". Suggested by Adrian + Glaubitz. + + -- Matthias Klose Thu, 30 Jul 2015 21:51:25 +0200 + +gcc-5 (5.2.1-12ubuntu2) wily; urgency=medium + + * Update to SVN 20150729 (r226354, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/67015. Closes: #793784. + + -- Matthias Klose Wed, 29 Jul 2015 17:59:18 +0200 + +gcc-5 (5.2.1-12ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 22 Jul 2015 21:17:54 +0200 + +gcc-5 (5.2.1-12) experimental; urgency=medium + + * Update to SVN 20150723 (r226105, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/66145, std::ios_base::failure objects thrown from + libstdc++.so using the gcc4-compatible ABI. + Just build src/c++11/functexcept.cc using the new ABI. It will break + code, which will be handled in the archive by adding Breaks for the + affected packages. Third party code using such code will need a rebuild. + * Remove the work around to build with -O1 on sh4. + + -- Matthias Klose Thu, 23 Jul 2015 14:18:44 +0200 + +gcc-5 (5.2.1-11ubuntu1) wily; urgency=medium + + * Configure without --disable-libstdcxx-dual-abi. + * Configure with --with-default-libstdcxx-abi=new. + + -- Matthias Klose Fri, 17 Jul 2015 08:14:56 +0200 + +gcc-5 (5.2.1-1ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 16 Jul 2015 16:58:50 +0200 + +gcc-5 (5.2.1-1) experimental; urgency=medium + + * GCC 5.2 release. + * Update to SVN 20150716 (r225880, 5.2.1) from the gcc-5-branch. + * Require version 5.2 for the libstdc++6 cxx symbols. + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + * Go escape analysis: analyze multiple result type assertions (taken + from the trunk). + + -- Matthias Klose Thu, 16 Jul 2015 15:35:44 +0200 + +gcc-5 (5.1.1-14ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 11 Jul 2015 13:00:26 +0200 + +gcc-5 (5.1.1-14) unstable; urgency=medium + + * Update to SVN 20150711 (r225710, 5.1.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 11 Jul 2015 11:57:19 +0200 + +gcc-5 (5.1.1-13ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 07 Jul 2015 14:29:11 +0200 + +gcc-5 (5.1.1-13) unstable; urgency=medium + + * Update to SVN 20150706 (r225471, 5.1.1) from the gcc-5-branch. + * Update libasan symbol files. + * Configure --with-fp-32=xx on all mips targets, setting MIPS O32 default + to FPXX (YunQiang Su). Closes: #789612. + * Update libgccjit symbol file. + * Add x32 symbols files for libgcc1 and libstdc++6. + * libgccjit0: Add breaks for python-gccjit and python3-gccjit. + + -- Matthias Klose Mon, 06 Jul 2015 19:55:08 +0200 + +gcc-5 (5.1.1-12ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 23 Jun 2015 12:53:45 +0200 + +gcc-5 (5.1.1-12) unstable; urgency=medium + + * Update to SVN 20150622 (r224724, 5.1.1) from the gcc-5-branch. + * Update symbols files for mips64 libatomic and libstdc++ (YunQiang Su). + Closes: #788990. + * Fix "empty-binary-package" lintian warnings. + + -- Matthias Klose Mon, 22 Jun 2015 14:37:49 +0200 + +gcc-5 (5.1.1-11ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 17 Jun 2015 14:38:38 +0200 + +gcc-5 (5.1.1-11) unstable; urgency=medium + + * Update to SVN 20150616 (r224519, 5.1.1) from the gcc-5-branch. + * gccgo: escape: Analyze binary expressions (taken from the trunk). + * Explicitly build with -Wl,--no-relax on alpha again. + * Build with -O1 on sh4 (try to work around PR target/66358). + + -- Matthias Klose Tue, 16 Jun 2015 16:11:59 +0200 + +gcc-5 (5.1.1-10) unstable; urgency=medium + + * Update to SVN 20150613 (r224454, 5.1.1) from the gcc-5-branch. + * Make removal of byte-compiled libstdc++ pretty printer files more + robust. Closes: #787630. + * Fix mips 32bit (o32) multilib builds (YunQiang Su). + * Build target libraries with -Wl,-z,relro. + * Build libstdc++6 when building the common libraries. + * Fix a bunch of lintian warnings. + + -- Matthias Klose Sat, 13 Jun 2015 12:59:17 +0200 + +gcc-5 (5.1.1-9ubuntu2) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 03 Jun 2015 01:02:23 +0200 + +gcc-5 (5.1.1-9) unstable; urgency=medium + + * Update to SVN 20150602 (r224029, 5.1.1) from the gcc-5-branch. + * Remove byte-compiled libstdc++ pretty printer files on upgrade. + Closes: #785939. + * Fix dangling libgccjit.so symlink. + * Fix base dependency for rtlibs stage builds. + * Fix build failure of the hppa64 cross compiler, introduced by the + gnat cross patches. Closes: #786692. + * Update README.source (Michael Vogt). + * libgo: syscall.Sendfile(): Apply proposed patch for PR go/66378. + (Michael Vogt). LP: #1460530. + * Set CC and CXX matching the same GCC version for the stage1 build. + * Work around PR go/66368, build libgo with -fno-stack-protector. + LP: #1454183. + + -- Matthias Klose Wed, 03 Jun 2015 00:49:41 +0200 + +gcc-5 (5.1.1-8ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 28 May 2015 12:51:48 +0200 + +gcc-5 (5.1.1-8) unstable; urgency=medium + + * Update to SVN 20150528 (r223816, 5.1.1) from the gcc-5-branch. + * Set the priorities of the *-dev-*-cross packages to extra. + * Prepare to change the base dependency for *-cross packages. + * Fix dependencies for stage1 and stage2 builds. + * Relax dependencies on binary indep *-dev-*-cross packages. + * Disable building gdc on sh4 (bootstrap comparison failure). + + -- Matthias Klose Thu, 28 May 2015 15:51:00 +0200 + +gcc-5 (5.1.1-7) unstable; urgency=medium + + * Update to SVN 20150522 (r223579, 5.1.1) from the gcc-5-branch. + * Add description for the ada-gnattools-cross patch (YunQiang Su). + * Provide a rtlibs stage to build a subset of target library packages. + * Make symbols file symlinking for cross builds more robust. + * Prefer gnatgcc-5 over gnatgcc when building native packages. + * Various fixes to build a gnat cross compiler: + - Fix dependencies of packages. + - Fix building libgnatprj and libgnatvsn (still needed to figure + out if these are target or host libraries). + * Fix building cross compilers with dpkg 1.18. + + -- Matthias Klose Fri, 22 May 2015 18:20:01 +0200 + +gcc-5 (5.1.1-6ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + * Fix dependencies for stage1 and stage2 builds. + * Disable building gdc on sh4. + + -- Matthias Klose Tue, 19 May 2015 18:29:02 +0200 + +gcc-5 (5.1.1-6) unstable; urgency=medium + + * Update to SVN 20150519 (r223346, 5.1.1) from the gcc-5-branch. + * Don't build gdc-multilib on armel. + * Remove old CFLAGS/LDFLAGS settings to build gdc. + * Remove reference to .ico file in NEWS.html. + * Fix gcc's dependency on libcc1-0 for native builds. + * Fix stripping the rpath when cross-building cross compilers. + * Remove work arounds to build 64bit multilibs on 32bit targets, + now properly fixed upstream. + * Partially apply patches to build a gnat cross compiler (submitted + by YunQiang Su). + - gnatmake: Call the versioned gnatbind and gnatlink commands. + Closes: #782257. + - Allow libgnatprj and libgnatvsn to cross build. Addresses: #783372. + - New patch ada-gnattools-cross.diff (no documentation). + * Backport patch for gccgo: + - gccgo: If unary & does not escape, the var does not escape. + * Apply the backported patches for the go escape analysis. Need to + be enabled with -fgo-optimize-alloc (this option may go away again). + * Re-enable running the tests. + + -- Matthias Klose Tue, 19 May 2015 10:33:40 +0200 + +gcc-5 (5.1.1-5ubuntu4) wily; urgency=medium + + * Update to SVN 20150513 (r223155, 5.1.1) from the gcc-5-branch. + * Don't build gdc-multilib on armel. + + -- Matthias Klose Wed, 13 May 2015 14:36:20 +0200 + +gcc-5 (5.1.1-5ubuntu3) wily; urgency=medium + + * Fix gnat build dependencies. + + -- Matthias Klose Sun, 10 May 2015 02:46:32 +0200 + +gcc-5 (5.1.1-5ubuntu2) wily; urgency=medium + + * Update to SVN 20150509 (r222970, 5.1.1) from the gcc-5-branch. + * Fix gotools configury. + * Configure with + --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98 + While libstdc++ provides a dual ABI to support both the c++98 and c++11 + ABI, there is no committment on compatibility of the old experimental + c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5. + Closes: #784655. + + -- Matthias Klose Sat, 09 May 2015 19:24:57 +0200 + +gcc-5 (5.1.1-5ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 05 May 2015 17:52:14 +0200 + +gcc-5 (5.1.1-5) unstable; urgency=medium + + * Update to SVN 20150507 (r222873, 5.1.1) from the gcc-5-branch. + * Fix 32bit libstdc++ symbols files for kfreebsd-amd64. + * libx32phobos-dev: Don't depend on libx32z-dev, when not available. + * Fix gotools configury. + * Configure with + --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98 + While libstdc++ provides a dual ABI to support both the c++98 and c++11 + ABI, there is no committment on compatibility of the old experimental + c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5. + Closes: #784655. + + -- Matthias Klose Fri, 08 May 2015 18:48:49 +0200 + +gcc-5 (5.1.1-4) unstable; urgency=medium + + * Update to SVN 20150503 (r222751, 5.1.1) from the gcc-5-branch. + - Fix build failure on alpha. + * Fix applying the cross-biarch patch for stage1 builds. + * Fix libstdc++ symbols files for kfreebsd-amd64. + * Remove libn32phobos-5-dev from the control file. + * Really disable gnat on x32. + + -- Matthias Klose Sat, 02 May 2015 19:18:57 +0200 + +gcc-5 (5.1.1-3) unstable; urgency=high + + * Update to SVN 20150430 (r222660, 5.1.1) from the gcc-5-branch. + * Fix libstdc++ symbols files for kfreebsd-i386. + * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk. + LP: #1439451. + * Backport patches for gccgo (not yet applied): + - Consider multi-result calls in escape analysis. + - Propagate escape info from closures to enclosed variables. + - Analyze function values and conversions. + - Use backend interface for stack allocation. + * More libstdc++ symbols updates for the Hurd and KFreeBSD. + * config-ml.in: Add D support. + * Update cross-biarch.diff to support D and Go. + * Apply the cross-biarch patch for every cross build. + + -- Matthias Klose Thu, 30 Apr 2015 15:42:05 +0200 + +gcc-5 (5.1.1-2) unstable; urgency=medium + + * Update to SVN 20150428 (r222550, 5.1.1) from the gcc-5-branch. + * Fix the gnat build dependency. + * Don't build go and gofmt for cross compilers. + + -- Matthias Klose Tue, 28 Apr 2015 23:57:14 +0200 + +gcc-5 (5.1.1-1) unstable; urgency=medium + + * GCC 5.1.0 release. + * Update to SVN 20150424 (r222416, 5.1.1) from the gcc-5-branch. + * Update NEWS files. + * Apply the ada-bootstrap-compare patch for snapshot builds as well. + * Update libasan, libgomp and libstdc++ symbols files. + * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols + files should be uptodate now. + * Split out the sjlj build related things from the ada-acats patch into + a new ada-acats-sjlj patch. + * Don't build libx32phobos-5-dev when not building x32 multilibs. + * Fix standard C++ include directory for cross builds. Closes: #783241. + * Ignore bootstrap comparison failure on ia64. Filed upstream as + PR middle-end/65874. + * gccgo: Add (don't yet apply) a patch to implement escape analysis (taken + from the trunk). Turned off by default, enable with -fgo-optimize-alloc. + + -- Matthias Klose Fri, 24 Apr 2015 18:42:39 +0200 + +gcc-5 (5.1.0-0ubuntu11) vivid; urgency=medium + + * GCC 5.1.0 release. + * Update NEWS files. + * gccgo: Implement escape analysis (taken from the trunk). Turned off + by default, enable with -fgo-optimize-alloc. + + -- Matthias Klose Wed, 22 Apr 2015 14:54:11 +0200 + +gcc-5 (5.1~rc2-0ubuntu12) vivid; urgency=medium + + * Fix libasan symbols. + + -- Matthias Klose Wed, 22 Apr 2015 00:12:03 +0200 + +gcc-5 (5.1~rc2-0ubuntu11) vivid; urgency=medium + + * GCC 5.1 release candidate 2. + * Update to SVN 20150421 (r222253) from the gcc-5-branch. + + -- Matthias Klose Tue, 21 Apr 2015 18:53:06 +0200 + +gcc-5 (5.1~rc1-0ubuntu12) vivid; urgency=medium + + * Update to SVN 20150419 (r222218) from the gcc-5-branch. + * Apply the ada-bootstrap-compare patch for snapshot builds as well. + * Update libasan, libgomp and libstdc++ symbols files. + * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols + files should be uptodate now. + * Split out the sjlj build related things from the ada-acats patch into + a new ada-acats-sjlj patch. + * Ignore bootstrap comparison failure on ia64. Filed upstream as + PR middle-end/65874. + + -- Matthias Klose Sun, 19 Apr 2015 15:57:49 +0200 + +gcc-5 (5.1~rc1-0ubuntu11) vivid; urgency=medium + + * GCC 5.1 release candidate 1. + * Update to SVN 20150414 (r222066) from the gcc-5-branch. + * Update GDC to the gcc-5 branch, 20140414. + * Don't build libobjc, when not building the common libraries. + * Don't run the gccjit tests on KFreeBSD. Works around #782444:. + * Fix not building libs built by the next GCC version. + + -- Matthias Klose Tue, 14 Apr 2015 03:01:02 +0200 + +gcc-5 (5-20150410-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150410. + * Fix /usr/include/c++/5.0.0 symlink. + * Re-enable building the D frontend. Closes: #782254. + * gccgo: Install libnetgo. + + -- Matthias Klose Sat, 11 Apr 2015 02:21:24 +0200 + +gcc-5 (5-20150404-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150404. + * Don't explicitly configure --with-gxx-include-dir and an absolute path, + so the toolchain remains relocatible. Instead, canonicalize the include + path names at runtime. + + -- Matthias Klose Sat, 04 Apr 2015 23:34:58 +0200 + +gcc-5 (5-20150401-0ubuntu12) vivid; urgency=medium + + * Update to SVN 20150401. + * Don't link libgnatprj using --no-allow-shlib-undefined on older releases. + * Don't build libmpx on older releases. + * Remove the work around to build libgccjit on arm64. + * Fix the libgccjit build using the just built compiler. + * Don't break other gcc, gcj, gnat -base packages for backports, only + needed for dist-upgrades. + * Don't add -gtoggle to STAGE3_CFLAGS (disabling the bootstrap comparison). + Instead, ignore the one differing file (gcc/ada/a-except.o) for now. + See #781457, PR ada/65618. + * Update libasan, libtsan, libgfortran and libstdc++ symbols files. + * Add symbols files for libmpx, libgccjit and libcc1. + + -- Matthias Klose Wed, 01 Apr 2015 11:27:39 +0200 + +gcc-5 (5-20150329-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150329. + + -- Matthias Klose Sun, 29 Mar 2015 19:13:54 +0200 + +gcc-5 (5-20150329-1) experimental; urgency=medium + + * Update to SVN 20150329. + * Fix building the gnat-5-doc package. + * Fix gnat build dependencies. + * Fix installation of the gnat upstream ChangeLog. Closes: #781451. + * Restore the bootstrap-debug.mk patch to the ada-mips patch + for debugging purposes. See #781457. + + -- Matthias Klose Sun, 29 Mar 2015 18:53:29 +0200 + +gcc-5 (5-20150328-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150328. + * Fix building the gnat-5-doc package. + * Fix installation of the gnat upstream ChangeLog. Closes: #781451. + * Restore the bootstrap-debug.mk patch to the ada-mips patch + for debugging purposes. See #781457. + + -- Matthias Klose Sat, 28 Mar 2015 15:08:55 +0100 + +gcc-5 (5-20150327-1) experimental; urgency=medium + + * Update to SVN 20150327. + * Update libcc1 build support. + * Fix syntax in libstdc++ symbols file. Closes: #780991. + * Fix PR go/65417: Add support for PPC32 relocs to debug/elf. LP: #1431388. + * Fix PR go/65462: Fix go get dependencies. LP: #1432497. + * Limit the omp.h multilib fix to Linux. Closes: #778440. + * For ICEs, dump the preprocessed source file to stderr when in a + distro build environment. + * Remove the bootstrap-debug.mk patch from the ada-mips patch. + * gnat related work (partly based on #780640): + - Update patches for GCC 5. + - Build the gnat packages from the gcc-5 source package. + - Don't build a gnat-base package from the gcc-5 source. + - Stop building the gnat-5-sjlj package for now, patch needs an update. + - Fix the packaging when not building the gnat-5-sjlj package. + - Don't apply the ada-symbolic-tracebacks, patch needs an update. + - Fix the libgnatprj build, build with -DIN_GCC. + * Replace cloog/ppl build bits with isl build bits. + + -- Matthias Klose Fri, 27 Mar 2015 21:05:16 +0100 + +gcc-5 (5-20150321-1ubuntu12) vivid; urgency=medium + + * Update to SVN 20150321. + * Move the libcc1plugin from the gcc-5-plugin-dev package into the + gcc-5 package. + * Configure with --enable-checking=yes (instead of =release). + + -- Matthias Klose Sat, 21 Mar 2015 15:28:30 +0100 + +gcc-5 (5-20150316-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150316. + + -- Matthias Klose Mon, 16 Mar 2015 11:56:03 +0100 + +gcc-5 (5-20150314-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150314. + + -- Matthias Klose Sat, 14 Mar 2015 14:29:28 +0100 + +gcc-5 (5-20150312-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150312. + - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032. + * Fix libmpx multilib builds. + + -- Matthias Klose Thu, 12 Mar 2015 23:11:21 +0100 + +gcc-5 (5-20150311-1ubuntu12) vivid; urgency=medium + + * Update to SVN 20150311. + - libgo: Add arm64 to the pointer size map (Michael Hudson). + - libgo: Add ppc to the pointer size map. + * Enable libmpx builds on amd64 and i386. + * Update the gcc-multiarch patch for mips64 (YunQiang Su). + Closes: #776402, #780271. + + -- Matthias Klose Wed, 11 Mar 2015 19:56:38 +0100 + +gcc-5 (5-20150307-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150307. + - Update gccgo to Go 1.4.2. + * Enable libsanitizer for AArch64 and POWERPC LE (asan, ubsan). + * Remove the support to build empty libsanitizer packages on powerpc + and ppc64; libsanitizer should be stable on these architectures. + * Fix libcc1.so symlink. Closes: #779341. + * Revert the fix for PR65150 on armel and armhf to restore bootstrap. + * Don't strip the libgo library, or some things won't work as documented, + like runtime.Callers. Still keep the -dbg packages and check if some + debug information can be stripped. + * gccgo-5: Install alternatives for go and gofmt. + + -- Matthias Klose Sat, 07 Mar 2015 12:36:40 +0100 + +gcc-5 (5-20150226-1) experimental; urgency=medium + + * Update to SVN 20150226. + - Fix PR c/65040 (closes: #778514), PR tree-optimization/65053 + (closes: #778070, #778071), PR c++/64898 (closes: #778472). + * Allow not to strip the compiler executables to be able to print backtraces + for ICEs. + * Fix gnat build on mips64el (James Cowgill). Addresses: #779191. + * Fix the hppa64 cross build (John David Anglin). Closes: #778658. + * Fix libstdc++ pretty printers for Python3. Closes: #778436. + + -- Matthias Klose Thu, 26 Feb 2015 08:18:23 +0100 + +gcc-5 (5-20150205-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150205. + + -- Matthias Klose Thu, 05 Feb 2015 01:57:43 +0100 + +gcc-5 (5-20150203-0ubuntu12) vivid; urgency=medium + + * Don't disable bootstrap mode for the jit build on arm64, gets + miscompiled. + + -- Matthias Klose Tue, 03 Feb 2015 13:39:02 +0100 + +gcc-5 (5-20150203-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150203. + + -- Matthias Klose Tue, 03 Feb 2015 13:39:02 +0100 + +gcc-5 (5-20150129-0ubuntu2) vivid; urgency=medium + + * Fix the libstdc++ build. + + -- Matthias Klose Thu, 29 Jan 2015 19:09:16 +0100 + +gcc-5 (5-20150129-0ubuntu1) vivid; urgency=medium + + * Update to SVN 20150129. + * Configure --with-default-libstdcxx-abi=c++11 for development, + --with-default-libstdcxx-abi=c++98 for backports. + + -- Matthias Klose Thu, 29 Jan 2015 17:47:03 +0100 + +gcc-5 (5-20150128-0ubuntu1) vivid; urgency=medium + + * Update to SVN 20150128. + * Update GDC for GCC 5. + * Build GDC multilib packages. + * Update cross-install-location.diff for gcc-5. Closes: #776100. + * Re-enable libgccjit on AArch64. + + -- Matthias Klose Wed, 28 Jan 2015 23:30:09 +0100 + +gcc-5 (5-20150127-0ubuntu2) vivid; urgency=medium + + * Disable libgccjit on AArch64, compiler issue + + -- Matthias Klose Tue, 27 Jan 2015 18:05:12 +0100 + +gcc-5 (5-20150127-0ubuntu1) vivid; urgency=medium + + * Update to SVN 20150127. + * Disable libgccjit on AArch64. + + -- Matthias Klose Tue, 27 Jan 2015 14:39:03 +0100 + +gcc-5 (5-20150126-0ubuntu3) vivid; urgency=medium + + * Update to SVN 20150126. + * More symbol file updates. + * Fix libbacktrace and libsanitizer multilib builds. + * Fix libssp builds on 64bit architectures. + + -- Matthias Klose Mon, 26 Jan 2015 18:22:53 +0100 + +gcc-5 (5-20150121-0ubuntu2) vivid; urgency=medium + + * GCC 5. + * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev, + libgccjit-5-dbg, libgccjit-5-doc. + * Update symbols files (still incomplete). + + -- Matthias Klose Tue, 20 Jan 2015 12:45:13 +0100 + +gcc-4.9 (4.9.2-10ubuntu2) vivid; urgency=medium + + * Update to SVN 20150116 (r219730) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + PR middle-end/63704 (ice on valid), PR target/64513 (x86), + PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), + PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), + PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on + valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 + (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), + PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), + PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), + PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 + (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), + PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), + PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid). + * Update the Linaro support to the 4.9-2015.01 release. + + -- Matthias Klose Fri, 16 Jan 2015 14:28:09 +0100 + +gcc-4.9 (4.9.2-10ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 31 Dec 2014 04:54:06 +0100 + +gcc-4.9 (4.9.2-10) unstable; urgency=medium + + * Really add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Use the final binutils 2.25 release. + * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su). + + -- Matthias Klose Thu, 25 Dec 2014 18:10:51 +0100 + +gcc-4.9 (4.9.2-9) unstable; urgency=medium + + * Update to SVN 20141220 (r218987) from the gcc-4_9-branch. + - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955, + PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code). + * Add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Fix mips64el multilib cross builds. Closes: #772665. + * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package. + + -- Matthias Klose Sat, 20 Dec 2014 07:47:15 +0100 + +gcc-4.9 (4.9.2-8) unstable; urgency=medium + + * Update to SVN 20141214 (r218721) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong + code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice). + * Don't build libphobos multilibs, there is no gdc-multilib build. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Sun, 14 Dec 2014 18:43:49 +0100 + +gcc-4.9 (4.9.2-7ubuntu3) vivid; urgency=medium + + * Fix the powerpc build. + + -- Matthias Klose Thu, 11 Dec 2014 15:52:15 +0100 + +gcc-4.9 (4.9.2-7ubuntu2) vivid; urgency=medium + + * Update to SVN 20141211 (r218620) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization). + * Don't build libphobos multilibs, there is no gdc-multilib built. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Thu, 11 Dec 2014 12:04:13 +0100 + +gcc-4.9 (4.9.2-7ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 10 Dec 2014 15:27:33 +0100 + +gcc-4.9 (4.9.2-7) unstable; urgency=medium + + * Update to SVN 20141210 (r218575) from the gcc-4_9-branch. + - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686, + PR bootstrap/64213. + - libgcc hppa backports. + * Fix cross builds with dpkg-architecture unconditionally exporting + target variables. For now specify the target architecture + in debian/target. This still needs to work with older dpkg versions, + so don't "simplify" the packaging. Closes: #768167. + + -- Matthias Klose Wed, 10 Dec 2014 13:32:42 +0100 + +gcc-4.9 (4.9.2-6ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 09 Dec 2014 13:47:24 +0100 + +# For older changelog entries, run 'apt-get changelog gcc-4.9-base' --- gcc-7-7.3.0.orig/debian/compat +++ gcc-7-7.3.0/debian/compat @@ -0,0 +1 @@ +9 --- gcc-7-7.3.0.orig/debian/control +++ gcc-7-7.3.0/debian/control @@ -0,0 +1,2111 @@ +Source: gcc-7 +Section: devel +Priority: optional +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 4.2.1 +Build-Depends: debhelper (>= 9.20141010), dpkg-dev (>= 1.17.14), g++-multilib [amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32] , + libc6.1-dev (>= 2.13-0ubuntu6) [alpha ia64] | libc0.3-dev (>= 2.13-0ubuntu6) [hurd-i386] | libc0.1-dev (>= 2.13-0ubuntu6) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-0ubuntu6), libc6-dev (>= 2.13-31) [armel armhf], libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386], libc6-dev-armhf [armel], libhfgcc1 [armel], libc6-dev-armel [armhf], libsfgcc1 [armhf], libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k], + m4, libtool, autoconf2.64, gcc-8-base, + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + zlib1g-dev, systemtap-sdt-dev [linux-any kfreebsd-any hurd-any], + binutils:native (>= 2.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, sharutils, + procps, gnat-7:native [!m32r !riscv64 !sh3 !sh3eb !sh4eb !m68k], g++-7:native, netbase, + libisl-dev, libmpc-dev (>= 1.1), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), lib32z1-dev [amd64 kfreebsd-amd64], lib64z1-dev [i386], libx32z1-dev [amd64 kfreebsd-amd64 i386], + dejagnu [!m68k !hurd-amd64 !hurd-i386 !hurd-alpha !kfreebsd-amd64 !kfreebsd-i386 !kfreebsd-alpha], coreutils (>= 2.26) | realpath (>= 1.9.12), chrpath, lsb-release, quilt, + pkg-config, libgc-dev, + g++-7-alpha-linux-gnu [alpha] , gobjc-7-alpha-linux-gnu [alpha] , gfortran-7-alpha-linux-gnu [alpha] , gdc-7-alpha-linux-gnu [alpha] , gccgo-7-alpha-linux-gnu [alpha] , gnat-7-alpha-linux-gnu [alpha] , g++-7-x86-64-linux-gnu [amd64] , gobjc-7-x86-64-linux-gnu [amd64] , gfortran-7-x86-64-linux-gnu [amd64] , gdc-7-x86-64-linux-gnu [amd64] , gccgo-7-x86-64-linux-gnu [amd64] , gnat-7-x86-64-linux-gnu [amd64] , g++-7-arm-linux-gnueabi [armel] , gobjc-7-arm-linux-gnueabi [armel] , gfortran-7-arm-linux-gnueabi [armel] , gdc-7-arm-linux-gnueabi [armel] , gccgo-7-arm-linux-gnueabi [armel] , gnat-7-arm-linux-gnueabi [armel] , g++-7-arm-linux-gnueabihf [armhf] , gobjc-7-arm-linux-gnueabihf [armhf] , gfortran-7-arm-linux-gnueabihf [armhf] , gdc-7-arm-linux-gnueabihf [armhf] , gccgo-7-arm-linux-gnueabihf [armhf] , gnat-7-arm-linux-gnueabihf [armhf] , g++-7-aarch64-linux-gnu [arm64] , gobjc-7-aarch64-linux-gnu [arm64] , gfortran-7-aarch64-linux-gnu [arm64] , gdc-7-aarch64-linux-gnu [arm64] , gccgo-7-aarch64-linux-gnu [arm64] , gnat-7-aarch64-linux-gnu [arm64] , g++-7-i686-linux-gnu [i386] , gobjc-7-i686-linux-gnu [i386] , gfortran-7-i686-linux-gnu [i386] , gdc-7-i686-linux-gnu [i386] , gccgo-7-i686-linux-gnu [i386] , gnat-7-i686-linux-gnu [i386] , g++-7-mips-linux-gnu [mips] , gobjc-7-mips-linux-gnu [mips] , gfortran-7-mips-linux-gnu [mips] , gdc-7-mips-linux-gnu [mips] , gccgo-7-mips-linux-gnu [mips] , gnat-7-mips-linux-gnu [mips] , g++-7-mipsel-linux-gnu [mipsel] , gobjc-7-mipsel-linux-gnu [mipsel] , gfortran-7-mipsel-linux-gnu [mipsel] , gdc-7-mipsel-linux-gnu [mipsel] , gccgo-7-mipsel-linux-gnu [mipsel] , gnat-7-mipsel-linux-gnu [mipsel] , g++-7-mips64-linux-gnuabi64 [mips64] , gobjc-7-mips64-linux-gnuabi64 [mips64] , gfortran-7-mips64-linux-gnuabi64 [mips64] , gdc-7-mips64-linux-gnuabi64 [mips64] , gccgo-7-mips64-linux-gnuabi64 [mips64] , gnat-7-mips64-linux-gnuabi64 [mips64] , g++-7-mips64el-linux-gnuabi64 [mips64el] , gobjc-7-mips64el-linux-gnuabi64 [mips64el] , gfortran-7-mips64el-linux-gnuabi64 [mips64el] , gdc-7-mips64el-linux-gnuabi64 [mips64el] , gccgo-7-mips64el-linux-gnuabi64 [mips64el] , gnat-7-mips64el-linux-gnuabi64 [mips64el] , g++-7-mips64-linux-gnuabin32 [mipsn32] , gobjc-7-mips64-linux-gnuabin32 [mipsn32] , gfortran-7-mips64-linux-gnuabin32 [mipsn32] , gdc-7-mips64-linux-gnuabin32 [mipsn32] , gccgo-7-mips64-linux-gnuabin32 [mipsn32] , gnat-7-mips64-linux-gnuabin32 [mipsn32] , g++-7-powerpc-linux-gnu [powerpc] , gobjc-7-powerpc-linux-gnu [powerpc] , gfortran-7-powerpc-linux-gnu [powerpc] , gdc-7-powerpc-linux-gnu [powerpc] , gccgo-7-powerpc-linux-gnu [powerpc] , gnat-7-powerpc-linux-gnu [powerpc] , g++-7-powerpc-linux-gnuspe [powerpcspe] , gobjc-7-powerpc-linux-gnuspe [powerpcspe] , gfortran-7-powerpc-linux-gnuspe [powerpcspe] , gdc-7-powerpc-linux-gnuspe [powerpcspe] , gccgo-7-powerpc-linux-gnuspe [powerpcspe] , gnat-7-powerpc-linux-gnuspe [powerpcspe] , g++-7-powerpc64-linux-gnu [ppc64] , gobjc-7-powerpc64-linux-gnu [ppc64] , gfortran-7-powerpc64-linux-gnu [ppc64] , gdc-7-powerpc64-linux-gnu [ppc64] , gccgo-7-powerpc64-linux-gnu [ppc64] , gnat-7-powerpc64-linux-gnu [ppc64] , g++-7-powerpc64le-linux-gnu [ppc64el] , gobjc-7-powerpc64le-linux-gnu [ppc64el] , gfortran-7-powerpc64le-linux-gnu [ppc64el] , gdc-7-powerpc64le-linux-gnu [ppc64el] , gccgo-7-powerpc64le-linux-gnu [ppc64el] , gnat-7-powerpc64le-linux-gnu [ppc64el] , g++-7-m68k-linux-gnu [m68k] , gobjc-7-m68k-linux-gnu [m68k] , gfortran-7-m68k-linux-gnu [m68k] , gdc-7-m68k-linux-gnu [m68k] , g++-7-sh4-linux-gnu [sh4] , gobjc-7-sh4-linux-gnu [sh4] , gfortran-7-sh4-linux-gnu [sh4] , gnat-7-sh4-linux-gnu [sh4] , g++-7-sparc64-linux-gnu [sparc64] , gobjc-7-sparc64-linux-gnu [sparc64] , gfortran-7-sparc64-linux-gnu [sparc64] , gdc-7-sparc64-linux-gnu [sparc64] , gccgo-7-sparc64-linux-gnu [sparc64] , gnat-7-sparc64-linux-gnu [sparc64] , g++-7-s390x-linux-gnu [s390x] , gobjc-7-s390x-linux-gnu [s390x] , gfortran-7-s390x-linux-gnu [s390x] , gdc-7-s390x-linux-gnu [s390x] , gccgo-7-s390x-linux-gnu [s390x] , gnat-7-s390x-linux-gnu [s390x] , g++-7-x86-64-linux-gnux32 [x32] , gobjc-7-x86-64-linux-gnux32 [x32] , gfortran-7-x86-64-linux-gnux32 [x32] , gdc-7-x86-64-linux-gnux32 [x32] , gccgo-7-x86-64-linux-gnux32 [x32] , gnat-7-x86-64-linux-gnux32 [x32] , g++-7-mips64el-linux-gnuabin32 [mipsn32el] , gobjc-7-mips64el-linux-gnuabin32 [mipsn32el] , gfortran-7-mips64el-linux-gnuabin32 [mipsn32el] , gdc-7-mips64el-linux-gnuabin32 [mipsn32el] , gccgo-7-mips64el-linux-gnuabin32 [mipsn32el] , gnat-7-mips64el-linux-gnuabin32 [mipsn32el] , g++-7-mipsisa32r6-linux-gnu [mipsr6] , gobjc-7-mipsisa32r6-linux-gnu [mipsr6] , gfortran-7-mipsisa32r6-linux-gnu [mipsr6] , gdc-7-mipsisa32r6-linux-gnu [mipsr6] , gccgo-7-mipsisa32r6-linux-gnu [mipsr6] , gnat-7-mipsisa32r6-linux-gnu [mipsr6] , g++-7-mipsisa32r6el-linux-gnu [mipsr6el] , gobjc-7-mipsisa32r6el-linux-gnu [mipsr6el] , gfortran-7-mipsisa32r6el-linux-gnu [mipsr6el] , gdc-7-mipsisa32r6el-linux-gnu [mipsr6el] , gccgo-7-mipsisa32r6el-linux-gnu [mipsr6el] , gnat-7-mipsisa32r6el-linux-gnu [mipsr6el] , g++-7-mipsisa64r6-linux-gnuabi64 [mips64r6] , gobjc-7-mipsisa64r6-linux-gnuabi64 [mips64r6] , gfortran-7-mipsisa64r6-linux-gnuabi64 [mips64r6] , gdc-7-mipsisa64r6-linux-gnuabi64 [mips64r6] , gccgo-7-mipsisa64r6-linux-gnuabi64 [mips64r6] , gnat-7-mipsisa64r6-linux-gnuabi64 [mips64r6] , g++-7-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gobjc-7-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gfortran-7-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gdc-7-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gccgo-7-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gnat-7-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , g++-7-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gobjc-7-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gfortran-7-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gdc-7-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gccgo-7-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gnat-7-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , g++-7-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gobjc-7-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gfortran-7-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gdc-7-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gccgo-7-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gnat-7-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-7-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-7-debian +XS-Testsuite: autopkgtest + +Package: gcc-7-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-7-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libcilkrts}, ${dep:libvtv}, + ${dep:libmpx}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Replaces: gccgo-7 (<< ${gcc:Version}) +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libgcc4 +X-DH-Build-For-Type: target +Architecture: hppa +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Section: libs +Priority: required +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: libgcc4-dbg +X-DH-Build-For-Type: target +Architecture: hppa +Multi-Arch: same +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgcc4 (= ${gcc:EpochVersion}), ${misc:Depends} +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: lib64gcc-7-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-7-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:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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-7-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-7-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:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-multilib (<< ${gcc:Version}) +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libhfgcc-7-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-7-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:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-multilib (<< ${gcc:Version}) +Description: GCC support library (hard float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libsfgcc-7-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-7-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:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-multilib (<< ${gcc:Version}) +Description: GCC support library (soft float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libn32gcc-7-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-7-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:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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-7-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-7-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:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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-7 +Architecture: any +Section: devel +Priority: optional +Depends: cpp-7 (= ${gcc:Version}), gcc-7-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: gccgo-7 (<< ${gcc:Version}), cpp-7 (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc-7-doc (>= ${gcc:SoftVersion}), + gcc-7-locales (>= ${gcc:SoftVersion}), + libgcc1-dbg (>= ${libgcc:Version}), + libgomp1-dbg (>= ${gcc:Version}), + libitm1-dbg (>= ${gcc:Version}), + libatomic1-dbg (>= ${gcc:Version}), + libasan4-dbg (>= ${gcc:Version}), + liblsan0-dbg (>= ${gcc:Version}), + libtsan0-dbg (>= ${gcc:Version}), + libubsan0-dbg (>= ${gcc:Version}), + libcilkrts5-dbg (>= ${gcc:Version}), + libmpx2-dbg (>= ${gcc:Version}), + libquadmath0-dbg (>= ${gcc:Version}) +Provides: c-compiler +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-7-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${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-7-test-results +Architecture: any +Section: devel +Priority: optional +Depends: gcc-7-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-7-plugin-dev +Architecture: any +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), libmpc-dev (>= 1.1), ${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-7-hppa64-linux-gnu +Architecture: hppa amd64 i386 x32 +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${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-7 +Architecture: any +Section: interpreters +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-7-locales (>= ${gcc:SoftVersion}) +Replaces: gccgo-7 (<< ${gcc:Version}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. + +Package: cpp-7-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-7-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info format. + +Package: gcc-7-locales +Architecture: all +Section: devel +Priority: optional +Depends: gcc-7-base (>= ${gcc:SoftVersion}), cpp-7 (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc-7 (>= ${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++-7 +Architecture: any +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${gcc:Version}), libstdc++-7-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc-7-doc (>= ${gcc:SoftVersion}), libstdc++6-7-dbg (>= ${gcc:Version}) +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + +Package: g++-7-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), g++-7 (= ${gcc:Version}), gcc-7-multilib (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +Description: GNU C++ compiler (multilib support) + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libgomp1-armel [armel], libgomp1-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libgomp1-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgomp1 (= ${gcc:Version}), ${misc:Depends} +Provides: libgomp1-dbg-armel [armel], libgomp1-dbg-armhf [armhf] +Multi-Arch: same +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: GCC OpenMP (GOMP) support library (32bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib32gomp1 (= ${gcc:Version}), ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (64bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp1-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib64gomp1 (= ${gcc:Version}), ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (64bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (n32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp1-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libn32gomp1 (= ${gcc:Version}), ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (n32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + +Package: libasan4 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libasan4-armel [armel], libasan4-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libasan4-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libasan4 (= ${gcc:Version}), ${misc:Depends} +Provides: libasan4-dbg-armel [armel], libasan4-dbg-armhf [armhf] +Multi-Arch: same +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan4 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan4-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-7-base (= ${gcc:Version}), lib32asan4 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan4 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan4-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-7-base (= ${gcc:Version}), lib64asan4 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan4 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan4-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32asan4 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libhfasan4 +X-DH-Build-For-Type: target +Section: libs +Architecture: armel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: libasan4-armhf [armel] +Description: AddressSanitizer -- a fast memory error detector (hard float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libhfasan4-dbg +X-DH-Build-For-Type: target +Architecture: armel +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfasan4 (= ${gcc:Version}), ${misc:Depends} +Conflicts: libasan4-armel [armhf] +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. + +Package: libsfasan4 +X-DH-Build-For-Type: target +Section: libs +Architecture: armhf +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (soft float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libsfasan4-dbg +X-DH-Build-For-Type: target +Architecture: armhf +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfasan4 (= ${gcc:Version}), ${misc:Depends} +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. + +Package: libubsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libubsan0-armel [armel], libubsan0-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (runtime) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libubsan0-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libubsan0 (= ${gcc:Version}), ${misc:Depends} +Provides: libubsan0-dbg-armel [armel], libubsan0-dbg-armhf [armhf] +Multi-Arch: same +Description: UBSan -- undefined behaviour sanitizer (debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib32ubsan0 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: UBSan -- undefined behaviour sanitizer (32bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib32ubsan0-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-7-base (= ${gcc:Version}), lib32ubsan0 (= ${gcc:Version}), ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib64ubsan0 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (64bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib64ubsan0-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-7-base (= ${gcc:Version}), lib64ubsan0 (= ${gcc:Version}), ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +#Package: libn32ubsan`'UBSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +#Package: libn32ubsan`'UBSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +Package: libx32ubsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (x32) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libx32ubsan0-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32ubsan0 (= ${gcc:Version}), ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libhfubsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: armel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: libubsan0-armhf [armel] +Description: UBSan -- undefined behaviour sanitizer (hard float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libhfubsan0-dbg +X-DH-Build-For-Type: target +Architecture: armel +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfubsan0 (= ${gcc:Version}), ${misc:Depends} +Conflicts: libubsan0-armel [armhf] +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++. + +Package: libsfubsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: armhf +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (soft float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libsfubsan0-dbg +X-DH-Build-For-Type: target +Architecture: armhf +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfubsan0 (= ${gcc:Version}), ${misc:Depends} +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++. + +Package: libcilkrts5 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libcilkrts5-armel [armel], libcilkrts5-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Intel Cilk Plus language extensions (runtime) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libcilkrts5-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libcilkrts5 (= ${gcc:Version}), ${misc:Depends} +Provides: libcilkrts5-dbg-armel [armel], libcilkrts5-dbg-armhf [armhf] +Multi-Arch: same +Description: Intel Cilk Plus language extensions (debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib32cilkrts5 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: Intel Cilk Plus language extensions (32bit) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib32cilkrts5-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-7-base (= ${gcc:Version}), lib32cilkrts5 (= ${gcc:Version}), ${misc:Depends} +Description: Intel Cilk Plus language extensions (32 bit debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib64cilkrts5 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Intel Cilk Plus language extensions (64bit) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib64cilkrts5-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-7-base (= ${gcc:Version}), lib64cilkrts5 (= ${gcc:Version}), ${misc:Depends} +Description: Intel Cilk Plus language extensions (64bit debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libx32cilkrts5 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Intel Cilk Plus language extensions (x32) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libx32cilkrts5-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32cilkrts5 (= ${gcc:Version}), ${misc:Depends} +Description: Intel Cilk Plus language extensions (x32 debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libhfcilkrts5 +X-DH-Build-For-Type: target +Section: libs +Architecture: armel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: libcilkrts5-armhf [armel] +Description: Intel Cilk Plus language extensions (hard float ABI) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libhfcilkrts5-dbg +X-DH-Build-For-Type: target +Architecture: armel +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfcilkrts5 (= ${gcc:Version}), ${misc:Depends} +Conflicts: libcilkrts5-armel [armhf] +Description: Intel Cilk Plus language extensions (hard float ABI debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libsfcilkrts5 +X-DH-Build-For-Type: target +Section: libs +Architecture: armhf +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Intel Cilk Plus language extensions (soft float ABI) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libsfcilkrts5-dbg +X-DH-Build-For-Type: target +Architecture: armhf +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfcilkrts5 (= ${gcc:Version}), ${misc:Depends} +Description: Intel Cilk Plus language extensions (soft float ABI debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libgccjit-7-doc +Section: doc +Architecture: all +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-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-7-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgccjit0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Suggests: libgccjit-7-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++-7 +Architecture: any +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gobjc-7 (= ${gcc:Version}), g++-7 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-7-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-7-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++-7-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gobjc++-7 (= ${gcc:Version}), g++-7-multilib (= ${gcc:Version}), gobjc-7-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-7 +Architecture: any +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-7-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc-7-doc (>= ${gcc:SoftVersion}), libobjc4-dbg (>= ${gcc:Version}) +Provides: objc-compiler +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc-7-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gobjc-7 (= ${gcc:Version}), gcc-7-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-7-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgcc-7-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-7-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-7-base (= ${gcc:Version}), lib64gcc-7-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-7-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-7-base (= ${gcc:Version}), lib32gcc-7-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-7-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libn32gcc-7-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-7-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32gcc-7-dev (= ${gcc:Version}), libx32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libhfobjc-7-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfgcc-7-dev (= ${gcc:Version}), libhfobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libsfobjc-7-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfgcc-7-dev (= ${gcc:Version}), libsfobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (soft float development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: gfortran-7 +Architecture: any +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${gcc:Version}), libgfortran-7-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran-7-doc, + libgfortran4-dbg (>= ${gcc:Version}), + libcoarrays-dev +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gfortran-7-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gfortran-7 (= ${gcc:Version}), gcc-7-multilib (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Fortran compiler (multilib support) + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gfortran-7-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-7-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran compiler in info format. + +Package: libgfortran-7-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgcc-7-dev (= ${gcc:Version}), libgfortran4 (>= ${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-7-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-7-base (= ${gcc:Version}), lib64gcc-7-dev (= ${gcc:Version}), lib64gfortran4 (>= ${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-7-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-7-base (= ${gcc:Version}), lib32gcc-7-dev (= ${gcc:Version}), lib32gfortran4 (>= ${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-7-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libn32gcc-7-dev (= ${gcc:Version}), libn32gfortran4 (>= ${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-7-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32gcc-7-dev (= ${gcc:Version}), libx32gfortran4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libhfgfortran-7-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfgcc-7-dev (= ${gcc:Version}), libhfgfortran4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libsfgfortran-7-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfgcc-7-dev (= ${gcc:Version}), libsfgfortran4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (soft float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libgfortran4 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libgfortran4-armel [armel], libgfortran4-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libgfortran4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Provides: libgfortran4-dbg-armel [armel], libgfortran4-dbg-armhf [armhf] +Multi-Arch: same +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgfortran4 (= ${gcc:Version}), libgcc1-dbg (>= ${libgcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib64gfortran4 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib64gfortran4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib64gfortran4 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib32gfortran4 +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-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib32gfortran4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib32gfortran4 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (32 bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libn32gfortran4 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libn32gfortran4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libn32gfortran4 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libx32gfortran4 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libx32gfortran4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32gfortran4 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libhfgfortran4 +X-DH-Build-For-Type: target +Section: libs +Architecture: armel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: libgfortran4-armhf [armel] +Description: Runtime library for GNU Fortran applications (hard float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libhfgfortran4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: armel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfgfortran4 (= ${gcc:Version}), ${misc:Depends} +Conflicts: libgfortran4-dbg-armhf [armel] +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libsfgfortran4 +X-DH-Build-For-Type: target +Section: libs +Architecture: armhf +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: libgfortran4-armel [armhf] +Description: Runtime library for GNU Fortran applications (soft float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libsfgfortran4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: armhf +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfgfortran4 (= ${gcc:Version}), ${misc:Depends} +Conflicts: libgfortran4-dbg-armel [armhf] +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: gccgo-7 +Architecture: any +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${gcc:Version}), libgo11 (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo-7-doc, libgo11-dbg (>= ${gcc:Version}) +Conflicts: ${golang:Conflicts} +Breaks: libgo11 (<< 7.2.0-18) +Replaces: libgo11 (<< 7.2.0-18) +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-7-multilib +Architecture: amd64 armel armhf i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gccgo-7 (= ${gcc:Version}), gcc-7-multilib (= ${gcc:Version}), ${dep:libgobiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +Breaks: lib32go11 (<< 7.2.0-18), + libn32go11 (<< 7.2.0-18), + libx32go11 (<< 7.2.0-18), + lib64go11 (<< 7.2.0-18) +Replaces: lib32go11 (<< 7.2.0-18), + libn32go11 (<< 7.2.0-18), + libx32go11 (<< 7.2.0-18), + lib64go11 (<< 7.2.0-18) +Description: GNU Go compiler (multilib support) + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gccgo-7-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-7-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Go compiler (gccgo) + Documentation for the GNU Go compiler in info format. + +Package: libgo11 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libgo11-armel [armel], libgo11-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-7-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: libgo11-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Provides: libgo11-dbg-armel [armel], libgo11-dbg-armhf [armhf] +Multi-Arch: same +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgo11 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: lib64go11 +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-7-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: lib64go11-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib64go11 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: lib32go11 +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-7-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: lib32go11-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib32go11 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libn32go11 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-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: libn32go11-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libn32go11 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libx32go11 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-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: libx32go11-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32go11 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libstdc++-7-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgcc-7-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++-7-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++-7-pic +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libstdc++-7-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-7-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libgcc1-dbg (>= ${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: libstdc++6-7-dbg-armel [armel], libstdc++6-7-dbg-armhf [armhf] +Multi-Arch: same +Recommends: libstdc++-7-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 +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib32stdc++-7-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-7-base (= ${gcc:Version}), lib32gcc-7-dev (= ${gcc:Version}), + lib32stdc++6 (>= ${gcc:Version}), libstdc++-7-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-7-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-7-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), + libstdc++-7-dev (= ${gcc:Version}), lib32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg, + lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg, + lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg, lib32stdc++6-4.6-dbg, + lib32stdc++6-4.7-dbg, lib32stdc++6-4.8-dbg, lib32stdc++6-4.9-dbg, + lib32stdc++6-5-dbg, lib32stdc++6-6-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib64stdc++-7-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-7-base (= ${gcc:Version}), lib64gcc-7-dev (= ${gcc:Version}), + lib64stdc++6 (>= ${gcc:Version}), libstdc++-7-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-7-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-7-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), + libstdc++-7-dev (= ${gcc:Version}), lib64gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg, + lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg, + lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg, lib64stdc++6-4.6-dbg, + lib64stdc++6-4.7-dbg, lib64stdc++6-4.8-dbg, lib64stdc++6-4.9-dbg, + lib64stdc++6-5-dbg, lib64stdc++6-6-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libn32stdc++-7-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libn32gcc-7-dev (= ${gcc:Version}), + libn32stdc++6 (>= ${gcc:Version}), libstdc++-7-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-7-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), + libstdc++-7-dev (= ${gcc:Version}), libn32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg, + libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg, + libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg, libn32stdc++6-4.6-dbg, + libn32stdc++6-4.7-dbg, libn32stdc++6-4.8-dbg, libn32stdc++6-4.9-dbg, + libn32stdc++6-5-dbg, libn32stdc++6-6-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libx32stdc++-7-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32gcc-7-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-7-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-7-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-7-dev (= ${gcc:Version}), libx32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libx32stdc++6-dbg, libx32stdc++6-4.6-dbg, + libx32stdc++6-4.7-dbg, libx32stdc++6-4.8-dbg, libx32stdc++6-4.9-dbg, + libx32stdc++6-5-dbg, libx32stdc++6-6-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libhfstdc++-7-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfgcc-7-dev (= ${gcc:Version}), + libhfstdc++6 (>= ${gcc:Version}), libstdc++-7-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libhfstdc++6-7-dbg +X-DH-Build-For-Type: target +Architecture: armel +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfstdc++6 (>= ${gcc:Version}), + libstdc++-7-dev (= ${gcc:Version}), libhfgcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libhfstdc++6-dbg, libhfstdc++6-4.3-dbg, libhfstdc++6-4.4-dbg, libhfstdc++6-4.5-dbg, libhfstdc++6-4.6-dbg, libhfstdc++6-4.7-dbg, libhfstdc++6-4.8-dbg, libhfstdc++6-4.9-dbg, libhfstdc++6-5-dbg, libhfstdc++6-6-dbg, libstdc++6-armhf [armel] +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libsfstdc++-7-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfgcc-7-dev (= ${gcc:Version}), + libsfstdc++6 (>= ${gcc:Version}), libstdc++-7-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libsfstdc++6-7-dbg +X-DH-Build-For-Type: target +Architecture: armhf +Section: debug +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfstdc++6 (>= ${gcc:Version}), + libstdc++-7-dev (= ${gcc:Version}), libsfgcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libsfstdc++6-dbg, libsfstdc++6-4.3-dbg, libsfstdc++6-4.4-dbg, libsfstdc++6-4.5-dbg, libsfstdc++6-4.6-dbg, libsfstdc++6-4.7-dbg, libsfstdc++6-4.8-dbg, libsfstdc++6-4.9-dbg, libsfstdc++6-5-dbg, libhfstdc++6-6-dbg, libstdc++6-armel [armhf] +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libstdc++-7-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-7-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 +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-7 +Architecture: any +Priority: optional +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-7-doc, ada-reference-manual-2012, gnat-7-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 +# 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-7-sjlj +Architecture: any +Priority: optional +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-7-base (= ${gcc:Version}), gnat-7 (= ${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-7 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +Package: libgnat-7-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgnat-7 (= ${gnat:Version}), ${misc:Depends} +Description: runtime for applications compiled with GNAT (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the debugging symbols. + +Package: libgnatvsn7-dev +X-DH-Build-For-Type: target +Section: libdevel +Architecture: any +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gnat-7 (= ${gnat:Version}), + libgnatvsn7 (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatvsn-dev (<< 7), + libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, + libgnatvsn4.5-dev, libgnatvsn4.6-dev, libgnatvsn4.9-dev, + libgnatvsn5-dev, libgnatvsn6-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: libgnatvsn7 +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Section: libs +Depends: gcc-7-base (= ${gcc:Version}), libgnat-7 (= ${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: libgnatvsn7-dbg +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Section: debug +Depends: gcc-7-base (= ${gcc:Version}), libgnatvsn7 (= ${gnat:Version}), ${misc:Depends} +Suggests: gnat +Description: GNU Ada compiler selected components (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the debugging symbols. + +Package: gnat-7-doc +Architecture: all +Section: doc +Priority: optional +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Suggests: gnat-7 +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, +Description: GNU Ada compiler (documentation) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the documentation in info format. + +Package: gdc-7 +Architecture: any +Priority: optional +Depends: gcc-7-base (>= ${gcc:SoftVersion}), g++-7 (>= ${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-7-multilib +Architecture: any +Priority: optional +Depends: gcc-7-base (>= ${gcc:SoftVersion}), gdc-7 (= ${gcc:Version}), gcc-7-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-7-dev +X-DH-Build-For-Type: target +Architecture: amd64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgphobos71 (>= ${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: libgphobos71 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 +Multi-Arch: same +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libgphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libgphobos71-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 +Multi-Arch: same +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgphobos71 (= ${gdc:Version}), ${misc:Depends} +Replaces: libgphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos-7-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-7-base (= ${gcc:Version}), lib64gphobos71 (>= ${gdc:Version}), + lib64gcc-7-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: lib64gphobos71 +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-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos71-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib64gphobos71 (= ${gdc:Version}), ${misc:Depends} +Replaces: lib64gphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos-7-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-7-base (= ${gcc:Version}), lib32gphobos71 (>= ${gdc:Version}), + lib32gcc-7-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: lib32gphobos71 +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-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos71-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), lib32gphobos71 (= ${gdc:Version}), ${misc:Depends} +Replaces: lib32gphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos-7-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32gphobos71 (>= ${gdc:Version}), + libx32gcc-7-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: libx32gphobos71 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos71-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 i386 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libx32gphobos71 (= ${gdc:Version}), ${misc:Depends} +Replaces: libx32gphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libhfgphobos-7-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfgphobos71 (>= ${gdc:Version}), + libhfgcc-7-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (hard float ABI development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libhfgphobos71 +X-DH-Build-For-Type: target +Section: libs +Architecture: armel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libhfgphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libhfgphobos71-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: armel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libhfgphobos71 (= ${gdc:Version}), ${misc:Depends} +Replaces: libhfgphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos-7-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfgphobos71 (>= ${gdc:Version}), + libsfgcc-7-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (soft float ABI development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos71 +X-DH-Build-For-Type: target +Section: libs +Architecture: armhf +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libsfgphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos71-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: armhf +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libsfgphobos71 (= ${gdc:Version}), ${misc:Depends} +Replaces: libsfgphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: gccbrig-7 +Architecture: any +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${gcc:Version}), ${dep:libcdev}, + hsail-tools, + ${shlibs:Depends}, libhsail-rt-7-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gccbrig:multilib}, + libhsail-rt0-dbg (>= ${gcc:Version}) +Provides: brig-compiler +Description: GNU BRIG (HSA IL) frontend + This is the GNU BRIG (HSA IL) frontend. + The consumed format is a binary representation. The textual HSAIL + can be compiled to it with a separate assembler. + +Package: libhsail-rt-7-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), libgcc-7-dev (= ${gcc:Version}), libhsail-rt0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: HSAIL runtime library (development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Priority: PRI(optional) +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. + +Package: gcc-7-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-7-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Conflicts: gcc-docs (<< 2.95.2) +Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) +Description: Documentation for the GNU compilers (gcc, gobjc, g++) + Documentation for the GNU compilers in info format. + +Package: gcc-7-offload-nvptx +Architecture: amd64 +Priority: optional +Depends: gcc-7-base (= ${gcc:Version}), gcc-7 (= ${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-7-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-7-source +Architecture: all +Priority: optional +Depends: make, autoconf2.64, quilt, patchutils, sharutils, gawk, ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). --- gcc-7-7.3.0.orig/debian/control.m4 +++ gcc-7-7.3.0/debian/control.m4 @@ -0,0 +1,5855 @@ +divert(-1) + +define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1 +')m4exit(1)')') +define(`errexit',`errprint(`error: undefined macro `$1' +')m4exit(1)') + +dnl The following macros must be defined, when called: +dnl ifdef(`SRCNAME', , errexit(`SRCNAME')) +dnl ifdef(`PV', , errexit(`PV')) +dnl ifdef(`ARCH', , errexit(`ARCH')) + +dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.) + +define(`PN', `$1') +ifdef(`PRI', `', ` + define(`PRI', `$1') +') +define(`MAINTAINER', `Debian GCC Maintainers ') + +define(`depifenabled', `ifelse(index(enabled_languages, `$1'), -1, `', `$2')') +define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') + +ifdef(`TARGET',`ifdef(`CROSS_ARCH',`',`undefine(`MULTIARCH')')') +define(`CROSS_ARCH', ifdef(`CROSS_ARCH', CROSS_ARCH, `all')) +define(`libdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libdevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libidevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +ifdef(`TARGET',`ifelse(CROSS_ARCH,`all',` +define(`libidevdep', `lib$2$1`'LS`'AQ (>= ifelse(`$4',`',`${gcc:SoftVersion}',`$4'))') +')') +define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') + +define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using} +')) +define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target +') + +divert`'dnl +dnl -------------------------------------------------------------------------- +Source: SRCNAME +Section: devel +Priority: PRI(optional) +ifelse(DIST,`Ubuntu',`dnl +ifelse(regexp(SRCNAME, `gnat\|gdc-'),0,`dnl +Maintainer: Ubuntu MOTU Developers +', `dnl +Maintainer: Ubuntu Core developers +')dnl SRCNAME +XSBC-Original-Maintainer: MAINTAINER +', `dnl +Maintainer: MAINTAINER +')dnl DIST +ifelse(regexp(SRCNAME, `gnat'),0,`dnl +Uploaders: Ludovic Brenta +', regexp(SRCNAME, `gdc'),0,`dnl +Uploaders: Iain Buclaw , Matthias Klose +', `dnl +Uploaders: Matthias Klose +')dnl SRCNAME +Standards-Version: 4.2.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], + dwz, LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP + SOURCE_BUILD_DEP CROSS_BUILD_DEP + ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP, + zlib1g-dev, gawk, lzma, xz-utils, patchutils, + pkg-config, libgc-dev, + zlib1g-dev, SDT_BUILD_DEP + bison (>= 1:2.3), flex, coreutils (>= 2.26) | realpath (>= 1.9.12), lsb-release, quilt +',`dnl native +Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP GCC_MULTILIB_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k], + AUTO_BUILD_DEP BASE_BUILD_DEP + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + zlib1g-dev, SDT_BUILD_DEP + BINUTILS_BUILD_DEP, + gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, + gdb`'NT [!riscv64], OFFLOAD_BUILD_DEP + texinfo (>= 4.3), locales, sharutils, + procps, FORTRAN_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP + 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-7-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-7-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: ifdef(`TARGET',`optional',required) +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libgcc1-TARGET-dcv1',`libgcc1-armel [armel], libgcc1-armhf [armhf]') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libgcc1-dbg-armel [armel], libgcc1-dbg-armhf [armhf] +')dnl +ifdef(`MULTIARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc2`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`optional',required) +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1 +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc2-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc2,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libgcc + +ifenabled(`cdev',` +Package: libgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libcilkrts}, ${dep:libvtv}, + ${dep:libmpx}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Replaces: gccgo-7 (<< ${gcc:Version}) +BUILT_USING`'dnl +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl libgcc + +Package: libgcc4`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`optional',required) +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc4-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc4,,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`lib64gcc',` +Package: lib64gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1 +',`')`'dnl +Conflicts: libdep(gcc`'GCC_SO,,<=,1:3.3-0pre9) +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (64bit) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,64,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64gcc + +ifenabled(`cdev',` +Package: lib64gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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 + +Package: lib32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib32gcc1 + +ifenabled(`cdev',` +Package: lib32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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 + +Package: libhfgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,hf,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfgcc + +ifenabled(`cdev',` +ifenabled(`armml',` +Package: libhfgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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 + +Package: libsfgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,sf,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfgcc + +ifenabled(`cdev',` +ifenabled(`armml',` +Package: libsfgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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 + +Package: libn32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,n32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libn32gcc + +ifenabled(`cdev',` +Package: libn32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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 + +Package: libx32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,x32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32gcc + +ifenabled(`cdev',` +ifenabled(`x32dev',` +Package: libx32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-7-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-7 (<< ${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(cilkrts`'CILKRTS_SO-dbg,), + 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-7 (<< ${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. + +Package: libgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libgomp'GOMP_SO`-dbg-armel [armel], libgomp'GOMP_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + +ifenabled(`libx32gomp',` +Package: libx32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libx32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libx32gomp + +ifenabled(`libhfgomp',` +Package: libhfgomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (hard float ABI) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libhfgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (hard float ABI debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libhfgomp + +ifenabled(`libsfgomp',` +Package: libsfgomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (soft float ABI) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libsfgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,sf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (soft float ABI debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libsfgomp + +ifenabled(`libneongomp',` +Package: libgomp`'GOMP_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library [neon optimized] + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongomp +')`'dnl libgomp + +ifenabled(`libitm',` +Package: libitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-armel [armel], libitm'ITM_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-dbg-armel [armel], libitm'ITM_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32 bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32 debug symbols) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +ifenabled(`libx32itm',` +Package: libx32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. + +Package: libx32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32 debug symbols) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. +')`'dnl libx32itm + +ifenabled(`libhfitm',` +Package: libhfitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (hard float ABI) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libhfitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (hard float ABI debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libhfitm + +ifenabled(`libsfitm',` +Package: libsfitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (soft float ABI) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libsfitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (soft float ABI debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libsfitm + +ifenabled(`libneonitm',` +Package: libitm`'ITM_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library [neon optimized] + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonitm +')`'dnl libitm + +ifenabled(`libatomic',` +Package: libatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-armel [armel], libatomic'ATOMIC_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-dbg-armel [armel], libatomic'ATOMIC_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32 bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libx32atomic',` +Package: libx32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libx32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libx32atomic + +ifenabled(`libhfatomic',` +Package: libhfatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (hard float ABI) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libhfatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (hard float ABI debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libhfatomic + +ifenabled(`libsfatomic',` +Package: libsfatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (soft float ABI) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libsfatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (soft float ABI debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libsfatomic + +ifenabled(`libneonatomic',` +Package: libatomic`'ATOMIC_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions [neon optimized] + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonatomic +')`'dnl libatomic + +ifenabled(`libasan',` +Package: libasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-armel [armel], libasan'ASAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-dbg-armel [armel], libasan'ASAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libx32asan',` +Package: libx32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libx32asan + +ifenabled(`libhfasan',` +Package: libhfasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (hard float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libhfasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (hard float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libhfasan + +ifenabled(`libsfasan',` +Package: libsfasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (soft float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libsfasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (soft float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libsfasan + +ifenabled(`libneonasan',` +Package: libasan`'ASAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector [neon optimized] + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonasan +')`'dnl libasan + +ifenabled(`liblsan',` +Package: liblsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (runtime) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: liblsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +ifenabled(`lib32lsan',` +Package: lib32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32bit) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: lib32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl lib32lsan + +ifenabled(`lib64lsan',` +#Package: lib64lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: lib64lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl lib64lsan + +ifenabled(`libn32lsan',` +#Package: libn32lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: libn32lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl libn32lsan + +ifenabled(`libx32lsan',` +Package: libx32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: libx32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32 debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl libx32lsan + +ifenabled(`libhflsan',` +Package: libhflsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (hard float ABI) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: libhflsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (hard float ABI debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libhflsan + +ifenabled(`libsflsan',` +Package: libsflsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (soft float ABI) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: libsflsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (soft float ABI debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libsflsan + +ifenabled(`libneonlsan',` +Package: liblsan`'LSAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector [neon optimized] + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonlsan +')`'dnl liblsan + +ifenabled(`libtsan',` +Package: libtsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-armel [armel], libtsan'TSAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libtsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-dbg-armel [armel], libtsan'TSAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`lib32tsan',` +Package: lib32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: lib32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32 bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl lib32tsan + +ifenabled(`lib64tsan',` +Package: lib64tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: lib64tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl lib64tsan + +ifenabled(`libn32tsan',` +Package: libn32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libn32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libn32tsan + +ifenabled(`libx32tsan',` +Package: libx32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libx32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libx32tsan + +ifenabled(`libhftsan',` +Package: libhftsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libhftsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI debug symbols) +')`'dnl libhftsan + +ifenabled(`libsftsan',` +Package: libsftsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libsftsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libsftsan + +ifenabled(`libneontsan',` +Package: libtsan`'TSAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races [neon optimized] + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneontsan +')`'dnl libtsan + +ifenabled(`libubsan',` +Package: libubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-armel [armel], libubsan'UBSAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (runtime) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-dbg-armel [armel], libubsan'UBSAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`lib32ubsan',` +Package: lib32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl lib32ubsan + +ifenabled(`lib64ubsan',` +Package: lib64ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib64ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl lib64ubsan + +ifenabled(`libn32ubsan',` +#Package: libn32ubsan`'UBSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +#Package: libn32ubsan`'UBSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. +')`'dnl libn32ubsan + +ifenabled(`libx32ubsan',` +Package: libx32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libx32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libx32ubsan + +ifenabled(`libhfubsan',` +Package: libhfubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (hard float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libhfubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (hard float ABI debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libhfubsan + +ifenabled(`libsfubsan',` +Package: libsfubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (soft float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libsfubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (soft float ABI debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libsfubsan + +ifenabled(`libneonubsan',` +Package: libubsan`'UBSAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer [neon optimized] + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonubsan +')`'dnl libubsan + +ifenabled(`libvtv',` +Package: libvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (runtime) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU vtable verification library (debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`lib32vtv',` +Package: lib32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU vtable verification library (32bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: lib32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (32 bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl lib32vtv + +ifenabled(`lib64vtv',` +Package: lib64vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: lib64vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl lib64vtv + +ifenabled(`libn32vtv',` +Package: libn32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (n32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libn32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (n32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libn32vtv + +ifenabled(`libx32vtv',` +Package: libx32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libx32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libx32vtv + +ifenabled(`libhfvtv',` +Package: libhfvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU vtable verification library (hard float ABI) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libhfvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU vtable verification library (hard float ABI debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libhfvtv + +ifenabled(`libsfvtv',` +Package: libsfvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (soft float ABI) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libsfvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (soft float ABI debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libsfvtv + +ifenabled(`libneonvtv',` +Package: libvtv`'VTV_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library [neon optimized] + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonvtv +')`'dnl libvtv + +ifenabled(`libcilkrts',` +Package: libcilkrts`'CILKRTS_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libcilkrts'CILKRTS_SO`-armel [armel], libcilkrts'CILKRTS_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: Intel Cilk Plus language extensions (runtime) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libcilkrts`'CILKRTS_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libcilkrts'CILKRTS_SO`-dbg-armel [armel], libcilkrts'CILKRTS_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +ifenabled(`lib32cilkrts',` +Package: lib32cilkrts`'CILKRTS_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: Intel Cilk Plus language extensions (32bit) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib32cilkrts`'CILKRTS_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (32 bit debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl lib32cilkrts + +ifenabled(`lib64cilkrts',` +Package: lib64cilkrts`'CILKRTS_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: Intel Cilk Plus language extensions (64bit) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: lib64cilkrts`'CILKRTS_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (64bit debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl lib64cilkrts + +ifenabled(`libn32cilkrts',` +Package: libn32cilkrts`'CILKRTS_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 Cilk Plus language extensions (n32) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libn32cilkrts`'CILKRTS_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (n32 debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libn32cilkrts + +ifenabled(`libx32cilkrts',` +Package: libx32cilkrts`'CILKRTS_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 Cilk Plus language extensions (x32) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libx32cilkrts`'CILKRTS_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (x32 debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libx32cilkrts + +ifenabled(`libhfcilkrts',` +Package: libhfcilkrts`'CILKRTS_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: libcilkrts'CILKRTS_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (hard float ABI) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libhfcilkrts`'CILKRTS_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libcilkrts'CILKRTS_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (hard float ABI debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libhfcilkrts + +ifenabled(`libsfcilkrts',` +Package: libsfcilkrts`'CILKRTS_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 Cilk Plus language extensions (soft float ABI) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + +Package: libsfcilkrts`'CILKRTS_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel Cilk Plus language extensions (soft float ABI debug symbols) + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. +')`'dnl libsfcilkrts + +ifenabled(`libneoncilkrts',` +Package: libcilkrts`'CILKRTS_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: Intel Cilk Plus language extensions [neon optimized] + Intel Cilk Plus is an extension to the C and C++ languages to support + data and task parallelism. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneoncilkrts +')`'dnl libcilkrts + +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. + +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. + +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. + +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 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. + +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 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. + +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 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. + +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 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. + +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 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. + +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 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. + +Package: libbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libbacktrace'BTRACE_SO`-dbg-armel [armel], libbacktrace'BTRACE_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: stack backtrace library (debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: stack backtrace library (32bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (32 bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib64backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib64backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libn32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (n32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libn32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (n32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libx32backtrace',` +Package: libx32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libx32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libx32backtrace + +ifenabled(`libhfbacktrace',` +Package: libhfbacktrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: stack backtrace library (hard float ABI) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libhfbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,hf,=), ${misc:Depends} +wifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: stack backtrace library (hard float ABI debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libhfbacktrace + +ifenabled(`libsfbacktrace',` +Package: libsfbacktrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (soft float ABI) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libsfbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (soft float ABI debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libsfbacktrace + +ifenabled(`libneonbacktrace',` +Package: libbacktrace`'BTRACE_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library [neon optimized] + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonbacktrace +')`'dnl libbacktrace + + +ifenabled(`libqmath',` +Package: libquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32 bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib64quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib64quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +#Package: libn32quadmath`'QMATH_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. The library is used to provide on such +# targets the REAL(16) type in the GNU Fortran compiler. + +#Package: libn32quadmath`'QMATH_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32 debug symbols) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. + +ifenabled(`libx32qmath',` +Package: libx32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libx32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32 debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libx32qmath + +ifenabled(`libhfqmath',` +Package: libhfquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libhfquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,hf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libhfqmath + +ifenabled(`libsfqmath',` +Package: libsfquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (soft float ABI) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libsfquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libsfqmath +')`'dnl libqmath + +ifenabled(`libcc1',` +Package: libcc1-`'CC1_SO +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC cc1 plugin for GDB + libcc1 is a plugin for GDB. +')`'dnl libcc1 + +ifenabled(`libjit',` +Package: libgccjit`'GCCJIT_SO +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) +BUILT_USING`'dnl +Description: GCC just-in-time compilation (shared library) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit`'GCCJIT_SO-dbg +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, libgccjit`'GCCJIT_SO (= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +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 libjit + +ifenabled(`jit',` +Package: libgccjit`'PV-doc +Section: doc +Architecture: all +Priority: optional +Depends: BASEDEP, ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc +Description: GCC just-in-time compilation (documentation) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit`'PV-dev +Section: ifdef(`TARGET',`devel',`libdevel') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, libgccjit`'GCCJIT_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Suggests: libgccjit`'PV-dbg +Description: GCC just-in-time compilation (development files) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. +')`'dnl jit + +ifenabled(`objpp',` +ifenabled(`objppdev',` +Package: gobjc++`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler`'TS +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl obcppdev + +ifenabled(`multilib',` +Package: gobjc++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl obcpp + +ifenabled(`objc',` +ifenabled(`objcdev',` +Package: gobjc`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,) +Provides: objc-compiler`'TS +ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl') +BUILT_USING`'dnl +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gobjc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +Package: libobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(objc`'OBJC_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(objc`'OBJC_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(objc`'OBJC_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(objc`'OBJC_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +ifenabled(`x32dev',` +Package: libx32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(objc`'OBJC_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl libx32objc + +ifenabled(`armml',` +Package: libhfobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), libdep(objc`'OBJC_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl armml + +ifenabled(`armml',` +Package: libsfobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), libdep(objc`'OBJC_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl armml +')`'dnl objcdev + +ifenabled(`libobjc',` +Package: libobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-armel [armel], libobjc'OBJC_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks} +',`')')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. + +Package: libobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-dbg-armel [armel], libobjc'OBJC_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libobjc + +ifenabled(`lib64objc',` +Package: lib64objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib64objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,64,=), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib64objc + +ifenabled(`lib32objc',` +Package: lib32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,32,=), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib32objc + +ifenabled(`libn32objc',` +Package: libn32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libn32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,n32,=), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libn32objc + +ifenabled(`libx32objc',` +Package: libx32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libx32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,x32,=), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libx32objc + +ifenabled(`libhfobjc',` +Package: libhfobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libhfobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,hf,=), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libhfobjc + +ifenabled(`libsfobjc',` +Package: libsfobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float ABI) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libsfobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,sf,=), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float ABI debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libsfobjc + +ifenabled(`libneonobjc',` +Package: libobjc`'OBJC_SO-neon`'LS +TARGET_PACKAGE`'dnl +Section: libs +Architecture: NEON_ARCHS +Priority: PRI(optional) +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications [NEON version] + Library needed for GNU ObjC applications linked against the shared library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonobjc +')`'dnl objc + +ifenabled(`fortran',` +ifenabled(`fdev',` +Package: gfortran`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran`'PV-doc, + libdbgdep(gfortran`'FORTRAN_SO-dbg,), + libcoarrays-dev +BUILT_USING`'dnl +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gfortran`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gfortran`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran compiler in info `format'. +')`'dnl gfdldoc + +Package: libgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',), libdep(gfortran`'FORTRAN_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',64), libdep(gfortran`'FORTRAN_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',32), libdep(gfortran`'FORTRAN_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',n32), libdep(gfortran`'FORTRAN_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +ifenabled(`x32dev',` +Package: libx32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',x32), libdep(gfortran`'FORTRAN_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl libx32gfortran + +ifenabled(`armml',` +Package: libhfgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',hf), libdep(gfortran`'FORTRAN_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl armml + +ifenabled(`armml',` +Package: libsfgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',sf), libdep(gfortran`'FORTRAN_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (soft float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl armml +')`'dnl fdev + +ifenabled(`libgfortran',` +Package: libgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-armel [armel], libgfortran'FORTRAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-dbg-armel [armel], libgfortran'FORTRAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libgfortran + +ifenabled(`lib64gfortran',` +Package: lib64gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib64gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib64gfortran + +ifenabled(`lib32gfortran',` +Package: lib32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32 bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib32gfortran + +ifenabled(`libn32gfortran',` +Package: libn32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libn32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libn32gfortran + +ifenabled(`libx32gfortran',` +Package: libx32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libx32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libx32gfortran + +ifenabled(`libhfgfortran',` +Package: libhfgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libhfgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libhfgfortran + +ifenabled(`libsfgfortran',` +Package: libsfgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (soft float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libsfgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,sf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libsfgfortran + +ifenabled(`libneongfortran',` +Package: libgfortran`'FORTRAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Section: libs +Architecture: NEON_ARCHS +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Priority: optional +Depends: BASELDEP, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications [NEON version] + Library needed for GNU Fortran applications linked against the + shared library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongfortran +')`'dnl fortran + +ifenabled(`ggo',` +ifenabled(`godev',` +Package: gccgo`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'TS (= ${gcc:Version}), ')libidevdep(go`'GO_SO,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg,) +Conflicts: ${golang:Conflicts} +Breaks: libgo`'GO_SO`'LS (<< 7.2.0-18) +Replaces: libgo`'GO_SO`'LS (<< 7.2.0-18) +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: lib32go`'GO_SO`'LS (<< 7.2.0-18), + libn32go`'GO_SO`'LS (<< 7.2.0-18), + libx32go`'GO_SO`'LS (<< 7.2.0-18), + lib64go`'GO_SO`'LS (<< 7.2.0-18) +Replaces: lib32go`'GO_SO`'LS (<< 7.2.0-18), + libn32go`'GO_SO`'LS (<< 7.2.0-18), + libx32go`'GO_SO`'LS (<< 7.2.0-18), + lib64go`'GO_SO`'LS (<< 7.2.0-18) +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 fdev + +ifenabled(`libggo',` +Package: libgo`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgo'GO_SO`-armel [armel], libgo'GO_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libgo3`'LS, libgo8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +Package: libgo`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgo'GO_SO`-dbg-armel [armel], libgo'GO_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libgo + +ifenabled(`lib64ggo',` +Package: lib64go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64go3`'LS, lib64go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib64go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl lib64go + +ifenabled(`lib32ggo',` +Package: lib32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Replaces: lib32go3`'LS, lib32go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl lib32go + +ifenabled(`libn32ggo',` +Package: libn32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libn32go3`'LS, libn32go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libn32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libn32go + +ifenabled(`libx32ggo',` +Package: libx32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32go3`'LS, libx32go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libx32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libx32go +')`'dnl ggo + +ifenabled(`c++',` +ifenabled(`libcxx',` +Package: libstdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`optional',PRI(important)) +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 +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), + libdep(stdc++CXX_SO,32), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS, + lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS, + lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS, lib32stdc++6-4.6-dbg`'LS, + lib32stdc++6-4.7-dbg`'LS, lib32stdc++6-4.8-dbg`'LS, lib32stdc++6-4.9-dbg`'LS, + lib32stdc++6-5-dbg`'LS, lib32stdc++6-6-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), + libdep(stdc++CXX_SO,64), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,64), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS, + lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS, + lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS, lib64stdc++6-4.6-dbg`'LS, + lib64stdc++6-4.7-dbg`'LS, lib64stdc++6-4.8-dbg`'LS, lib64stdc++6-4.9-dbg`'LS, + lib64stdc++6-5-dbg`'LS, lib64stdc++6-6-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), + libdep(stdc++CXX_SO,n32), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,n32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS, + libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS, + libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS, libn32stdc++6-4.6-dbg`'LS, + libn32stdc++6-4.7-dbg`'LS, libn32stdc++6-4.8-dbg`'LS, libn32stdc++6-4.9-dbg`'LS, + libn32stdc++6-5-dbg`'LS, libn32stdc++6-6-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`x32dev',` +Package: libx32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl x32dev + +ifenabled(`libx32dbgcxx',` +Package: libx32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libx32stdc++6-dbg`'LS, libx32stdc++6-4.6-dbg`'LS, + libx32stdc++6-4.7-dbg`'LS, libx32stdc++6-4.8-dbg`'LS, libx32stdc++6-4.9-dbg`'LS, + libx32stdc++6-5-dbg`'LS, libx32stdc++6-6-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32dbgcxx + +ifenabled(`libhfdbgcxx',` +Package: libhfstdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), + libdep(stdc++CXX_SO,hf), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libhfstdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,hf), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libhfstdc++6-dbg`'LS, libhfstdc++6-4.3-dbg`'LS, libhfstdc++6-4.4-dbg`'LS, libhfstdc++6-4.5-dbg`'LS, libhfstdc++6-4.6-dbg`'LS, libhfstdc++6-4.7-dbg`'LS, libhfstdc++6-4.8-dbg`'LS, libhfstdc++6-4.9-dbg`'LS, libhfstdc++6-5-dbg`'LS, libhfstdc++6-6-dbg`'LS, libstdc++'CXX_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfdbgcxx + +ifenabled(`libsfdbgcxx',` +Package: libsfstdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), + libdep(stdc++CXX_SO,sf), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libsfstdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,sf), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libsfstdc++6-dbg`'LS, libsfstdc++6-4.3-dbg`'LS, libsfstdc++6-4.4-dbg`'LS, libsfstdc++6-4.5-dbg`'LS, libsfstdc++6-4.6-dbg`'LS, libsfstdc++6-4.7-dbg`'LS, libsfstdc++6-4.8-dbg`'LS, libsfstdc++6-4.9-dbg`'LS, libsfstdc++6-5-dbg`'LS, libhfstdc++6-6-dbg`'LS, libstdc++'CXX_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfdbgcxx + +ifdef(`TARGET', `', ` +Package: libstdc++`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc +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 +# These other packages will continue to provide /usr/bin/gnatmake and +# other files. +BUILT_USING`'dnl +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +ifenabled(`adasjlj',` +Package: gnat`'-GNAT_V-sjlj`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, gnat`'-GNAT_V`'TS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler (setjump/longjump runtime library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides an alternative runtime library that handles + exceptions using the setjump/longjump mechanism (as a static library + only). You can install it to supplement the normal compiler. +')`'dnl adasjlj + +ifenabled(`libgnat',` +Package: libgnat`'-GNAT_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +Package: libgnat`'-GNAT_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the debugging symbols. + +ifdef(`TARGET',`',` +Package: libgnatvsn`'GNAT_V-dev`'LS +TARGET_PACKAGE`'dnl +Section: libdevel +Architecture: any +Priority: optional +Depends: BASELDEP, gnat`'PV`'TS (= ${gnat:Version}), + libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatvsn-dev (<< `'GNAT_V), + libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, + libgnatvsn4.5-dev, libgnatvsn4.6-dev, libgnatvsn4.9-dev, + libgnatvsn5-dev`'LS, libgnatvsn6-dev`'LS, +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (development files) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the development files and static library. + +Package: libgnatvsn`'GNAT_V`'LS +TARGET_PACKAGE`'dnl +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: PRI(optional) +Section: libs +Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the runtime shared library. + +Package: libgnatvsn`'GNAT_V-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Section: debug +Depends: BASELDEP, libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +Suggests: gnat +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the debugging symbols. +')`'dnl native +')`'dnl libgnat + +ifenabled(`lib64gnat',` +Package: lib64gnat`'-GNAT_V +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (64 bits shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library for 64 bits architectures. +')`'dnl libgnat + +ifenabled(`gfdldoc',` +Package: gnat`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Suggests: gnat`'PV +Conflicts: gnat-4.1-doc, gnat-4.2-doc, + gnat-4.3-doc, gnat-4.4-doc, + gnat-4.6-doc, gnat-4.9-doc, + gnat-5-doc, gnat-6-doc, +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} +Provides: gdc, d-compiler, d-v2-compiler +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(`libphobos',` +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: 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/ + +Package: libgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos`'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: lib64gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib64gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos`'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/ + +Package: lib32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libn32phobos',` +Package: libn32gphobos`'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/ + +Package: libn32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libn32phobos + +ifenabled(`libx32phobos',` +Package: libx32gphobos`'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/ + +Package: libx32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libx32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libx32phobos + +ifenabled(`armml',` +Package: libhfgphobos`'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: libhfgphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libhfgphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libhfgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libhfgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libhfgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos`'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/ + +Package: libsfgphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libsfgphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libsfgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libsfgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl armml +')`'dnl libphobos +')`'dnl d + +ifenabled(`brig',` +ifenabled(`brigdev',` +Package: gccbrig`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, + hsail-tools, + ${shlibs:Depends}, libidevdep(hsail-rt`'PV-dev,,=), ${misc:Depends} +Suggests: ${gccbrig:multilib}, + libdbgdep(hsail-rt`'HSAIL_SO-dbg,) +Provides: brig-compiler`'TS +BUILT_USING`'dnl +Description: GNU BRIG (HSA IL) frontend + This is the GNU BRIG (HSA IL) frontend. + The consumed format is a binary representation. The textual HSAIL + can be compiled to it with a separate assembler. + +ifenabled(`multiXXXlib',` +Package: gccbrig`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gccbrig`'PV`'TS (= ${gcc:Version}), + gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libhsailrtbiarchdev}, + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU BRIG (HSA IL) frontend (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU BRIG (HSA IL) frontend. + The consumed format is a binary representation. The textual HSAIL + can be compiled to it with a separate assembler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +Package: libhsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(hsail-rt`'HSAIL_SO,), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: HSAIL runtime library (development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +ifenabled(`lib64hsail',` +Package: lib64hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(hsail-rt`'HSAIL_SO,64), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (64bit development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib64hsail + +ifenabled(`lib32hsail',` +Package: lib32hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(hsail-rt`'HSAIL_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (32bit development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib32hsail + +ifenabled(`libn32hsail',` +Package: libn32hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(hsail-rt`'HSAIL_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (n32 development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libn32hsail + +ifenabled(`x32dev',` +ifenabled(`libx32hsail',` +Package: libx32hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(hsail-rt`'HSAIL_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (x32 development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libx32hsail +')`'dnl x32dev + +ifenabled(`armml',` +ifenabled(`libhfhsail',` +Package: libhfhsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), libdep(hsail-rt`'HSAIL_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (hard float ABI development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libhfhsail +')`'dnl armml + +ifenabled(`armml',` +ifenabled(`libsfhsail',` +Package: libsfhsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), libdep(hsail-rt`'HSAIL_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (soft float development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libsfhsail +')`'dnl armml +')`'dnl hsailrtdev + +ifenabled(`libhsail',` +Package: libhsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libhsail-rt'HSAIL_SO`-armel [armel], libhsail-rt'HSAIL_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +ifelse(HSAIL_SO,`2',`Breaks: ${multiarch:breaks} +',`')')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libhsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libhsail-rt'HSAIL_SO`-dbg-armel [armel], libhsail-rt'HSAIL_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libhsail + +ifenabled(`lib64hsail',` +Package: lib64hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (64bit) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: lib64hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,64,=), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (64 bit debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib64hsail + +ifenabled(`lib32hsail',` +Package: lib32hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: HSAIL runtime library (32bit) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: lib32hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,32,=), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (32 bit debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib32hsail + +ifenabled(`libn32hsail',` +Package: libn32hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (n32) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libn32hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,n32,=), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (n32 debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libn32hsail + +ifenabled(`libx32hsail',` +Package: libx32hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (x32) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libx32hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,x32,=), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (x32 debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libx32hsail + +ifenabled(`libhfhsail',` +Package: libhfhsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (hard float ABI) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libhfhsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,hf,=), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (hard float ABI debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libhfhsailrt + +ifenabled(`libsfhsail',` +Package: libsfhsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (soft float ABI) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libsfhsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,sf,=), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (soft float ABI debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libsfhsailrt +')`'dnl brig + +ifdef(`TARGET',`',`dnl +ifenabled(`libs',` +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Priority: PRI(optional) +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl commonlibs +')`'dnl + +ifenabled(`fixincl',` +Package: fixincludes +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Fix non-ANSI header files + FixIncludes was created to fix non-ANSI system header files. Many + system manufacturers supply proprietary headers that are not ANSI compliant. + The GNU compilers cannot compile non-ANSI headers. Consequently, the + FixIncludes shell script was written to fix the header files. + . + Not all packages with header files are installed on the system, when the + package is built, so we make fixincludes available at build time of other + packages, such that checking tools like lintian can make use of it. +')`'dnl fixincl + +ifenabled(`cdev',` +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: gcc`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Conflicts: gcc-docs (<< 2.95.2) +Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) +Description: Documentation for the GNU compilers (gcc, gobjc, g++) + Documentation for the GNU compilers in info `format'. +')`'dnl gfdldoc +')`'dnl native +')`'dnl cdev + +ifenabled(`olnvptx',` +Package: gcc`'PV-offload-nvptx +Architecture: amd64 +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, + nvptx-tools, libgomp-plugin-nvptx`'GOMP_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC offloading compiler to NVPTX + The package provides offloading support for NVidia PTX. OpenMP and OpenACC + programs linked with -fopenmp will by default add PTX code into the binaries, + which can be offloaded to NVidia PTX capable devices if available. + +ifenabled(`libgompnvptx',` +Package: libgomp-plugin-nvptx`'GOMP_SO +Architecture: amd64 +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +Suggests: libcuda1 +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to NVPTX + This package contains libgomp plugin for offloading to NVidia + PTX. The plugin needs libcuda.so.1 shared library that has to be + installed separately. +')`'dnl libgompnvptx +')`'dnl olnvptx + +ifdef(`TARGET',`',`dnl +ifenabled(`libnof',` +#Package: gcc`'PV-nof +#Architecture: powerpc +#Priority: PRI(optional) +#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends} +#Conflicts: gcc-3.2-nof +#BUILT_USING`'dnl +#Description: GCC no-floating-point gcc libraries (powerpc) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl libnof +')`'dnl + +ifenabled(`source',` +Package: gcc`'PV-source +Architecture: all +Priority: PRI(optional) +Depends: make, autoconf2.64, quilt, patchutils, sharutils, gawk, ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). +')`'dnl source +dnl +')`'dnl gcc-X.Y +dnl last line in file --- gcc-7-7.3.0.orig/debian/copyright +++ gcc-7-7.3.0/debian/copyright @@ -0,0 +1,1404 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Objective-C, +Objective-C++, and Treelang compilers, documentation, and support +libraries. In addition, Debian provides the gdc compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + svn://gcc.gnu.org/svn/gcc/ (for prereleases) + http://bitbucket.org/goshawk/gdc (for D) + https://github.com/MentorEmbedded/nvptx-newlib/ (for newlib-nvptx) + +The current gcc-7 source package is taken from the SVN gcc-7-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-7 libgnat-7 gnat-7-doc +BRIG gccbrig-7 libhsail-rt0 +C gcc-7 gcc-7-doc +C++ g++-7 libstdc++6 libstdc++6-7-doc +D gdc-7 +Fortran 95 gfortran-7 libgfortran3 gfortran-7-doc +Go gccgo-7 libgo0 +Objective C gobjc-7 libobjc2 +Objective C++ gobjc++-7 + +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-7-dbg libstdc++6-7-pic +D libphobos-7-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-7-base Base files common to all compilers +gcc-7-soft-float Software floating point (ARM only) +gcc-7-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn7 GNAT version library + +C: +cpp-7, cpp-7-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-7 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. + + +libcilkrts, 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-7 GNU D Compiler +libphobos-7-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-2'. + + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (c) 1999-2010 by Digital Mars +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - d/phobos/etc/c/zlib/* + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - d/phobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com +Written by Walter Bright + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +The libhsail-rt library is licensed under the following terms: + + Copyright (C) 2015-2017 Free Software Foundation, Inc. + Contributed by Pekka Jaaskelainen + for General Processor Tech. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + +libhsail-rt/rt/fp16.c is licensed under the following terms: + + Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by CodeSourcery. + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +newlib-nvptx-20yymmdd/: + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-1999, 2000, 2001 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301 USA + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --- gcc-7-7.3.0.orig/debian/copyright.in +++ gcc-7-7.3.0/debian/copyright.in @@ -0,0 +1,1404 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Objective-C, +Objective-C++, and Treelang compilers, documentation, and support +libraries. In addition, Debian provides the gdc compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + svn://gcc.gnu.org/svn/gcc/ (for prereleases) + http://bitbucket.org/goshawk/gdc (for D) + https://github.com/MentorEmbedded/nvptx-newlib/ (for newlib-nvptx) + +The current gcc-@BV@ source package is taken from the SVN @SVN_BRANCH@. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-@BV@ libgnat-@BV@ gnat-@BV@-doc +BRIG gccbrig-@BV@ libhsail-rt0 +C gcc-@BV@ gcc-@BV@-doc +C++ g++-@BV@ libstdc++6 libstdc++6-@BV@-doc +D gdc-@BV@ +Fortran 95 gfortran-@BV@ libgfortran3 gfortran-@BV@-doc +Go gccgo-@BV@ libgo0 +Objective C gobjc-@BV@ libobjc2 +Objective C++ gobjc++-@BV@ + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-@BV@-dbg libstdc++6-@BV@-pic +D libphobos-@BV@-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-@BV@-base Base files common to all compilers +gcc-@BV@-soft-float Software floating point (ARM only) +gcc-@BV@-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn@BV@ GNAT version library + +C: +cpp-@BV@, cpp-@BV@-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, +1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgomp + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-@BV@ Ada support library and libgnatvsn library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2014 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2003 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/*.[hc]: + + Copyright (C) 2010 Free Software Foundation, Inc. + Written by Francois-Xavier Coudert + Written by Tobias Burnus + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +Libiberty is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +ldexpq.c: + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +isinfq.c: + * Written by J.T. Conklin . + * Change for long double by Jakub Jelinek + * Public domain. + +llroundq.c, lroundq.c, tgammaq.c: + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +remaining files: + + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +libcilkrts, libmpx: + Copyright (C) 2009-2014, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY + WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-@BV@ GNU D Compiler +libphobos-@BV@-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-2'. + + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (c) 1999-2010 by Digital Mars +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - d/phobos/etc/c/zlib/* + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - d/phobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com +Written by Walter Bright + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +The libhsail-rt library is licensed under the following terms: + + Copyright (C) 2015-2017 Free Software Foundation, Inc. + Contributed by Pekka Jaaskelainen + for General Processor Tech. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + +libhsail-rt/rt/fp16.c is licensed under the following terms: + + Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by CodeSourcery. + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +newlib-nvptx-20yymmdd/: + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-1999, 2000, 2001 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301 USA + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --- gcc-7-7.3.0.orig/debian/cpp-BV-CRB.preinst.in +++ gcc-7-7.3.0/debian/cpp-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-7-7.3.0.orig/debian/cpp-BV-doc.doc-base.cpp +++ gcc-7-7.3.0/debian/cpp-BV-doc.doc-base.cpp @@ -0,0 +1,16 @@ +Document: cpp-@BV@ +Title: The GNU C preprocessor +Author: Various +Abstract: The C preprocessor is a "macro processor" that is used automatically + by the C compiler to transform your program before actual compilation. + It is called a macro processor because it allows you to define "macros", + which are brief abbreviations for longer constructs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cpp.html +Files: /usr/share/doc/gcc-@BV@-base/cpp.html + +Format: info +Index: /usr/share/info/cpp-@BV@.info.gz +Files: /usr/share/info/cpp-@BV@* --- gcc-7-7.3.0.orig/debian/cpp-BV-doc.doc-base.cppint +++ gcc-7-7.3.0/debian/cpp-BV-doc.doc-base.cppint @@ -0,0 +1,17 @@ +Document: cppinternals-@BV@ +Title: The GNU C preprocessor (internals) +Author: Various +Abstract: This brief manual documents the internals of cpplib, and + explains some of the tricky issues. It is intended that, along with + the comments in the source code, a reasonably competent C programmer + should be able to figure out what the code is doing, and why things + have been implemented the way they have. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cppinternals.html +Files: /usr/share/doc/gcc-@BV@-base/cppinternals.html + +Format: info +Index: /usr/share/info/cppinternals-@BV@.info.gz +Files: /usr/share/info/cppinternals-@BV@* --- gcc-7-7.3.0.orig/debian/dh_doclink +++ gcc-7-7.3.0/debian/dh_doclink @@ -0,0 +1,12 @@ +#! /bin/sh + +pkg=`echo $1 | sed 's/^-p//'` +target=$2 + +[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc +if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ] +then + echo "WARNING: removing doc directory $pkg" + rm -rf debian/$pkg/usr/share/doc/$pkg +fi +ln -sf $target debian/$pkg/usr/share/doc/$pkg --- gcc-7-7.3.0.orig/debian/dh_rmemptydirs +++ gcc-7-7.3.0/debian/dh_rmemptydirs @@ -0,0 +1,10 @@ +#! /bin/sh -e + +pkg=`echo $1 | sed 's/^-p//'` + +: # remove empty directories, when all components are in place +for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \ + while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \ +done + +exit 0 --- gcc-7-7.3.0.orig/debian/dummy-man.1 +++ gcc-7-7.3.0/debian/dummy-man.1 @@ -0,0 +1,29 @@ +.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation" +.SH NAME +@name@ \- A program with a man page covered by the GFDL with invariant sections +.SH SYNOPSIS +@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fB@name@\fR is documented by a man page, which is covered by the "GNU +Free Documentation License" (GFDL) containing invariant sections. +.P +In November 2002, version 1.2 of the GNU Free Documentation License (GNU +FDL) was released by the Free Software Foundation after a long period +of consultation. Unfortunately, some concerns raised by members of the +Debian Project were not addressed, and as such the GNU FDL can apply +to works that do not pass the Debian Free Software Guidelines (DFSG), +and may thus only be included in the non-free component of the Debian +archive, not the Debian distribution itself. + +.SH "SEE ALSO" +.BR http://gcc.gnu.org/onlinedocs/ +for the complete documentation, +.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html +for a proposed statement of Debian with respect to the GFDL, +.BR gfdl(7) + +.SH AUTHOR +This manual page was written by the Debian GCC maintainers, +for the Debian GNU/Linux system. --- gcc-7-7.3.0.orig/debian/dummy.texi +++ gcc-7-7.3.0/debian/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) --- gcc-7-7.3.0.orig/debian/fixincludes.in +++ gcc-7-7.3.0/debian/fixincludes.in @@ -0,0 +1,8 @@ +#! /bin/sh + +PATH="/@LIBEXECDIR@/install-tools:$PATH" + +TARGET_MACHINE=`dpkg-architecture -qDEB_HOST_GNU_TYPE` +export TARGET_MACHINE + +exec fixinc.sh "$@" --- gcc-7-7.3.0.orig/debian/g++-BV-CRB.preinst.in +++ gcc-7-7.3.0/debian/g++-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-7-7.3.0.orig/debian/gcc-BV-CRB.preinst.in +++ gcc-7-7.3.0/debian/gcc-BV-CRB.preinst.in @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@ + update-alternatives --quiet --remove @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-7-7.3.0.orig/debian/gcc-BV-doc.doc-base.gcc +++ gcc-7-7.3.0/debian/gcc-BV-doc.doc-base.gcc @@ -0,0 +1,14 @@ +Document: gcc-@BV@ +Title: The GNU C and C++ compiler +Author: Various +Abstract: This manual documents how to run, install and port the GNU compiler, + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gcc.html +Files: /usr/share/doc/gcc-@BV@-base/gcc.html + +Format: info +Index: /usr/share/info/gcc-@BV@.info.gz +Files: /usr/share/info/gcc-@BV@* --- gcc-7-7.3.0.orig/debian/gcc-BV-doc.doc-base.gccint +++ gcc-7-7.3.0/debian/gcc-BV-doc.doc-base.gccint @@ -0,0 +1,17 @@ +Document: gccint-@BV@ +Title: Internals of the GNU C and C++ compiler +Author: Various +Abstract: This manual documents the internals of the GNU compilers, + including how to port them to new targets and some information about + how to write front ends for new languages. It corresponds to GCC + version @BV@.x. The use of the GNU compilers is documented in a + separate manual. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccint.html +Files: /usr/share/doc/gcc-@BV@-base/gccint.html + +Format: info +Index: /usr/share/info/gccint-@BV@.info.gz +Files: /usr/share/info/gccint-@BV@* --- gcc-7-7.3.0.orig/debian/gcc-BV-doc.doc-base.gomp +++ gcc-7-7.3.0/debian/gcc-BV-doc.doc-base.gomp @@ -0,0 +1,15 @@ +Document: gcc-@BV@-gomp +Title: The GNU OpenMP Implementation (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libgomp, the GNU implementation + of the OpenMP Application Programming Interface (API) for multi-platform + shared-memory parallel programming in C/C++ and Fortran. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libgomp.html +Files: /usr/share/doc/gcc-@BV@-base/libgomp.html + +Format: info +Index: /usr/share/info/libgomp-@BV@.info.gz +Files: /usr/share/info/libgomp-@BV@* --- gcc-7-7.3.0.orig/debian/gcc-BV-doc.doc-base.itm +++ gcc-7-7.3.0/debian/gcc-BV-doc.doc-base.itm @@ -0,0 +1,16 @@ +Document: gcc-@BV@-itm +Title: The GNU Transactional Memory Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage and internals of libitm, + the GNU Transactional Memory Library. It provides transaction support + for accesses to a process' memory, enabling easy-to-use synchronization + of accesses to shared memory by several threads. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libitm.html +Files: /usr/share/doc/gcc-@BV@-base/libitm.html + +Format: info +Index: /usr/share/info/libitm-@BV@.info.gz +Files: /usr/share/info/libitm-@BV@* --- gcc-7-7.3.0.orig/debian/gcc-BV-doc.doc-base.qmath +++ gcc-7-7.3.0/debian/gcc-BV-doc.doc-base.qmath @@ -0,0 +1,14 @@ +Document: gcc-@BV@-qmath +Title: The GCC Quad-Precision Math Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libquadmath, the GCC + Quad-Precision Math Library Application Programming Interface (API). +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libquadmath.html +Files: /usr/share/doc/gcc-@BV@-base/libquadmath.html + +Format: info +Index: /usr/share/info/libquadmath-@BV@.info.gz +Files: /usr/share/info/libquadmath-@BV@* --- gcc-7-7.3.0.orig/debian/gcc-BV-hppa64-linux-gnu.overrides +++ gcc-7-7.3.0/debian/gcc-BV-hppa64-linux-gnu.overrides @@ -0,0 +1,3 @@ +gcc-@BV@-hppa64-linux-gnu binary: binary-from-other-architecture +gcc-@BV@-hppa64-linux-gnu binary: binary-without-manpage +gcc-@BV@-hppa64-linux-gnu binary: hardening-no-pie --- gcc-7-7.3.0.orig/debian/gcc-BV-multilib.overrides +++ gcc-7-7.3.0/debian/gcc-BV-multilib.overrides @@ -0,0 +1 @@ +gcc-@BV@-multilib binary: binary-from-other-architecture --- gcc-7-7.3.0.orig/debian/gcc-BV-source.overrides +++ gcc-7-7.3.0/debian/gcc-BV-source.overrides @@ -0,0 +1,5 @@ +gcc-@BV@-source: changelog-file-not-compressed + +# these are patches taken over unmodified from 4.3 +gcc-@BV@-source: script-not-executable +gcc-@BV@-source: shell-script-fails-syntax-check --- gcc-7-7.3.0.orig/debian/gcc-XX-BV.1 +++ gcc-7-7.3.0/debian/gcc-XX-BV.1 @@ -0,0 +1,17 @@ +.TH GCC-@TOOL@-@BV@ 1 "May 8, 2012" gcc-@TOOL@-@BV@ "" +.SH NAME +gcc-@TOOL@ \- a wrapper around @TOOL@ adding the --plugin option + +.SH SYNOPSIS +gcc-@TOOL@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcc-@TOOL@\fR is a wrapper around @TOOL@(1) adding the appropriate +\fB\-\-plugin\fR option for the GCC @BV@ compiler. + +.SH OPTIONS +See @TOOL@(1) for a list of options that @TOOL@ understands. + +.SH "SEE ALSO" +.BR @TOOL@(1) --- gcc-7-7.3.0.orig/debian/gcc-dummy.texi +++ gcc-7-7.3.0/debian/gcc-dummy.texi @@ -0,0 +1,41 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header + +@settitle The GNU Compiler Collection (GCC) + +@c Create a separate index for command line options. +@defcodeindex op +@c Merge the standard indexes into a single one. +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex ky cp +@syncodeindex pg cp +@syncodeindex tp cp + +@paragraphindent 1 + +@c %**end of header + +@copying +The current documentation is licensed under the same terms as the Debian packaging. +@end copying +@ifnottex +@dircategory Programming +@direntry +* @name@: (@name@). The GNU Compiler Collection (@name@). +@end direntry +@sp 1 +@end ifnottex + +@summarycontents +@contents +@page + +@node Top +@top Introduction +@cindex introduction +The official GNU compilers' documentation is released under the terms +of the GNU Free Documentation License with cover texts. This has been +considered non free by the Debian Project. Thus you will find it in the +non-free section of the Debian archive. +@bye --- gcc-7-7.3.0.orig/debian/gcc-snapshot.overrides +++ gcc-7-7.3.0/debian/gcc-snapshot.overrides @@ -0,0 +1,10 @@ +gcc-snapshot binary: bad-permissions-for-ali-file + +# keep patched ltdl copy +gcc-snapshot binary: embedded-library + +gcc-snapshot binary: binary-from-other-architecture +gcc-snapshot binary: extra-license-file +gcc-snapshot binary: jar-not-in-usr-share +gcc-snapshot binary: triplet-dir-and-architecture-mismatch +gcc-snapshot binary: unstripped-binary-or-object --- gcc-7-7.3.0.orig/debian/gcc-snapshot.prerm +++ gcc-7-7.3.0/debian/gcc-snapshot.prerm @@ -0,0 +1,5 @@ +#! /bin/sh -e + +rm -f /usr/lib/gcc-snapshot/share/python/*.py[co] + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/gcc.css +++ gcc-7-7.3.0/debian/gcc.css @@ -0,0 +1,106 @@ +/* CSS for the GCC web site. + + Gerald Pfeifer + */ + +body { background-color: white; color: black; } + +a:link { color: #0066bb; text-decoration: none; } +a:visited { color: #003399; text-decoration: none; } +a:hover { color: darkorange; text-decoration: none; } + +h1 { color: darkslategray; text-align:center; } +h2 { color: darkslategray; } + +.highlight{ color: darkslategray; font-weight:bold; } +.smaller { font-size: 80%; } + +.no-margin-top { margin-top:0; } +.twocolumns { column-counts:2; -moz-column-count:2; } +.imgleft { margin: 5px 20px; float: left; } + +td.news { width: 50%; padding-right: 8px; } +td.news h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 2%; } +td.news dl { margin-top:0; } +td.news dt { color:darkslategrey; font-weight:bold; margin-top:0.3em; } +td.news dd { margin-left:3ex; margin-top:0.1em; margin-bottom:0.1em; } +td.news .date { color:darkslategrey; font-size:90%; margin-left:0.1ex; } + +td.status { width: 50%; padding-left: 12px; border-left: #3366cc thin solid; } +td.status h2 { font-size: 1.2em; margin-top:0; margin-bottom: 1%; } +td.status dl { margin-top:0; } +td.status .version { font-weight:bold; } +td.status .regress { font-size: 80%; } +td.status dd { margin-left:3ex; } + +table.nav { + padding-left: 32px; + border-spacing: 0pt; +} + +table.navitem { + border-spacing: 0pt; +} + +table.navitem tr:nth-child(1) { + border-color: #3366cc; + border-style: solid; + border-width: thin; + color: #f2f2f9; + background-color: #0066dd; + font-weight: bold; +} +table.navitem tr:nth-child(2) { + padding-top: 3px; + padding-left: 8px; + padding-bottom: 3px; + background-color: #f2f2f9; + font-size: smaller; +} + +div.copyright { + font-size: smaller; + background: #f2f2f9; + border: 2px solid #3366cc; + border-style: solid; + border-width: thin; + padding: 4px; +} +div.copyright p:nth-child(3) { margin-bottom: 0; } + +.boldcyan { font-weight:bold; color:cyan; } +.boldlime { font-weight:bold; color:lime; } +.boldmagenta { font-weight:bold; color:magenta; } +.boldred { font-weight:bold; color:red; } +.boldblue { font-weight:bold; color:blue; } +.green { color:green; } + +/* Quote an e-mail. The first
has the sender, the second the quote. */ +blockquote.mail div:nth-child(2) { border-left: solid blue; padding-left: 4pt; } + +/* C++ status tables. */ +table.cxxstatus th, table.cxxstatus td { border: 1px solid gray; } +table.cxxstatus td:nth-child(3) { text-align:center; } +table.cxxstatus tr.separator { background: #f2f2f9; } + +.supported { background-color: lightgreen; } +.unsupported { background-color: lightsalmon; } + +/* Online documentation. */ + +pre.smallexample { + font-size: medium; + background: #f2f2f9; + padding: 4px; +} + +/* Classpath versus libgcj merge status page. */ + +.classpath-only { background-color: #FFFFAA; } +.libgcj-only { background-color: #FFFFAA; } +.VM-specific { background-color: #CCCCFF; } +.GCJ-specific { background-color: #CCCCFF; } +.needsmerge { background-color: #FF9090; } +.merged { background-color: #22FF22; } +.merged-expected-diff { background-color: #22FF22; } +.merged-unexpected-diff { background-color: #FF4444; } --- gcc-7-7.3.0.orig/debian/gccgo-BV-doc.doc-base +++ gcc-7-7.3.0/debian/gccgo-BV-doc.doc-base @@ -0,0 +1,17 @@ +Document: gccgo-@BV@ +Title: The GNU Go compiler (version @BV@) +Author: Various +Abstract: This manual describes how to use gccgo, the GNU compiler for + the Go programming language. This manual is specifically about + gccgo. For more information about the Go programming + language in general, including language specifications and standard + package documentation, see http://golang.org/. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccgo.html +Files: /usr/share/doc/gcc-@BV@-base/gccgo.html + +Format: info +Index: /usr/share/info/gccgo-@BV@.info.gz +Files: /usr/share/info/gccgo-@BV@* --- gcc-7-7.3.0.orig/debian/gen-libstdc-breaks.sh +++ gcc-7-7.3.0/debian/gen-libstdc-breaks.sh @@ -0,0 +1,178 @@ +#! /bin/sh + +# https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=gcc-pr66145;users=debian-gcc@lists.debian.org + +vendor=Debian +if dpkg-vendor --derives-from Ubuntu; then + vendor=Ubuntu +fi + +if [ "$vendor" = Debian ]; then + : + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.54.0 +libboost-date-time1.55.0 +libcpprest2.4 +printer-driver-brlaser +c++-annotations +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +digikam-private-libs +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.7 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +schroot +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +else + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.55.0 +libcpprest2.2 +printer-driver-brlaser +c++-annotations +chromium-browser +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +libkgeomap2 +libmediawiki1 +libkvkontakte1 +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.6 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +fi + +fn=debian/libstdc++-breaks.$vendor +rm -f $fn +echo $pkgs +for p in $pkgs; do + #echo $p + if ! apt-cache show --no-all-versions $p >/dev/null; then + echo "not found: $p" + fi + v=$(apt-cache show --no-all-versions $p | awk '/^Version/ {print $2}') + case "$p" in + libboost-date-time*) + echo "$p," >> $fn + ;; + *) + echo "$p (<= $v)," >> $fn + esac +done --- gcc-7-7.3.0.orig/debian/gfortran-BV-CRB.preinst.in +++ gcc-7-7.3.0/debian/gfortran-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-7-7.3.0.orig/debian/gfortran-BV-doc.doc-base +++ gcc-7-7.3.0/debian/gfortran-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: gfortran-@BV@ +Title: The GNU Fortran Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gfortran', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Fortran + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html +Files: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html + +Format: info +Index: /usr/share/info/gfortran-@BV@.info.gz +Files: /usr/share/info/gfortran-@BV@* --- gcc-7-7.3.0.orig/debian/gnat-BV-doc.doc-base.rm +++ gcc-7-7.3.0/debian/gnat-BV-doc.doc-base.rm @@ -0,0 +1,16 @@ +Document: gnat-rm-@BV@ +Title: GNAT (GNU Ada) Reference Manual +Author: Various +Abstract: This manual contains useful information in writing programs + using the GNAT compiler. It includes information on implementation + dependent characteristics of GNAT, including all the information + required by Annex M of the standard. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html + +Format: info +Index: /usr/share/info/gnat_rm-@BV@.info.gz +Files: /usr/share/info/gnat_rm-@BV@* --- gcc-7-7.3.0.orig/debian/gnat-BV-doc.doc-base.style +++ gcc-7-7.3.0/debian/gnat-BV-doc.doc-base.style @@ -0,0 +1,16 @@ +Document: gnat-style-@BV@ +Title: GNAT Coding Style +Author: Various +Abstract: Most of GNAT is written in Ada using a consistent style to + ensure readability of the code. This document has been written to + help maintain this consistent style, while having a large group of + developers work on the compiler. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat-style.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat-style.html + +Format: info +Index: /usr/share/info/gnat-style-@BV@.info.gz +Files: /usr/share/info/gnat-style-@BV@* --- gcc-7-7.3.0.orig/debian/gnat-BV-doc.doc-base.ug +++ gcc-7-7.3.0/debian/gnat-BV-doc.doc-base.ug @@ -0,0 +1,16 @@ +Document: gnat-ugn-@BV@ +Title: GNAT User's Guide for Unix Platforms +Author: Various +Abstract: This guide describes the use of GNAT, a compiler and + software development toolset for the full Ada 95 programming language. + It describes the features of the compiler and tools, and details how + to use them to build Ada 95 applications. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html + +Format: info +Index: /usr/share/info/gnat_ugn-@BV@.info.gz +Files: /usr/share/info/gnat_ugn-@BV@* --- gcc-7-7.3.0.orig/debian/gnat.1 +++ gcc-7-7.3.0/debian/gnat.1 @@ -0,0 +1,43 @@ +.\" Hey, Emacs! This is an -*- nroff -*- source file. +.\" +.\" Copyright (C) 1996 Erick Branderhorst +.\" Copyright (C) 2011 Nicolas Boulenguez +.\" +.\" This is free software; you can redistribute it and/or modify it under +.\" the terms of the GNU General Public License as published by the Free +.\" Software Foundation; either version 2, or (at your option) any later +.\" version. +.\" +.\" This is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the +.\" dpkg source package as the file COPYING. If not, write to the Free +.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +.\" +.\" +.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux" +.SH NAME +gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink, +gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \- +GNAT toolbox +.SH DESCRIPTION +Those programs are part of GNU GNAT, a freely available Ada 95 compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-4.8 +and +.B info gnat-rm-4.8 +for the sections related to the reference manual. +If those sections cannot be found, you will have to install the +gnat-4.4-doc package as well (since these manuals contain invariant parts, +the package is located in the non-free part of the Debian archive). +You may also browse +.B http://gcc.gnu.org/onlinedocs +which provides the GCC online documentation. +.SH AUTHOR +This manpage has been written by Samuel Tardieu , for the +Debian GNU/Linux project. --- gcc-7-7.3.0.orig/debian/lib32asan4.overrides +++ gcc-7-7.3.0/debian/lib32asan4.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib32asan4 binary: binary-or-shlib-defines-rpath --- gcc-7-7.3.0.orig/debian/lib32asan4.symbols +++ gcc-7-7.3.0/debian/lib32asan4.symbols @@ -0,0 +1,7 @@ +libasan.so.4 lib32asan4 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.32" + (arch=s390x)__interceptor___tls_get_addr_internal@Base 7 + (arch=s390x)__interceptor___tls_get_offset@Base 7 + (arch=s390x)__tls_get_addr_internal@Base 7 + (arch=s390x)__tls_get_offset@Base 7 --- gcc-7-7.3.0.orig/debian/lib32gccLC.postinst +++ gcc-7-7.3.0/debian/lib32gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/lib32gphobos71.lintian-overrides +++ gcc-7-7.3.0/debian/lib32gphobos71.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib32z1-dev +lib32gphobos71 binary: embedded-library --- gcc-7-7.3.0.orig/debian/lib32stdc++6.symbols.amd64 +++ gcc-7-7.3.0/debian/lib32stdc++6.symbols.amd64 @@ -0,0 +1,14 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-7-7.3.0.orig/debian/lib32stdc++6.symbols.kfreebsd-amd64 +++ gcc-7-7.3.0/debian/lib32stdc++6.symbols.kfreebsd-amd64 @@ -0,0 +1,7 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/lib32stdc++6.symbols.ppc64 +++ gcc-7-7.3.0/debian/lib32stdc++6.symbols.ppc64 @@ -0,0 +1,9 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/lib32stdc++6.symbols.s390x +++ gcc-7-7.3.0/debian/lib32stdc++6.symbols.s390x @@ -0,0 +1,558 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.f128" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit.s390" + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-7-7.3.0.orig/debian/lib32stdc++6.symbols.sparc64 +++ gcc-7-7.3.0/debian/lib32stdc++6.symbols.sparc64 @@ -0,0 +1,9 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/lib32stdc++CXX.postinst +++ gcc-7-7.3.0/debian/lib32stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/lib64asan4.overrides +++ gcc-7-7.3.0/debian/lib64asan4.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib64asan4 binary: binary-or-shlib-defines-rpath --- gcc-7-7.3.0.orig/debian/lib64asan4.symbols +++ gcc-7-7.3.0/debian/lib64asan4.symbols @@ -0,0 +1,3 @@ +libasan.so.4 lib64asan4 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.64" --- gcc-7-7.3.0.orig/debian/lib64gccLC.postinst +++ gcc-7-7.3.0/debian/lib64gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/lib64gphobos71.lintian-overrides +++ gcc-7-7.3.0/debian/lib64gphobos71.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib64z1-dev +lib64gphobos71 binary: embedded-library --- gcc-7-7.3.0.orig/debian/lib64stdc++6.symbols.i386 +++ gcc-7-7.3.0/debian/lib64stdc++6.symbols.i386 @@ -0,0 +1,40 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# acosl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# asinl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# atan2l@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# atanl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# ceill@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# coshl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# cosl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# expl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# floorl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# fmodl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# frexpl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# hypotl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# log10l@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# logl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# modfl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# powl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sinhl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sinl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sqrtl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# tanhl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# tanl@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvmS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-7-7.3.0.orig/debian/lib64stdc++6.symbols.powerpc +++ gcc-7-7.3.0/debian/lib64stdc++6.symbols.powerpc @@ -0,0 +1,11 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.f128" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/lib64stdc++6.symbols.s390 +++ gcc-7-7.3.0/debian/lib64stdc++6.symbols.s390 @@ -0,0 +1,12 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/lib64stdc++6.symbols.sparc +++ gcc-7-7.3.0/debian/lib64stdc++6.symbols.sparc @@ -0,0 +1,11 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1 +# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc. +# #include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/lib64stdc++CXX.postinst +++ gcc-7-7.3.0/debian/lib64stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/libasan.symbols.16 +++ gcc-7-7.3.0/debian/libasan.symbols.16 @@ -0,0 +1,38 @@ + __sanitizer_syscall_post_impl_chown16@Base 5 + __sanitizer_syscall_post_impl_fchown16@Base 5 + __sanitizer_syscall_post_impl_getegid16@Base 5 + __sanitizer_syscall_post_impl_geteuid16@Base 5 + __sanitizer_syscall_post_impl_getgid16@Base 5 + __sanitizer_syscall_post_impl_getgroups16@Base 5 + __sanitizer_syscall_post_impl_getresgid16@Base 5 + __sanitizer_syscall_post_impl_getresuid16@Base 5 + __sanitizer_syscall_post_impl_getuid16@Base 5 + __sanitizer_syscall_post_impl_lchown16@Base 5 + __sanitizer_syscall_post_impl_setfsgid16@Base 5 + __sanitizer_syscall_post_impl_setfsuid16@Base 5 + __sanitizer_syscall_post_impl_setgid16@Base 5 + __sanitizer_syscall_post_impl_setgroups16@Base 5 + __sanitizer_syscall_post_impl_setregid16@Base 5 + __sanitizer_syscall_post_impl_setresgid16@Base 5 + __sanitizer_syscall_post_impl_setresuid16@Base 5 + __sanitizer_syscall_post_impl_setreuid16@Base 5 + __sanitizer_syscall_post_impl_setuid16@Base 5 + __sanitizer_syscall_pre_impl_chown16@Base 5 + __sanitizer_syscall_pre_impl_fchown16@Base 5 + __sanitizer_syscall_pre_impl_getegid16@Base 5 + __sanitizer_syscall_pre_impl_geteuid16@Base 5 + __sanitizer_syscall_pre_impl_getgid16@Base 5 + __sanitizer_syscall_pre_impl_getgroups16@Base 5 + __sanitizer_syscall_pre_impl_getresgid16@Base 5 + __sanitizer_syscall_pre_impl_getresuid16@Base 5 + __sanitizer_syscall_pre_impl_getuid16@Base 5 + __sanitizer_syscall_pre_impl_lchown16@Base 5 + __sanitizer_syscall_pre_impl_setfsgid16@Base 5 + __sanitizer_syscall_pre_impl_setfsuid16@Base 5 + __sanitizer_syscall_pre_impl_setgid16@Base 5 + __sanitizer_syscall_pre_impl_setgroups16@Base 5 + __sanitizer_syscall_pre_impl_setregid16@Base 5 + __sanitizer_syscall_pre_impl_setresgid16@Base 5 + __sanitizer_syscall_pre_impl_setresuid16@Base 5 + __sanitizer_syscall_pre_impl_setreuid16@Base 5 + __sanitizer_syscall_pre_impl_setuid16@Base 5 --- gcc-7-7.3.0.orig/debian/libasan.symbols.32 +++ gcc-7-7.3.0/debian/libasan.symbols.32 @@ -0,0 +1,26 @@ + (arch=!ppc64 !sparc64)__interceptor_ptrace@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdaPvj@Base 5 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdaPvjSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdlPvj@Base 5 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdlPvjSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_Znaj@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnajRKSt9nothrow_t@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnajSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnajSt11align_val_tRKSt9nothrow_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_Znwj@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnwjRKSt9nothrow_t@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnwjSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnwjSt11align_val_tRKSt9nothrow_t@Base 7 + (arch=s390x)_ZdaPvm@Base 7.3 + (arch=s390x)_ZdaPvmSt11align_val_t@Base 7.3 + (arch=s390x)_ZdlPvm@Base 7.3 + (arch=s390x)_ZdlPvmSt11align_val_t@Base 7.3 + (arch=s390x)_Znam@Base 7.3 + (arch=s390x)_ZnamRKSt9nothrow_t@Base 7.3 + (arch=s390x)_ZnamSt11align_val_t@Base 7.3 + (arch=s390x)_ZnamSt11align_val_tRKSt9nothrow_t@Base 7.3 + (arch=s390x)_Znwm@Base 7.3 + (arch=s390x)_ZnwmRKSt9nothrow_t@Base 7.3 + (arch=s390x)_ZnwmSt11align_val_t@Base 7.3 + (arch=s390x)_ZnwmSt11align_val_tRKSt9nothrow_t@Base 7.3 + (arch=!ppc64 !sparc64)ptrace@Base 7 --- gcc-7-7.3.0.orig/debian/libasan.symbols.64 +++ gcc-7-7.3.0/debian/libasan.symbols.64 @@ -0,0 +1,15 @@ + __interceptor_shmctl@Base 4.9 + (arch=base-any-linux-amd64 base-any-linux-arm64 any-linux-mips64 any-linux-mips64el)__sanitizer_print_memory_profile@Base 7 + _ZdaPvm@Base 5 + _ZdaPvmSt11align_val_t@Base 7 + _ZdlPvm@Base 5 + _ZdlPvmSt11align_val_t@Base 7 + _Znam@Base 4.8 + _ZnamRKSt9nothrow_t@Base 4.8 + _ZnamSt11align_val_t@Base 7 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 7 + _Znwm@Base 4.8 + _ZnwmRKSt9nothrow_t@Base 4.8 + _ZnwmSt11align_val_t@Base 7 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 7 + shmctl@Base 4.9 --- gcc-7-7.3.0.orig/debian/libasan.symbols.common +++ gcc-7-7.3.0/debian/libasan.symbols.common @@ -0,0 +1,1667 @@ + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.8 + _ZN11__sanitizer7OnPrintEPKc@Base 4.9 + _ZdaPv@Base 4.8 + _ZdaPvRKSt9nothrow_t@Base 4.8 + _ZdaPvSt11align_val_t@Base 7 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 7 + _ZdlPv@Base 4.8 + _ZdlPvRKSt9nothrow_t@Base 4.8 + _ZdlPvSt11align_val_t@Base 7 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 7 + __asan_addr_is_in_fake_stack@Base 5 + __asan_address_is_poisoned@Base 4.8 + __asan_after_dynamic_init@Base 4.8 + __asan_alloca_poison@Base 6.2 + __asan_allocas_unpoison@Base 6.2 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_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_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_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_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_globals@Base 4.8 + __asan_unregister_image_globals@Base 7 +#MISSING: 7# __asan_version_mismatch_check_v6@Base 6.2 + __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___lxstat64@Base 7 + __interceptor___lxstat@Base 7 + __interceptor___overflow@Base 5 + __interceptor___strdup@Base 7 + __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_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_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_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_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_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_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_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_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_wcslen@Base 4.9 + __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 + __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 + __sanitizer_annotate_contiguous_container@Base 4.9 + __sanitizer_contiguous_container_find_bad_address@Base 6.2 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_indir_call16@Base 5 + __sanitizer_cov_init@Base 5 + __sanitizer_cov_module_init@Base 5 + __sanitizer_cov_trace_basic_block@Base 6.2 + __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_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_func_enter@Base 6.2 + __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_cov_with_check@Base 6.2 + __sanitizer_finish_switch_fiber@Base 7 + __sanitizer_get_allocated_size@Base 5 + __sanitizer_get_coverage_guards@Base 6.2 + __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_number_of_counters@Base 6.2 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_total_unique_caller_callee_pairs@Base 6.2 + __sanitizer_get_total_unique_coverage@Base 6.2 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_maybe_open_cov_file@Base 5 + __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_reset_coverage@Base 6.2 + __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_update_counter_bitset_and_clear_counters@Base 6.2 + __sanitizer_verify_contiguous_container@Base 5 + __strdup@Base 7 + __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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + wcslen@Base 4.9 + 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 + (optional)backtrace_uncompress_zdebug@Base 7 --- gcc-7-7.3.0.orig/debian/libasan4.symbols +++ gcc-7-7.3.0/debian/libasan4.symbols @@ -0,0 +1,28 @@ +libasan.so.4 libasan4 #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 7 + (arch=s390x)__interceptor___tls_get_offset@Base 7 + (arch=s390x)__tls_get_addr_internal@Base 7 + (arch=s390x)__tls_get_offset@Base 7 + (arch=!armel !powerpc !sparc !sparc64)__interceptor_ptrace@Base 4.9 + (arch=!armel !powerpc !sparc !sparc64)ptrace@Base 4.9 + (arch=any-amd64 x32 any-mips any-mipsel)internal_sigreturn@Base 7 + (arch=armel armhf)__interceptor___aeabi_memclr4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memclr8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memclr@Base 5 + (arch=armel armhf)__interceptor___aeabi_memcpy4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memcpy8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memcpy@Base 5 + (arch=armel armhf)__interceptor___aeabi_memmove4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memmove8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memmove@Base 5 + (arch=armel armhf)__interceptor___aeabi_memset4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memset8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memset@Base 5 --- gcc-7-7.3.0.orig/debian/libatomic.symbols +++ gcc-7-7.3.0/debian/libatomic.symbols @@ -0,0 +1,4 @@ +libatomic.so.1 #PACKAGE# #MINVER# + (symver)LIBATOMIC_1.0 4.8 + (symver)LIBATOMIC_1.1 4.9 + (symver)LIBATOMIC_1.2 6 --- gcc-7-7.3.0.orig/debian/libcc1-0.symbols +++ gcc-7-7.3.0/debian/libcc1-0.symbols @@ -0,0 +1,64 @@ +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 + _xexit_cleanup@Base 5 + (optional=abi_c++11)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRKS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 7 + (optional=abi_c++11)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 7 + concat@Base 5 + concat_copy2@Base 5 + concat_copy@Base 5 + concat_length@Base 5 + gcc_c_fe_context@Base 5 + gcc_cp_fe_context@Base 7 + htab_clear_slot@Base 5 + htab_collisions@Base 5 + htab_create@Base 5 + htab_create_alloc@Base 5 + htab_create_alloc_ex@Base 5 + htab_create_typed_alloc@Base 5 + htab_delete@Base 5 + htab_elements@Base 5 + htab_empty@Base 5 + htab_eq_pointer@Base 5 + htab_find@Base 5 + htab_find_slot@Base 5 + htab_find_slot_with_hash@Base 5 + htab_find_with_hash@Base 5 + htab_hash_pointer@Base 5 + htab_hash_string@Base 5 + htab_remove_elt@Base 5 + htab_remove_elt_with_hash@Base 5 + htab_set_functions_ex@Base 5 + htab_size@Base 5 + htab_traverse@Base 5 + htab_traverse_noresize@Base 5 + htab_try_create@Base 5 + iterative_hash@Base 5 + libiberty_concat_ptr@Base 5 + reconcat@Base 5 + xcalloc@Base 5 + xexit@Base 5 + xmalloc@Base 5 + xmalloc_failed@Base 5 + xmalloc_set_program_name@Base 5 + xre_comp@Base 5 + xre_compile_fastmap@Base 5 + xre_compile_pattern@Base 5 + xre_exec@Base 5 + xre_match@Base 5 + xre_match_2@Base 5 + xre_max_failures@Base 5 + xre_search@Base 5 + xre_search_2@Base 5 + xre_set_registers@Base 5 + xre_set_syntax@Base 5 + xre_syntax_options@Base 5 + xrealloc@Base 5 + xregcomp@Base 5 + xregerror@Base 5 + xregexec@Base 5 + xregfree@Base 5 + xstrdup@Base 7 --- gcc-7-7.3.0.orig/debian/libcilkrts.symbols +++ gcc-7-7.3.0/debian/libcilkrts.symbols @@ -0,0 +1,4 @@ +libcilkrts.so.5 #PACKAGE# #MINVER# + (symver)CILKABI0 4.9 + (symver)CILKABI1 4.9 + (symver)CILKLIB1.02 4.9 --- gcc-7-7.3.0.orig/debian/libgcc.symbols +++ gcc-7-7.3.0/debian/libgcc.symbols @@ -0,0 +1,26 @@ +libgcc_s.so.1 #PACKAGE# #MINVER# + (symver)GCC_3.0 1:3.0 + (symver)GCC_3.3 1:3.3 + (symver)GCC_3.3.1 1:3.3.1 +# __gcc_personality_sj0, __gcc_personality_v0 +#(symver|optional)GCC_3.3.2 1:3.3.2 + (symver|arch=armel armhf mips mipsel mipsn32 mips64 mips64el powerpc powerpcspe sh4)GCC_3.3.4 1:3.3.4 + (symver)GCC_3.4 1:3.4 + (symver)GCC_3.4.2 1:3.4.2 +#(symver|arch-bits=32)GCC_3.4.4 1:3.4.4 + (symver|arch=!armel !armhf !any-i386 !mips !mipsel !powerpc !powerpcspe !s390 !sh4 !sparc)GCC_3.4.4 1:3.4.4 + (symver|arch=armel armhf|ignore-blacklist)GCC_3.5 1:3.5 + (symver)GCC_4.0.0 1:4.0 + (symver|arch=powerpc s390 s390x)GCC_4.1.0 1:4.1 + (symver)GCC_4.2.0 1:4.2 + (symver)GCC_4.3.0 1:4.3 + (symver|arch=any-i386 mips mipsel mipsn32 mips64 mips64el)GCC_4.4.0 1:4.4 + (symver|arch=arm64 any-i386 mipsn32 mips64 mips64el)GCC_4.5.0 1:4.5 +#(symver|optional)GCC_4.6.0 1:4.6 + (symver)GCC_4.7.0 1:4.7 + (symver|arch=any-amd64 any-i386 x32)GCC_4.8.0 1:4.8 + (symver|arch=!any-amd64 !x32 !sparc64 !s390x)GLIBC_2.0 1:4.2 + (symver|arch=s390x sh4 sparc64)GLIBC_2.2 1:4.2 + (symver|arch=sparc)GCC_LDBL_3.0@GCC_LDBL_3.0 1:3.0 + (symver|arch=alpha sparc)GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.0 + (symver)GCC_7.0.0 1:7 --- gcc-7-7.3.0.orig/debian/libgcc.symbols.aeabi +++ gcc-7-7.3.0/debian/libgcc.symbols.aeabi @@ -0,0 +1,69 @@ + __aeabi_cdcmpeq@GCC_3.5 1:3.5 + __aeabi_cdcmple@GCC_3.5 1:3.5 + __aeabi_cdrcmple@GCC_3.5 1:3.5 + __aeabi_cfcmpeq@GCC_3.5 1:3.5 + __aeabi_cfcmple@GCC_3.5 1:3.5 + __aeabi_cfrcmple@GCC_3.5 1:3.5 + __aeabi_d2f@GCC_3.5 1:3.5 + __aeabi_d2iz@GCC_3.5 1:3.5 + __aeabi_d2lz@GCC_3.5 1:3.5 + __aeabi_d2uiz@GCC_3.5 1:3.5 + __aeabi_d2ulz@GCC_3.5 1:3.5 + __aeabi_dadd@GCC_3.5 1:3.5 + __aeabi_dcmpeq@GCC_3.5 1:3.5 + __aeabi_dcmpge@GCC_3.5 1:3.5 + __aeabi_dcmpgt@GCC_3.5 1:3.5 + __aeabi_dcmple@GCC_3.5 1:3.5 + __aeabi_dcmplt@GCC_3.5 1:3.5 + __aeabi_dcmpun@GCC_3.5 1:3.5 + __aeabi_ddiv@GCC_3.5 1:3.5 + __aeabi_dmul@GCC_3.5 1:3.5 + __aeabi_dneg@GCC_3.5 1:3.5 + __aeabi_drsub@GCC_3.5 1:3.5 + __aeabi_dsub@GCC_3.5 1:3.5 + __aeabi_f2d@GCC_3.5 1:3.5 + __aeabi_f2iz@GCC_3.5 1:3.5 + __aeabi_f2lz@GCC_3.5 1:3.5 + __aeabi_f2uiz@GCC_3.5 1:3.5 + __aeabi_f2ulz@GCC_3.5 1:3.5 + __aeabi_fadd@GCC_3.5 1:3.5 + __aeabi_fcmpeq@GCC_3.5 1:3.5 + __aeabi_fcmpge@GCC_3.5 1:3.5 + __aeabi_fcmpgt@GCC_3.5 1:3.5 + __aeabi_fcmple@GCC_3.5 1:3.5 + __aeabi_fcmplt@GCC_3.5 1:3.5 + __aeabi_fcmpun@GCC_3.5 1:3.5 + __aeabi_fdiv@GCC_3.5 1:3.5 + __aeabi_fmul@GCC_3.5 1:3.5 + __aeabi_fneg@GCC_3.5 1:3.5 + __aeabi_frsub@GCC_3.5 1:3.5 + __aeabi_fsub@GCC_3.5 1:3.5 + __aeabi_i2d@GCC_3.5 1:3.5 + __aeabi_i2f@GCC_3.5 1:3.5 + __aeabi_idiv@GCC_3.5 1:3.5 + __aeabi_idiv0@GCC_3.5 1:4.5.0 + __aeabi_idivmod@GCC_3.5 1:3.5 + __aeabi_l2d@GCC_3.5 1:3.5 + __aeabi_l2f@GCC_3.5 1:3.5 + __aeabi_lasr@GCC_3.5 1:3.5 + __aeabi_lcmp@GCC_3.5 1:3.5 + __aeabi_ldivmod@GCC_3.5 1:3.5 + __aeabi_ldiv0@GCC_3.5 1:4.5.0 + __aeabi_llsl@GCC_3.5 1:3.5 + __aeabi_llsr@GCC_3.5 1:3.5 + __aeabi_lmul@GCC_3.5 1:3.5 + __aeabi_ui2d@GCC_3.5 1:3.5 + __aeabi_ui2f@GCC_3.5 1:3.5 + __aeabi_uidiv@GCC_3.5 1:3.5 + __aeabi_uidivmod@GCC_3.5 1:3.5 + __aeabi_ul2d@GCC_3.5 1:3.5 + __aeabi_ul2f@GCC_3.5 1:3.5 + __aeabi_ulcmp@GCC_3.5 1:3.5 + __aeabi_uldivmod@GCC_3.5 1:3.5 + __aeabi_unwind_cpp_pr0@GCC_3.5 1:3.5 + __aeabi_unwind_cpp_pr1@GCC_3.5 1:3.5 + __aeabi_unwind_cpp_pr2@GCC_3.5 1:3.5 + __aeabi_uread4@GCC_3.5 1:3.5 + __aeabi_uread8@GCC_3.5 1:3.5 + __aeabi_uwrite4@GCC_3.5 1:3.5 + __aeabi_uwrite8@GCC_3.5 1:3.5 --- gcc-7-7.3.0.orig/debian/libgcc2.symbols.m68k +++ gcc-7-7.3.0/debian/libgcc2.symbols.m68k @@ -0,0 +1,162 @@ +libgcc_s.so.2 libgcc2 #MINVER# + GCC_3.0@GCC_3.0 4.2.1 + GCC_3.3.1@GCC_3.3.1 4.2.1 + GCC_3.3.4@GCC_3.3.4 4.4.5 + GCC_3.3@GCC_3.3 4.2.1 + GCC_3.4.2@GCC_3.4.2 4.2.1 + GCC_3.4@GCC_3.4 4.2.1 + GCC_4.0.0@GCC_4.0.0 4.2.1 + GCC_4.2.0@GCC_4.2.0 4.2.1 + GCC_4.3.0@GCC_4.3.0 4.3.0 + GCC_4.5.0@GCC_4.5.0 4.5 + GCC_4.7.0@GCC_4.7.0 4.7 + GLIBC_2.0@GLIBC_2.0 4.2.1 + _Unwind_Backtrace@GCC_3.3 4.2.1 + _Unwind_DeleteException@GCC_3.0 4.2.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1 + _Unwind_Find_FDE@GCC_3.0 4.2.1 + _Unwind_ForcedUnwind@GCC_3.0 4.2.1 + _Unwind_GetCFA@GCC_3.3 4.2.1 + _Unwind_GetDataRelBase@GCC_3.0 4.2.1 + _Unwind_GetGR@GCC_3.0 4.2.1 + _Unwind_GetIP@GCC_3.0 4.2.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.2.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1 + _Unwind_GetRegionStart@GCC_3.0 4.2.1 + _Unwind_GetTextRelBase@GCC_3.0 4.2.1 + _Unwind_RaiseException@GCC_3.0 4.2.1 + _Unwind_Resume@GCC_3.0 4.2.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1 + _Unwind_SetGR@GCC_3.0 4.2.1 + _Unwind_SetIP@GCC_3.0 4.2.1 + __absvdi2@GCC_3.0 4.2.1 + __absvsi2@GCC_3.0 4.2.1 + __adddf3@GCC_3.0 4.4.5 + __addsf3@GCC_3.0 4.4.5 + __addvdi3@GCC_3.0 4.2.1 + __addvsi3@GCC_3.0 4.2.1 + __addxf3@GCC_3.0 4.4.5 + __ashldi3@GCC_3.0 4.2.1 + __ashrdi3@GCC_3.0 4.2.1 + __bswapdi2@GCC_4.3.0 4.3.0 + __bswapsi2@GCC_4.3.0 4.3.0 + __clear_cache@GCC_3.0 4.2.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.2.1 + __clzsi2@GCC_3.4 4.2.1 + __cmpdi2@GCC_3.0 4.2.1 + __ctzdi2@GCC_3.4 4.2.1 + __ctzsi2@GCC_3.4 4.2.1 + __deregister_frame@GLIBC_2.0 4.2.1 + __deregister_frame_info@GLIBC_2.0 4.2.1 + __deregister_frame_info_bases@GCC_3.0 4.2.1 + __divdc3@GCC_4.0.0 4.2.1 + __divdf3@GCC_3.0 4.4.5 + __divdi3@GLIBC_2.0 4.2.1 + __divsc3@GCC_4.0.0 4.2.1 + __divsf3@GCC_3.0 4.4.5 + __divsi3@GCC_3.0 4.4.5 + __divxc3@GCC_4.0.0 4.2.1 + __divxf3@GCC_3.0 4.4.5 + __emutls_get_address@GCC_4.3.0 4.3.0 + __emutls_register_common@GCC_4.3.0 4.3.0 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __eqdf2@GCC_3.0 4.4.5 + __eqsf2@GCC_3.0 4.4.5 + __eqxf2@GCC_3.0 4.4.5 + __extenddfxf2@GCC_3.0 4.4.5 + __extendsfdf2@GCC_3.0 4.4.5 + __extendsfxf2@GCC_3.0 4.4.5 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 4.3.0 + __fixdfdi@GCC_3.0 4.2.1 + __fixdfsi@GCC_3.0 4.4.5 + __fixsfdi@GCC_3.0 4.2.1 + __fixsfsi@GCC_3.0 4.4.5 + __fixunsdfdi@GCC_3.0 4.2.1 + __fixunsdfsi@GCC_3.0 4.2.1 + __fixunssfdi@GCC_3.0 4.2.1 + __fixunssfsi@GCC_3.0 4.2.1 + __fixunsxfdi@GCC_3.0 4.2.1 + __fixunsxfsi@GCC_3.0 4.2.1 + __fixxfdi@GCC_3.0 4.2.1 + __fixxfsi@GCC_3.0 4.4.5 + __floatdidf@GCC_3.0 4.2.1 + __floatdisf@GCC_3.0 4.2.1 + __floatdixf@GCC_3.0 4.2.1 + __floatsidf@GCC_3.0 4.4.5 + __floatsisf@GCC_3.0 4.4.5 + __floatsixf@GCC_3.0 4.4.5 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __floatundixf@GCC_4.2.0 4.2.1 + __floatunsidf@GCC_4.2.0 4.4.5 + __floatunsisf@GCC_4.2.0 4.4.5 + __floatunsixf@GCC_4.2.0 4.4.5 + __frame_state_for@GLIBC_2.0 4.2.1 + __gcc_personality_v0@GCC_3.3.1 4.2.1 + __gedf2@GCC_3.0 4.4.5 + __gesf2@GCC_3.0 4.4.5 + __gexf2@GCC_3.0 4.4.5 + __gtdf2@GCC_3.0 4.4.5 + __gtsf2@GCC_3.0 4.4.5 + __gtxf2@GCC_3.0 4.4.5 + __ledf2@GCC_3.0 4.4.5 + __lesf2@GCC_3.0 4.4.5 + __lexf2@GCC_3.0 4.4.5 + __lshrdi3@GCC_3.0 4.2.1 + __ltdf2@GCC_3.0 4.4.5 + __ltsf2@GCC_3.0 4.4.5 + __ltxf2@GCC_3.0 4.4.5 + __moddi3@GLIBC_2.0 4.2.1 + __modsi3@GCC_3.0 4.4.5 + __muldc3@GCC_4.0.0 4.2.1 + __muldf3@GCC_3.0 4.4.5 + __muldi3@GCC_3.0 4.2.1 + __mulsc3@GCC_4.0.0 4.2.1 + __mulsf3@GCC_3.0 4.4.5 + __mulsi3@GCC_3.0 4.4.5 + __mulvdi3@GCC_3.0 4.2.1 + __mulvsi3@GCC_3.0 4.2.1 + __mulxc3@GCC_4.0.0 4.2.1 + __mulxf3@GCC_3.0 4.4.5 + __nedf2@GCC_3.0 4.4.5 + __negdf2@GCC_3.0 4.4.5 + __negdi2@GCC_3.0 4.2.1 + __negsf2@GCC_3.0 4.4.5 + __negvdi2@GCC_3.0 4.2.1 + __negvsi2@GCC_3.0 4.2.1 + __negxf2@GCC_3.0 4.4.5 + __nesf2@GCC_3.0 4.4.5 + __nexf2@GCC_3.0 4.4.5 + __paritydi2@GCC_3.4 4.2.1 + __paritysi2@GCC_3.4 4.2.1 + __popcountdi2@GCC_3.4 4.2.1 + __popcountsi2@GCC_3.4 4.2.1 + __powidf2@GCC_4.0.0 4.2.1 + __powisf2@GCC_4.0.0 4.2.1 + __powixf2@GCC_4.0.0 4.2.1 + __register_frame@GLIBC_2.0 4.2.1 + __register_frame_info@GLIBC_2.0 4.2.1 + __register_frame_info_bases@GCC_3.0 4.2.1 + __register_frame_info_table@GLIBC_2.0 4.2.1 + __register_frame_info_table_bases@GCC_3.0 4.2.1 + __register_frame_table@GLIBC_2.0 4.2.1 + __subdf3@GCC_3.0 4.4.5 + __subsf3@GCC_3.0 4.4.5 + __subvdi3@GCC_3.0 4.2.1 + __subvsi3@GCC_3.0 4.2.1 + __subxf3@GCC_3.0 4.4.5 + __truncdfsf2@GCC_3.0 4.4.5 + __truncxfdf2@GCC_3.0 4.4.5 + __truncxfsf2@GCC_3.0 4.4.5 + __ucmpdi2@GCC_3.0 4.2.1 + __udivdi3@GLIBC_2.0 4.2.1 + __udivmoddi4@GCC_3.0 4.2.1 + __udivsi3@GCC_3.0 4.4.5 + __umoddi3@GLIBC_2.0 4.2.1 + __umodsi3@GCC_3.0 4.4.5 + __unorddf2@GCC_3.3.4 4.4.5 + __unordsf2@GCC_3.3.4 4.4.5 + __unordxf2@GCC_4.5.0 4.7 --- gcc-7-7.3.0.orig/debian/libgcc4.symbols.hppa +++ gcc-7-7.3.0/debian/libgcc4.symbols.hppa @@ -0,0 +1,96 @@ +libgcc_s.so.4 libgcc4 #MINVER# + GCC_3.0@GCC_3.0 4.1.1 + GCC_3.3.1@GCC_3.3.1 4.1.1 + GCC_3.3@GCC_3.3 4.1.1 + GCC_3.4.2@GCC_3.4.2 4.1.1 + GCC_3.4@GCC_3.4 4.1.1 + GCC_4.0.0@GCC_4.0.0 4.1.1 + GCC_4.2.0@GCC_4.2.0 4.1.1 + GCC_4.3.0@GCC_4.3.0 4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 4.1.1 + _Unwind_Backtrace@GCC_3.3 4.1.1 + _Unwind_DeleteException@GCC_3.0 4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.1.1 + _Unwind_Find_FDE@GCC_3.0 4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 4.1.1 + _Unwind_GetCFA@GCC_3.3 4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 4.1.1 + _Unwind_GetGR@GCC_3.0 4.1.1 + _Unwind_GetIP@GCC_3.0 4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.1.1 + _Unwind_GetRegionStart@GCC_3.0 4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 4.1.1 + _Unwind_RaiseException@GCC_3.0 4.1.1 + _Unwind_Resume@GCC_3.0 4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.1.1 + _Unwind_SetGR@GCC_3.0 4.1.1 + _Unwind_SetIP@GCC_3.0 4.1.1 + __absvdi2@GCC_3.0 4.1.1 + __absvsi2@GCC_3.0 4.1.1 + __addvdi3@GCC_3.0 4.1.1 + __addvsi3@GCC_3.0 4.1.1 + __ashldi3@GCC_3.0 4.1.1 + __ashrdi3@GCC_3.0 4.1.1 + __bswapdi2@GCC_4.3.0 4.3 + __bswapsi2@GCC_4.3.0 4.3 + __clear_cache@GCC_3.0 4.1.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.1.1 + __clzsi2@GCC_3.4 4.1.1 + __cmpdi2@GCC_3.0 4.1.1 + __ctzdi2@GCC_3.4 4.1.1 + __ctzsi2@GCC_3.4 4.1.1 + __deregister_frame@GLIBC_2.0 4.1.1 + __deregister_frame_info@GLIBC_2.0 4.1.1 + __deregister_frame_info_bases@GCC_3.0 4.1.1 + __divdc3@GCC_4.0.0 4.1.1 + __divdi3@GLIBC_2.0 4.1.1 + __divsc3@GCC_4.0.0 4.1.1 + __emutls_get_address@GCC_4.3.0 4.3 + __emutls_register_common@GCC_4.3.0 4.3 + __enable_execute_stack@GCC_3.4.2 4.1.1 + __ffsdi2@GCC_3.0 4.1.1 + __ffssi2@GCC_4.3.0 4.3 + __fixdfdi@GCC_3.0 4.1.1 + __fixsfdi@GCC_3.0 4.1.1 + __fixunsdfdi@GCC_3.0 4.1.1 + __fixunsdfsi@GCC_3.0 4.1.1 + __fixunssfdi@GCC_3.0 4.1.1 + __fixunssfsi@GCC_3.0 4.1.1 + __floatdidf@GCC_3.0 4.1.1 + __floatdisf@GCC_3.0 4.1.1 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __frame_state_for@GLIBC_2.0 4.1.1 + __gcc_personality_v0@GCC_3.3.1 4.1.1 + __lshrdi3@GCC_3.0 4.1.1 + __moddi3@GLIBC_2.0 4.1.1 + __muldc3@GCC_4.0.0 4.1.1 + __muldi3@GCC_3.0 4.1.1 + __mulsc3@GCC_4.0.0 4.1.1 + __mulvdi3@GCC_3.0 4.1.1 + __mulvsi3@GCC_3.0 4.1.1 + __negdi2@GCC_3.0 4.1.1 + __negvdi2@GCC_3.0 4.1.1 + __negvsi2@GCC_3.0 4.1.1 + __paritydi2@GCC_3.4 4.1.1 + __paritysi2@GCC_3.4 4.1.1 + __popcountdi2@GCC_3.4 4.1.1 + __popcountsi2@GCC_3.4 4.1.1 + __powidf2@GCC_4.0.0 4.1.1 + __powisf2@GCC_4.0.0 4.1.1 + __register_frame@GLIBC_2.0 4.1.1 + __register_frame_info@GLIBC_2.0 4.1.1 + __register_frame_info_bases@GCC_3.0 4.1.1 + __register_frame_info_table@GLIBC_2.0 4.1.1 + __register_frame_info_table_bases@GCC_3.0 4.1.1 + __register_frame_table@GLIBC_2.0 4.1.1 + __subvdi3@GCC_3.0 4.1.1 + __subvsi3@GCC_3.0 4.1.1 + __ucmpdi2@GCC_3.0 4.1.1 + __udivdi3@GLIBC_2.0 4.1.1 + __udivmoddi4@GCC_3.0 4.1.1 + __umoddi3@GLIBC_2.0 4.1.1 --- gcc-7-7.3.0.orig/debian/libgccLC.postinst +++ gcc-7-7.3.0/debian/libgccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libgcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/libgccjit0.symbols +++ gcc-7-7.3.0/debian/libgccjit0.symbols @@ -0,0 +1,8 @@ +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 --- gcc-7-7.3.0.orig/debian/libgfortran.symbols +++ gcc-7-7.3.0/debian/libgfortran.symbols @@ -0,0 +1,4 @@ +libgfortran.so.4 #PACKAGE# #MINVER# + (symver)GFORTRAN_7 7 + (symver)GFORTRAN_C99_7 7 + (symver)GFORTRAN_F2C_7 7 --- gcc-7-7.3.0.orig/debian/libgomp.symbols +++ gcc-7-7.3.0/debian/libgomp.symbols @@ -0,0 +1,18 @@ +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)OMP_1.0 4.2.1 + (symver)OMP_2.0 4.2.1 + (symver)OMP_3.0 4.4 + (symver)OMP_3.1 4.7 + (symver)OMP_4.0 4.9 + (symver)OMP_4.5 6 --- gcc-7-7.3.0.orig/debian/libhsail-rt.symbols +++ gcc-7-7.3.0/debian/libhsail-rt.symbols @@ -0,0 +1,153 @@ +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_clock@Base 7 + __hsail_cuid@Base 7 + __hsail_currentworkgroupsize@Base 7 + __hsail_currentworkitemflatid@Base 7 + __hsail_cvt_zeroi_sat_s16_f32@Base 7 + __hsail_cvt_zeroi_sat_s16_f64@Base 7 + __hsail_cvt_zeroi_sat_s32_f32@Base 7 + __hsail_cvt_zeroi_sat_s32_f64@Base 7 + __hsail_cvt_zeroi_sat_s64_f32@Base 7 + __hsail_cvt_zeroi_sat_s64_f64@Base 7 + __hsail_cvt_zeroi_sat_s8_f32@Base 7 + __hsail_cvt_zeroi_sat_s8_f64@Base 7 + __hsail_cvt_zeroi_sat_u16_f32@Base 7 + __hsail_cvt_zeroi_sat_u16_f64@Base 7 + __hsail_cvt_zeroi_sat_u32_f32@Base 7 + __hsail_cvt_zeroi_sat_u32_f64@Base 7 + __hsail_cvt_zeroi_sat_u64_f32@Base 7 + __hsail_cvt_zeroi_sat_u64_f64@Base 7 + __hsail_cvt_zeroi_sat_u8_f32@Base 7 + __hsail_cvt_zeroi_sat_u8_f64@Base 7 + __hsail_debugtrap@Base 7 + __hsail_dim@Base 7 + __hsail_f16_to_f32@Base 7 + __hsail_f32_to_f16@Base 7 + __hsail_firstbit_s32@Base 7 + __hsail_firstbit_s64@Base 7 + __hsail_firstbit_u32@Base 7 + __hsail_firstbit_u64@Base 7 + __hsail_fract_f32@Base 7 + __hsail_fract_f64@Base 7 + __hsail_ftz_f32@Base 7 + __hsail_ftz_f32_f16@Base 7 + __hsail_ftz_f64@Base 7 + __hsail_gridgroups@Base 7 + __hsail_gridsize@Base 7 + __hsail_groupbaseptr@Base 7 + __hsail_initfbar@Base 7 + __hsail_joinfbar@Base 7 + __hsail_kernargbaseptr_u32@Base 7 + __hsail_kernargbaseptr_u64@Base 7 + __hsail_lastbit_u32@Base 7 + __hsail_lastbit_u64@Base 7 + __hsail_launch_kernel@Base 7 + __hsail_launch_wg_function@Base 7 + __hsail_ldqueuereadindex@Base 7 + __hsail_ldqueuewriteindex@Base 7 + __hsail_leavefbar@Base 7 + __hsail_lerp@Base 7 + __hsail_max_f32@Base 7 + __hsail_max_f64@Base 7 + __hsail_maxcuid@Base 7 + __hsail_min_f32@Base 7 + __hsail_min_f64@Base 7 + __hsail_packcvt@Base 7 + __hsail_packetcompletionsig_sig32@Base 7 + __hsail_packetcompletionsig_sig64@Base 7 + __hsail_packetid@Base 7 + __hsail_releasefbar@Base 7 + __hsail_rem_s32@Base 7 + __hsail_rem_s64@Base 7 + __hsail_sad_u16x2@Base 7 + __hsail_sad_u32@Base 7 + __hsail_sad_u8x4@Base 7 + __hsail_sadhi_u16x2_u8x4@Base 7 + __hsail_sat_add_s16@Base 7 + __hsail_sat_add_s32@Base 7 + __hsail_sat_add_s64@Base 7 + __hsail_sat_add_s8@Base 7 + __hsail_sat_add_u16@Base 7 + __hsail_sat_add_u32@Base 7 + __hsail_sat_add_u64@Base 7 + __hsail_sat_add_u8@Base 7 + __hsail_sat_mul_s16@Base 7 + __hsail_sat_mul_s32@Base 7 + __hsail_sat_mul_s64@Base 7 + __hsail_sat_mul_s8@Base 7 + __hsail_sat_mul_u16@Base 7 + __hsail_sat_mul_u32@Base 7 + __hsail_sat_mul_u64@Base 7 + __hsail_sat_mul_u8@Base 7 + __hsail_sat_sub_s16@Base 7 + __hsail_sat_sub_s32@Base 7 + __hsail_sat_sub_s64@Base 7 + __hsail_sat_sub_s8@Base 7 + __hsail_sat_sub_u16@Base 7 + __hsail_sat_sub_u32@Base 7 + __hsail_sat_sub_u64@Base 7 + __hsail_sat_sub_u8@Base 7 + __hsail_segmentp_global@Base 7 + __hsail_segmentp_group@Base 7 + __hsail_segmentp_private@Base 7 + __hsail_setworkitemid@Base 7 + __hsail_stqueuereadindex@Base 7 + __hsail_stqueuewriteindex@Base 7 + __hsail_unpackcvt@Base 7 + __hsail_waitfbar@Base 7 + __hsail_workgroupid@Base 7 + __hsail_workgroupsize@Base 7 + __hsail_workitemabsid@Base 7 + __hsail_workitemabsid_u64@Base 7 + __hsail_workitemflatabsid_u32@Base 7 + __hsail_workitemflatabsid_u64@Base 7 + __hsail_workitemflatid@Base 7 + __hsail_workitemid@Base 7 + fiber_barrier_init@Base 7 + fiber_barrier_reach@Base 7 + fiber_exit@Base 7 + fiber_init@Base 7 + fiber_int_args_to_ptr@Base 7 + fiber_join@Base 7 + fiber_yield@Base 7 + main_context@Base 7 + phsa_fatal_error@Base 7 --- gcc-7-7.3.0.orig/debian/libitm.symbols +++ gcc-7-7.3.0/debian/libitm.symbols @@ -0,0 +1,3 @@ +libitm.so.1 #PACKAGE# #MINVER# + (symver)LIBITM_1.0 4.7 + (symver)LIBITM_1.1 6 --- gcc-7-7.3.0.orig/debian/liblsan0.symbols +++ gcc-7-7.3.0/debian/liblsan0.symbols @@ -0,0 +1,134 @@ +liblsan.so.0 liblsan0 #MINVER# + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.9 + _ZN11__sanitizer7OnPrintEPKc@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_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_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_memalign@Base 4.9 + __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_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_register_root_region@Base 5 + __lsan_unregister_root_region@Base 5 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_indir_call16@Base 5 + __sanitizer_cov_init@Base 5 + __sanitizer_cov_module_init@Base 5 + __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_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __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 + __sanitizer_cov_with_check@Base 6 + __sanitizer_get_allocated_size@Base 5 + __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_number_of_counters@Base 6 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_total_unique_caller_callee_pairs@Base 6 + __sanitizer_get_total_unique_coverage@Base 6 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_maybe_open_cov_file@Base 5 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_report_error_summary@Base 4.9 + __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_update_counter_bitset_and_clear_counters@Base 6 + aligned_alloc@Base 5 + (optional)backtrace_uncompress_zdebug@Base 7 + 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 + memalign@Base 4.9 + posix_memalign@Base 4.9 + pthread_create@Base 4.9 + pthread_join@Base 4.9 + pvalloc@Base 4.9 + realloc@Base 4.9 + valloc@Base 4.9 --- gcc-7-7.3.0.orig/debian/libmpx.symbols +++ gcc-7-7.3.0/debian/libmpx.symbols @@ -0,0 +1,5 @@ +libmpx.so.2 #PACKAGE# #MINVER# + (symver)LIBMPX_1.0 5 + (symver)LIBMPX_2.0 6 +libmpxwrappers.so.2 #PACKAGE# #MINVER# + (symver)LIBMPXWRAPPERS_1.0 5 --- gcc-7-7.3.0.orig/debian/libobjc.symbols +++ gcc-7-7.3.0/debian/libobjc.symbols @@ -0,0 +1,9 @@ +libobjc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 +libobjc_gc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" +(optional)#include "libobjc.symbols.gc" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 --- gcc-7-7.3.0.orig/debian/libobjc.symbols.common +++ gcc-7-7.3.0/debian/libobjc.symbols.common @@ -0,0 +1,205 @@ + __objc_accessors_init@Base 4.6 + __objc_add_class_to_hash@Base 4.2.1 + __objc_class_links_resolved@Base 4.2.1 + __objc_class_name_NXConstantString@Base 4.2.1 + __objc_class_name_Object@Base 4.2.1 + __objc_class_name_Protocol@Base 4.2.1 + __objc_dangling_categories@Base 4.2.1 + __objc_exec_class@Base 4.2.1 + __objc_force_linking@Base 4.2.1 + __objc_generate_gc_type_description@Base 4.2.1 + __objc_get_forward_imp@Base 4.2.1 + __objc_init_class@Base 4.6 + __objc_init_class_tables@Base 4.2.1 + __objc_init_dispatch_tables@Base 4.2.1 + __objc_init_selector_tables@Base 4.2.1 + __objc_init_thread_system@Base 4.2.1 + __objc_install_premature_dtable@Base 4.2.1 + __objc_is_multi_threaded@Base 4.2.1 + __objc_linking@Base 4.2.1 + __objc_msg_forward@Base 4.2.1 + __objc_msg_forward2@Base 4.3 + __objc_print_dtable_stats@Base 4.2.1 + __objc_protocols_add_protocol@Base 4.6 + __objc_protocols_init@Base 4.6 + __objc_register_instance_methods_to_class@Base 4.2.1 + __objc_register_selectors_from_class@Base 4.2.1 + __objc_register_selectors_from_description_list@Base 4.6 + __objc_register_selectors_from_list@Base 4.2.1 + __objc_register_selectors_from_module@Base 4.6 + __objc_resolve_class_links@Base 4.2.1 + __objc_responds_to@Base 4.2.1 + __objc_runtime_mutex@Base 4.2.1 + __objc_runtime_threads_alive@Base 4.2.1 + __objc_selector_max_index@Base 4.2.1 + __objc_sparse2_id@Base 4.2.1 + __objc_sync_init@Base 4.6 + __objc_thread_exit_status@Base 4.2.1 + __objc_uninstalled_dtable@Base 4.2.1 + __objc_update_classes_with_methods@Base 4.6 + __objc_update_dispatch_table_for_class@Base 4.2.1 + _objc_abort@Base 4.6 + _objc_became_multi_threaded@Base 4.2.1 + _objc_load_callback@Base 4.2.1 + _objc_lookup_class@Base 4.6 + class_addIvar@Base 4.6 + class_addMethod@Base 4.6 + class_addProtocol@Base 4.6 + class_add_method_list@Base 4.2.1 + class_conformsToProtocol@Base 4.6 + class_copyIvarList@Base 4.6 + class_copyMethodList@Base 4.6 + class_copyPropertyList@Base 4.6 + class_copyProtocolList@Base 4.6 + class_createInstance@Base 4.6 + class_getClassMethod@Base 4.6 + class_getClassVariable@Base 4.6 + class_getInstanceMethod@Base 4.6 + class_getInstanceSize@Base 4.6 + class_getInstanceVariable@Base 4.6 + class_getIvarLayout@Base 4.6 + class_getMethodImplementation@Base 4.6 + class_getName@Base 4.6 + class_getProperty@Base 4.6 + class_getSuperclass@Base 4.6 + class_getVersion@Base 4.6 + class_getWeakIvarLayout@Base 4.6 + class_isMetaClass@Base 4.6 + class_ivar_set_gcinvisible@Base 4.2.1 + class_replaceMethod@Base 4.6 + class_respondsToSelector@Base 4.6 + class_setIvarLayout@Base 4.6 + class_setVersion@Base 4.6 + class_setWeakIvarLayout@Base 4.6 + get_imp@Base 4.2.1 + idxsize@Base 4.2.1 + ivar_getName@Base 4.6 + ivar_getOffset@Base 4.6 + ivar_getTypeEncoding@Base 4.6 + method_copyArgumentType@Base 4.6 + method_copyReturnType@Base 4.6 + method_exchangeImplementations@Base 4.6 + method_getArgumentType@Base 4.6 + method_getDescription@Base 4.6 + method_getImplementation@Base 4.6 + method_getName@Base 4.6 + method_getNumberOfArguments@Base 4.6 + method_getReturnType@Base 4.6 + method_getTypeEncoding@Base 4.6 + method_get_imp@Base 4.6 + method_setImplementation@Base 4.6 + narrays@Base 4.2.1 + nbuckets@Base 4.2.1 + nil_method@Base 4.2.1 + nindices@Base 4.2.1 + objc_aligned_size@Base 4.2.1 + objc_alignof_type@Base 4.2.1 + objc_allocateClassPair@Base 4.6 + objc_atomic_malloc@Base 4.2.1 + objc_calloc@Base 4.2.1 + objc_condition_allocate@Base 4.2.1 + objc_condition_broadcast@Base 4.2.1 + objc_condition_deallocate@Base 4.2.1 + objc_condition_signal@Base 4.2.1 + objc_condition_wait@Base 4.2.1 + objc_copyProtocolList@Base 4.6 + objc_copyStruct@Base 4.6 + objc_disposeClassPair@Base 4.6 + objc_enumerationMutation@Base 4.6 + objc_exception_throw@Base 4.2.1 + objc_free@Base 4.2.1 + objc_getClass@Base 4.6 + objc_getClassList@Base 4.6 + objc_getMetaClass@Base 4.6 + objc_getProperty@Base 4.6 + objc_getPropertyStruct@Base 4.6 + objc_getProtocol@Base 4.6 + objc_getRequiredClass@Base 4.6 + objc_get_class@Base 4.2.1 + objc_get_meta_class@Base 4.2.1 + objc_get_type_qualifiers@Base 4.2.1 + objc_hash_add@Base 4.2.1 + objc_hash_delete@Base 4.2.1 + objc_hash_is_key_in_hash@Base 4.2.1 + objc_hash_new@Base 4.2.1 + objc_hash_next@Base 4.2.1 + objc_hash_remove@Base 4.2.1 + objc_hash_value_for_key@Base 4.2.1 + objc_layout_finish_structure@Base 4.2.1 + objc_layout_structure@Base 4.2.1 + objc_layout_structure_get_info@Base 4.2.1 + objc_layout_structure_next_member@Base 4.2.1 + objc_lookUpClass@Base 4.6 + objc_lookup_class@Base 4.2.1 + objc_malloc@Base 4.2.1 + objc_msg_lookup@Base 4.2.1 + objc_msg_lookup_super@Base 4.2.1 + objc_mutex_allocate@Base 4.2.1 + objc_mutex_deallocate@Base 4.2.1 + objc_mutex_lock@Base 4.2.1 + objc_mutex_trylock@Base 4.2.1 + objc_mutex_unlock@Base 4.2.1 + objc_promoted_size@Base 4.2.1 + objc_realloc@Base 4.2.1 + objc_registerClassPair@Base 4.6 + objc_setEnumerationMutationHandler@Base 4.6 + objc_setExceptionMatcher@Base 4.6 + objc_setGetUnknownClassHandler@Base 4.6 + objc_setProperty@Base 4.6 + objc_setPropertyStruct@Base 4.6 + objc_setUncaughtExceptionHandler@Base 4.6 + objc_set_thread_callback@Base 4.2.1 + objc_sizeof_type@Base 4.2.1 + objc_skip_argspec@Base 4.2.1 + objc_skip_offset@Base 4.2.1 + objc_skip_type_qualifiers@Base 4.2.1 + objc_skip_typespec@Base 4.2.1 + objc_sync_enter@Base 4.6 + objc_sync_exit@Base 4.6 + objc_thread_add@Base 4.2.1 + objc_thread_detach@Base 4.2.1 + objc_thread_exit@Base 4.2.1 + objc_thread_get_data@Base 4.2.1 + objc_thread_get_priority@Base 4.2.1 + objc_thread_id@Base 4.2.1 + objc_thread_remove@Base 4.2.1 + objc_thread_set_data@Base 4.2.1 + objc_thread_set_priority@Base 4.2.1 + objc_thread_yield@Base 4.2.1 + object_copy@Base 4.2.1 + object_dispose@Base 4.2.1 + object_getClassName@Base 4.6 + object_getIndexedIvars@Base 4.6 + object_getInstanceVariable@Base 4.6 + object_getIvar@Base 4.6 + object_setClass@Base 4.6 + object_setInstanceVariable@Base 4.6 + object_setIvar@Base 4.6 + property_getAttributes@Base 4.6 + property_getName@Base 4.6 + protocol_conformsToProtocol@Base 4.6 + protocol_copyMethodDescriptionList@Base 4.6 + protocol_copyPropertyList@Base 4.6 + protocol_copyProtocolList@Base 4.6 + protocol_getMethodDescription@Base 4.6 + protocol_getName@Base 4.6 + protocol_getProperty@Base 4.6 + protocol_isEqual@Base 4.6 + sarray_at_put@Base 4.2.1 + sarray_at_put_safe@Base 4.2.1 + sarray_free@Base 4.2.1 + sarray_lazy_copy@Base 4.2.1 + sarray_new@Base 4.2.1 + sarray_realloc@Base 4.2.1 + sarray_remove_garbage@Base 4.2.1 + search_for_method_in_list@Base 4.2.1 + sel_copyTypedSelectorList@Base 4.6 + sel_getName@Base 4.6 + sel_getTypeEncoding@Base 4.6 + sel_getTypedSelector@Base 4.6 + sel_getUid@Base 4.6 + sel_get_any_uid@Base 4.2.1 + sel_isEqual@Base 4.6 + sel_is_mapped@Base 4.2.1 + sel_registerName@Base 4.6 + sel_registerTypedName@Base 4.6 --- gcc-7-7.3.0.orig/debian/libobjc.symbols.gc +++ gcc-7-7.3.0/debian/libobjc.symbols.gc @@ -0,0 +1,522 @@ + async_set_pht_entry_from_index@Base 4.2.1 + free_list_index_of@Base 4.2.1 + suspend_self@Base 4.2.1 + GC_abort@Base 6 + GC_acquire_mark_lock@Base 6 + GC_add_ext_descriptor@Base 6 + GC_add_leaked@Base 6 + GC_add_map_entry@Base 6 + GC_add_roots@Base 6 + GC_add_roots_inner@Base 6 + GC_add_smashed@Base 6 + GC_add_to_black_list_normal@Base 6 + GC_add_to_black_list_stack@Base 6 + GC_add_to_fl@Base 6 + GC_add_to_heap@Base 6 + GC_adj_words_allocd@Base 6 + GC_all_bottom_indices@Base 6 + GC_all_bottom_indices_end@Base 6 + GC_all_interior_pointers@Base 6 + GC_alloc_large@Base 6 + GC_alloc_large_and_clear@Base 6 + GC_alloc_reclaim_list@Base 6 + GC_allocate_ml@Base 6 + GC_allochblk@Base 6 + GC_allochblk_nth@Base 6 + GC_allocobj@Base 6 + GC_aobjfreelist_ptr@Base 6 + GC_apply_to_all_blocks@Base 6 + GC_apply_to_maps@Base 6 + GC_approx_sp@Base 6 + GC_arobjfreelist@Base 6 + GC_array_kind@Base 6 + GC_array_mark_proc@Base 6 + GC_array_mark_proc_index@Base 6 + GC_arrays@Base 6 + GC_auobjfreelist_ptr@Base 6 + GC_avail_descr@Base 6 + GC_base@Base 6 + GC_begin_syscall@Base 6 + GC_bl_init@Base 6 + GC_black_list_spacing@Base 6 + GC_block_count@Base 6 + GC_block_empty@Base 6 + GC_block_nearly_full1@Base 6 + GC_block_nearly_full3@Base 6 + GC_block_nearly_full@Base 6 + GC_block_was_dirty@Base 6 + GC_bm_table@Base 6 + GC_brief_async_signal_safe_sleep@Base 6 + GC_build_fl1@Base 6 + GC_build_fl2@Base 6 + GC_build_fl4@Base 6 + GC_build_fl@Base 6 + GC_build_fl_clear2@Base 6 + GC_build_fl_clear3@Base 6 + GC_build_fl_clear4@Base 6 + GC_call_with_alloc_lock@Base 6 + GC_calloc_explicitly_typed@Base 6 + GC_change_stubborn@Base 6 + GC_check_annotated_obj@Base 6 + GC_check_heap@Base 6 + GC_check_heap_block@Base 6 + GC_check_heap_proc@Base 6 + GC_clear_a_few_frames@Base 6 + GC_clear_bl@Base 6 + GC_clear_fl_links@Base 6 + GC_clear_fl_marks@Base 6 + GC_clear_hdr_marks@Base 6 + GC_clear_mark_bit@Base 6 + GC_clear_marks@Base 6 + GC_clear_roots@Base 6 + GC_clear_stack@Base 6 + GC_clear_stack_inner@Base 6 + GC_collect_a_little@Base 6 + GC_collect_a_little_inner@Base 6 + GC_collect_or_expand@Base 6 + GC_collecting@Base 6 + GC_collection_in_progress@Base 6 + GC_cond_register_dynamic_libraries@Base 6 + GC_continue_reclaim@Base 6 + GC_copy_bl@Base 6 + GC_copyright@Base 6 + GC_current_warn_proc@Base 6 + GC_data_start@Base 6 + GC_debug_change_stubborn@Base 6 + GC_debug_end_stubborn_change@Base 6 + GC_debug_free@Base 6 + GC_debug_free_inner@Base 6 + GC_debug_gcj_fast_malloc@Base 6 + GC_debug_gcj_malloc@Base 6 + GC_debug_header_size@Base 6 + GC_debug_invoke_finalizer@Base 6 + GC_debug_malloc@Base 6 + GC_debug_malloc_atomic@Base 6 + GC_debug_malloc_atomic_ignore_off_page@Base 6 + GC_debug_malloc_atomic_uncollectable@Base 6 + GC_debug_malloc_ignore_off_page@Base 6 + GC_debug_malloc_replacement@Base 6 + GC_debug_malloc_stubborn@Base 6 + GC_debug_malloc_uncollectable@Base 6 + GC_debug_print_heap_obj_proc@Base 6 + GC_debug_realloc@Base 6 + GC_debug_realloc_replacement@Base 6 + GC_debug_register_displacement@Base 6 + GC_debug_register_finalizer@Base 6 + GC_debug_register_finalizer_ignore_self@Base 6 + GC_debug_register_finalizer_no_order@Base 6 + GC_debug_register_finalizer_unreachable@Base 6 + GC_debugging_started@Base 6 + GC_default_is_valid_displacement_print_proc@Base 6 + GC_default_is_visible_print_proc@Base 6 + GC_default_oom_fn@Base 6 + GC_default_print_heap_obj_proc@Base 6 + GC_default_push_other_roots@Base 6 + GC_default_same_obj_print_proc@Base 6 + GC_default_warn_proc@Base 6 + GC_deficit@Base 6 + GC_delete_gc_thread@Base 6 + GC_delete_thread@Base 6 + GC_descr_obj_size@Base 6 + GC_destroy_thread_local@Base 6 + GC_dirty_init@Base 6 + GC_dirty_maintained@Base 6 + GC_disable@Base 6 + GC_disable_signals@Base 6 + GC_dl_entries@Base 6 + GC_dlopen@Base 6 + GC_do_nothing@Base 6 + GC_dont_expand@Base 6 + GC_dont_gc@Base 6 + GC_dont_precollect@Base 6 + GC_double_descr@Base 6 + GC_dump@Base 6 + GC_dump_finalization@Base 6 + GC_dump_regions@Base 6 + GC_dump_regularly@Base 6 + GC_ed_size@Base 6 + GC_enable@Base 6 + GC_enable_incremental@Base 6 + GC_enable_signals@Base 6 + GC_end_blocking@Base 6 + GC_end_stubborn_change@Base 6 + GC_end_syscall@Base 6 + GC_enqueue_all_finalizers@Base 6 + GC_eobjfreelist@Base 6 + GC_err_printf@Base 6 + GC_err_puts@Base 6 + GC_err_write@Base 6 + GC_excl_table_entries@Base 6 + GC_exclude_static_roots@Base 6 + GC_exit_check@Base 6 + GC_expand_hp@Base 6 + GC_expand_hp_inner@Base 6 + GC_explicit_kind@Base 6 + GC_explicit_typing_initialized@Base 6 + GC_ext_descriptors@Base 6 + GC_extend_size_map@Base 6 + GC_fail_count@Base 6 + GC_fault_handler@Base 6 + GC_finalization_failures@Base 6 + GC_finalize@Base 6 + GC_finalize_all@Base 6 + GC_finalize_now@Base 6 + GC_finalize_on_demand@Base 6 + GC_finalizer_notifier@Base 6 + GC_find_header@Base 6 + GC_find_leak@Base 6 + GC_find_limit@Base 6 + GC_find_start@Base 6 + GC_finish_collection@Base 6 + GC_fl_builder_count@Base 6 + GC_fo_entries@Base 6 + GC_free@Base 6 + GC_free_block_ending_at@Base 6 + GC_free_bytes@Base 6 + GC_free_inner@Base 6 + GC_free_space_divisor@Base 6 + GC_freehblk@Base 6 + GC_freehblk_ptr@Base 6 + GC_full_freq@Base 6 + GC_gc_no@Base 6 + GC_gcj_debug_kind@Base 6 + GC_gcj_fast_malloc@Base 6 + GC_gcj_kind@Base 6 + GC_gcj_malloc@Base 6 + GC_gcj_malloc_ignore_off_page@Base 6 + GC_gcj_malloc_initialized@Base 6 + GC_gcjdebugobjfreelist@Base 6 + GC_gcjobjfreelist@Base 6 + GC_gcollect@Base 6 + GC_general_register_disappearing_link@Base 6 + GC_generic_lock@Base 6 + GC_generic_malloc@Base 6 + GC_generic_malloc_ignore_off_page@Base 6 + GC_generic_malloc_inner@Base 6 + GC_generic_malloc_inner_ignore_off_page@Base 6 + GC_generic_malloc_many@Base 6 + GC_generic_malloc_words_small@Base 6 + GC_generic_malloc_words_small_inner@Base 6 + GC_generic_or_special_malloc@Base 6 + GC_generic_push_regs@Base 6 + GC_get_bytes_since_gc@Base 6 + GC_get_first_part@Base 6 + GC_get_free_bytes@Base 6 + GC_get_heap_size@Base 6 + GC_get_nprocs@Base 6 + GC_get_stack_base@Base 6 + GC_get_thread_stack_base@Base 6 + GC_get_total_bytes@Base 6 + GC_greatest_plausible_heap_addr@Base 6 + GC_grow_table@Base 6 + GC_has_other_debug_info@Base 6 + GC_have_errors@Base 6 + GC_hblk_fl_from_blocks@Base 6 + GC_hblkfreelist@Base 6 + GC_hdr_cache_hits@Base 6 + GC_hdr_cache_misses@Base 6 + GC_high_water@Base 6 + GC_ignore_self_finalize_mark_proc@Base 6 + GC_in_thread_creation@Base 6 + GC_incomplete_normal_bl@Base 6 + GC_incomplete_stack_bl@Base 6 + GC_incr_mem_freed@Base 6 + GC_incr_words_allocd@Base 6 + GC_incremental@Base 6 + GC_incremental_protection_needs@Base 6 + GC_init@Base 6 + GC_init_explicit_typing@Base 6 + GC_init_gcj_malloc@Base 6 + GC_init_headers@Base 6 + GC_init_inner@Base 6 + GC_init_linux_data_start@Base 6 + GC_init_parallel@Base 6 + GC_init_size_map@Base 6 + GC_init_thread_local@Base 6 + GC_initiate_gc@Base 6 + GC_install_counts@Base 6 + GC_install_header@Base 6 + GC_invalid_header@Base 6 + GC_invalid_map@Base 6 + GC_invalidate_map@Base 6 + GC_invalidate_mark_state@Base 6 + GC_invoke_finalizers@Base 6 + GC_is_black_listed@Base 6 + GC_is_fresh@Base 6 + GC_is_full_gc@Base 6 + GC_is_initialized@Base 6 + GC_is_marked@Base 6 + GC_is_static_root@Base 6 + GC_is_thread_suspended@Base 6 + GC_is_valid_displacement@Base 6 + GC_is_valid_displacement_print_proc@Base 6 + GC_is_visible@Base 6 + GC_is_visible_print_proc@Base 6 + GC_java_finalization@Base 6 + GC_jmp_buf@Base 6 + GC_key_create@Base 6 + GC_large_alloc_warn_interval@Base 6 + GC_large_alloc_warn_suppressed@Base 6 + GC_leaked@Base 6 + GC_least_plausible_heap_addr@Base 6 + GC_linux_stack_base@Base 6 + GC_local_gcj_malloc@Base 6 + GC_local_malloc@Base 6 + GC_local_malloc_atomic@Base 6 + GC_lock@Base 6 + GC_lock_holder@Base 6 + GC_lookup_thread@Base 6 + GC_make_array_descriptor@Base 6 + GC_make_closure@Base 6 + GC_make_descriptor@Base 6 + GC_make_sequence_descriptor@Base 6 + GC_malloc@Base 6 + GC_malloc_atomic@Base 6 + GC_malloc_atomic_ignore_off_page@Base 6 + GC_malloc_atomic_uncollectable@Base 6 + GC_malloc_explicitly_typed@Base 6 + GC_malloc_explicitly_typed_ignore_off_page@Base 6 + GC_malloc_ignore_off_page@Base 6 + GC_malloc_many@Base 6 + GC_malloc_stubborn@Base 6 + GC_malloc_uncollectable@Base 6 + GC_mark_and_push@Base 6 + GC_mark_and_push_stack@Base 6 + GC_mark_from@Base 6 + GC_mark_init@Base 6 + GC_mark_some@Base 6 + GC_mark_stack@Base 6 + GC_mark_stack_empty@Base 6 + GC_mark_stack_limit@Base 6 + GC_mark_stack_size@Base 6 + GC_mark_stack_too_small@Base 6 + GC_mark_stack_top@Base 6 + GC_mark_state@Base 6 + GC_mark_thread_local_free_lists@Base 6 + GC_max@Base 6 + GC_max_retries@Base 6 + GC_maybe_gc@Base 6 + GC_mem_found@Base 6 + GC_memalign@Base 6 + GC_min@Base 6 + GC_min_sp@Base 6 + GC_n_attempts@Base 6 + GC_n_heap_sects@Base 6 + GC_n_kinds@Base 6 + GC_n_leaked@Base 6 + GC_n_mark_procs@Base 6 + GC_n_rescuing_pages@Base 6 + GC_n_set_marks@Base 6 + GC_n_smashed@Base 6 + GC_need_full_gc@Base 6 + GC_never_stop_func@Base 6 + GC_new_free_list@Base 6 + GC_new_free_list_inner@Base 6 + GC_new_hblk@Base 6 + GC_new_kind@Base 6 + GC_new_kind_inner@Base 6 + GC_new_proc@Base 6 + GC_new_proc_inner@Base 6 + GC_new_thread@Base 6 + GC_next_exclusion@Base 6 + GC_next_used_block@Base 6 + GC_no_dls@Base 6 + GC_non_gc_bytes@Base 6 + GC_noop1@Base 6 + GC_noop@Base 6 + GC_normal_finalize_mark_proc@Base 6 + GC_notify_all_builder@Base 6 + GC_notify_full_gc@Base 6 + GC_notify_or_invoke_finalizers@Base 6 + GC_nprocs@Base 6 + GC_null_finalize_mark_proc@Base 6 + GC_number_stack_black_listed@Base 6 + GC_obj_kinds@Base 6 + GC_objects_are_marked@Base 6 + GC_objfreelist_ptr@Base 6 + GC_old_bus_handler@Base 6 + GC_old_normal_bl@Base 6 + GC_old_segv_handler@Base 6 + GC_old_stack_bl@Base 6 + GC_on_stack@Base 6 + GC_oom_fn@Base 6 + GC_page_size@Base 6 + GC_page_was_dirty@Base 6 + GC_page_was_ever_dirty@Base 6 + GC_parallel@Base 6 + GC_pause@Base 6 + GC_post_incr@Base 6 + GC_pre_incr@Base 6 + GC_prev_block@Base 6 + GC_print_address_map@Base 6 + GC_print_all_errors@Base 6 + GC_print_all_smashed@Base 6 + GC_print_all_smashed_proc@Base 6 + GC_print_back_height@Base 6 + GC_print_block_descr@Base 6 + GC_print_block_list@Base 6 + GC_print_finalization_stats@Base 6 + GC_print_hblkfreelist@Base 6 + GC_print_heap_obj@Base 6 + GC_print_heap_sects@Base 6 + GC_print_obj@Base 6 + GC_print_smashed_obj@Base 6 + GC_print_source_ptr@Base 6 + GC_print_static_roots@Base 6 + GC_print_stats@Base 6 + GC_print_type@Base 6 + GC_printf@Base 6 + GC_project2@Base 6 + GC_promote_black_lists@Base 6 + GC_protect_heap@Base 6 + GC_pthread_create@Base 6 + GC_pthread_detach@Base 6 + GC_pthread_join@Base 6 + GC_pthread_sigmask@Base 6 + GC_push_all@Base 6 + GC_push_all_eager@Base 6 + GC_push_all_stack@Base 6 + GC_push_all_stacks@Base 6 + GC_push_complex_descriptor@Base 6 + GC_push_conditional@Base 6 + GC_push_conditional_with_exclusions@Base 6 + GC_push_current_stack@Base 6 + GC_push_finalizer_structures@Base 6 + GC_push_gc_structures@Base 6 + GC_push_marked1@Base 6 + GC_push_marked2@Base 6 + GC_push_marked4@Base 6 + GC_push_marked@Base 6 + GC_push_next_marked@Base 6 + GC_push_next_marked_dirty@Base 6 + GC_push_next_marked_uncollectable@Base 6 + GC_push_one@Base 6 + GC_push_other_roots@Base 6 + GC_push_roots@Base 6 + GC_push_selected@Base 6 + GC_push_stubborn_structures@Base 6 + GC_push_thread_structures@Base 6 + GC_quiet@Base 6 + GC_read_dirty@Base 6 + GC_realloc@Base 6 + GC_reclaim1@Base 6 + GC_reclaim_all@Base 6 + GC_reclaim_block@Base 6 + GC_reclaim_check@Base 6 + GC_reclaim_clear2@Base 6 + GC_reclaim_clear4@Base 6 + GC_reclaim_clear@Base 6 + GC_reclaim_generic@Base 6 + GC_reclaim_small_nonempty_block@Base 6 + GC_reclaim_uninit2@Base 6 + GC_reclaim_uninit4@Base 6 + GC_reclaim_uninit@Base 6 + GC_register_data_segments@Base 6 + GC_register_describe_type_fn@Base 6 + GC_register_disappearing_link@Base 6 + GC_register_displacement@Base 6 + GC_register_displacement_inner@Base 6 + GC_register_dynamic_libraries@Base 6 + GC_register_dynamic_libraries_dl_iterate_phdr@Base 6 + GC_register_finalizer@Base 6 + GC_register_finalizer_ignore_self@Base 6 + GC_register_finalizer_inner@Base 6 + GC_register_finalizer_no_order@Base 6 + GC_register_finalizer_unreachable@Base 6 + GC_register_has_static_roots_callback@Base 6 + GC_register_main_static_data@Base 6 + GC_register_my_thread@Base 6 + GC_release_mark_lock@Base 6 + GC_remove_allowed_signals@Base 6 + GC_remove_counts@Base 6 + GC_remove_from_fl@Base 6 + GC_remove_header@Base 6 + GC_remove_protection@Base 6 + GC_remove_roots@Base 6 + GC_remove_roots_inner@Base 6 + GC_remove_specific@Base 6 + GC_remove_tmp_roots@Base 6 + GC_repeat_read@Base 6 + GC_reset_fault_handler@Base 6 + GC_restart_handler@Base 6 + GC_resume_thread@Base 6 + GC_retry_signals@Base 6 + GC_root_size@Base 6 + GC_roots_present@Base 6 + GC_same_obj@Base 6 + GC_same_obj_print_proc@Base 6 + GC_scratch_alloc@Base 6 + GC_set_and_save_fault_handler@Base 6 + GC_set_fl_marks@Base 6 + GC_set_free_space_divisor@Base 6 + GC_set_hdr_marks@Base 6 + GC_set_mark_bit@Base 6 + GC_set_max_heap_size@Base 6 + GC_set_warn_proc@Base 6 + GC_setpagesize@Base 6 + GC_setspecific@Base 6 + GC_setup_temporary_fault_handler@Base 6 + GC_should_collect@Base 6 + GC_should_invoke_finalizers@Base 6 + GC_signal_mark_stack_overflow@Base 6 + GC_size@Base 6 + GC_sleep@Base 6 + GC_slow_getspecific@Base 6 + GC_smashed@Base 6 + GC_spin_count@Base 6 + GC_split_block@Base 6 + GC_stack_last_cleared@Base 6 + GC_stackbottom@Base 6 + GC_start_blocking@Base 6 + GC_start_call_back@Base 6 + GC_start_debugging@Base 6 + GC_start_reclaim@Base 6 + GC_start_routine@Base 6 + GC_start_time@Base 6 + GC_start_world@Base 6 + GC_stderr@Base 6 + GC_stdout@Base 6 + GC_stop_count@Base 6 + GC_stop_init@Base 6 + GC_stop_world@Base 6 + GC_stopped_mark@Base 6 + GC_stopping_pid@Base 6 + GC_stopping_thread@Base 6 + GC_store_debug_info@Base 6 + GC_suspend_ack_sem@Base 6 + GC_suspend_all@Base 6 + GC_suspend_handler@Base 6 + GC_suspend_handler_inner@Base 6 + GC_suspend_thread@Base 6 + GC_thr_init@Base 6 + GC_thr_initialized@Base 6 + GC_thread_exit_proc@Base 6 + GC_thread_key@Base 6 + GC_threads@Base 6 + GC_time_limit@Base 6 + GC_timeout_stop_func@Base 6 + GC_total_stack_black_listed@Base 6 + GC_try_to_collect@Base 6 + GC_try_to_collect_inner@Base 6 + GC_typed_mark_proc@Base 6 + GC_typed_mark_proc_index@Base 6 + GC_unix_get_mem@Base 6 + GC_unlocked_count@Base 6 + GC_unpromote_black_lists@Base 6 + GC_unprotect_range@Base 6 + GC_unreachable_finalize_mark_proc@Base 6 + GC_unregister_disappearing_link@Base 6 + GC_unregister_my_thread@Base 6 + GC_uobjfreelist_ptr@Base 6 + GC_use_entire_heap@Base 6 + GC_used_heap_size_after_full@Base 6 + GC_version@Base 6 + GC_wait_builder@Base 6 + GC_wait_for_gc_completion@Base 6 + GC_wait_for_reclaim@Base 6 + GC_with_callee_saves_pushed@Base 6 + GC_words_allocd_at_reset@Base 6 + GC_world_is_stopped@Base 6 + GC_world_stopped@Base 6 + GC_write@Base 6 + GC_write_fault_handler@Base 6 --- gcc-7-7.3.0.orig/debian/libquadmath.symbols +++ gcc-7-7.3.0/debian/libquadmath.symbols @@ -0,0 +1,3 @@ +libquadmath.so.0 #PACKAGE# #MINVER# + (symver)QUADMATH_1.0 4.6 + (symver)QUADMATH_1.1 6 --- gcc-7-7.3.0.orig/debian/libstdc++-BV-doc.doc-base +++ gcc-7-7.3.0/debian/libstdc++-BV-doc.doc-base @@ -0,0 +1,13 @@ +Document: libstdc++-@BV@-doc +Title: The GNU Standard C++ Library v3 (gcc-@BV@) +Author: Various +Abstract: This package contains documentation files for the GNU stdc++ library. + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +Section: Programming/C++ + +Format: html +Index: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/index.html +Files: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/* --- gcc-7-7.3.0.orig/debian/libstdc++-BV-doc.overrides +++ gcc-7-7.3.0/debian/libstdc++-BV-doc.overrides @@ -0,0 +1,11 @@ +libstdc++-@BV@-doc binary: hyphen-used-as-minus-sign +libstdc++-@BV@-doc binary: manpage-has-bad-whatis-entry + +# 3xx used by intent to avoid conficts +libstdc++-@BV@-doc binary: manpage-section-mismatch + +# some very long identifiers +libstdc++-@BV@-doc binary: manpage-has-errors-from-man * can't break line + +# doxygen accepts formulas in man pages ... +libstdc++-@BV@-doc binary: manpage-has-errors-from-man * a space character is not allowed in an escape name --- gcc-7-7.3.0.orig/debian/libstdc++-breaks.Debian +++ gcc-7-7.3.0/debian/libstdc++-breaks.Debian @@ -0,0 +1,91 @@ +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), --- gcc-7-7.3.0.orig/debian/libstdc++-breaks.Ubuntu +++ gcc-7-7.3.0/debian/libstdc++-breaks.Ubuntu @@ -0,0 +1,73 @@ +libantlr-dev (<= 2.7.7+dfsg-6), +libaqsis1 (<= 1.8.2-1), +libassimp3 (<= 3.0~dfsg-4), +blockattack (<= 1.4.1+ds1-2.1build2), +boo (<= 0.9.5~git20110729.r1.202a430-2), +libboost-date-time1.55.0, +libcpprest2.2 (<= 2.2.0-1), +printer-driver-brlaser (<= 3-3), +c++-annotations (<= 10.2.0-1), +chromium-browser (<= 43.0.2357.130-0ubuntu2), +clustalx (<= 2.1+lgpl-2), +libdavix0 (<= 0.4.0-1build1), +libdballe6 (<= 6.8-1), +dff (<= 1.3.0+dfsg.1-4.1build2), +libdiet-sed2.8 (<= 2.8.0-1build3), +libdiet-client2.8 (<= 2.8.0-1build3), +libdiet-admin2.8 (<= 2.8.0-1build3), +libkgeomap2 (<= 4:15.04.2-0ubuntu1), +libmediawiki1 (<= 1.0~digikam4.10.0-0ubuntu2), +libkvkontakte1 (<= 1.0~digikam4.10.0-0ubuntu2), +emscripten (<= 1.22.1-1), +ergo (<= 3.4.0-1), +fceux (<= 2.2.2+dfsg0-1), +flush (<= 0.9.12-3.1ubuntu1), +libfreefem++ (<= 3.37.1-1), +freeorion (<= 0.4.4+git20150327-2), +fslview (<= 4.0.1-4), +fwbuilder (<= 5.1.0-4), +libgazebo5 (<= 5.0.1+dfsg-2.1), +libgetfem4++ (<= 4.2.1~beta1~svn4482~dfsg-3ubuntu3), +libgmsh2 (<= 2.8.5+dfsg-1.1ubuntu1), +gnote (<= 3.16.2-1), +gnudatalanguage (<= 0.9.5-2build1), +python-healpy (<= 1.8.1-1), +innoextract (<= 1.4-1build1), +libinsighttoolkit4.6 (<= 4.6.0-3ubuntu3), +libdap17 (<= 3.14.0-2), +libdapclient6 (<= 3.14.0-2), +libdapserver7 (<= 3.14.0-2), +libkolabxml1 (<= 1.1.0-3), +libpqxx-4.0 (<= 4.0.1+dfsg-3ubuntu1), +libreoffice-core (<= 1:4.4.4~rc3-0ubuntu1), +librime1 (<= 1.2+dfsg-2), +libwibble-dev (<= 1.1-1), +lightspark (<= 0.7.2+git20150512-2), +libmarisa0 (<= 0.2.4-8build1), +mira-assembler (<= 4.9.5-1), +mongodb (<= 1:2.6.3-0ubuntu7), +mongodb-server (<= 1:2.6.3-0ubuntu7), +ncbi-blast+ (<= 2.2.30-4), +libogre-1.8.0 (<= 1.8.1+dfsg-0ubuntu5), +libogre-1.9.0 (<= 1.9.0+dfsg1-4), +openscad (<= 2014.03+dfsg-1build1), +libopenwalnut1 (<= 1.4.0~rc1+hg3a3147463ee2-1ubuntu2), +passepartout (<= 0.7.1-1.1), +pdf2djvu (<= 0.7.19-1ubuntu2), +photoprint (<= 0.4.2~pre2-2.3), +plastimatch (<= 1.6.2+dfsg-1), +plee-the-bear (<= 0.6.0-3.1), +povray (<= 1:3.7.0.0-8), +powertop (<= 2.6.1-1), +psi4 (<= 4.0~beta5+dfsg-2build1), +python3-taglib (<= 0.3.6+dfsg-2build2), +realtimebattle (<= 1.0.8-14), +ruby-passenger (<= 4.0.53-1), +libapache2-mod-passenger (<= 4.0.53-1), +sqlitebrowser (<= 3.5.1-3), +tecnoballz (<= 0.93.1-6), +wesnoth-1.12-core (<= 1:1.12.4-1), +widelands (<= 1:18-3build1), +libwreport2 (<= 2.14-1), +xflr5 (<= 6.09.06-2), +libxmltooling6 (<= 1.5.3-2.1), --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.128bit +++ gcc-7-7.3.0/debian/libstdc++6.symbols.128bit @@ -0,0 +1,46 @@ + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.7 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.32bit +++ gcc-7-7.3.0/debian/libstdc++6.symbols.32bit @@ -0,0 +1,612 @@ +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.32bit.cxx11" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSsixEj@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt19__codecvt_utf8_baseIDiE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@GLIBCXX_3.4.18 4.8 + _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@GLIBCXX_3.4.18 4.8 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj@GLIBCXX_3.4.16 4.6.0 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jRKS1_@GLIBCXX_3.4.24 7 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jRKS1_@GLIBCXX_3.4.24 7 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEjj@GLIBCXX_3.4.16 4.6.0 + _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EjcRKSaIcE@GLIBCXX_3.4.14 4.5 + _ZNSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEj@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + (arch=!powerpc !powerpcspe !ppc64 !sparc)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.6.0 + _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + (arch=!armel !kfreebsd-amd64 !kfreebsd-i386)_ZNSt28__atomic_futex_unsigned_base19_M_futex_wait_untilEPjjbNSt6chrono8durationIxSt5ratioILx1ELx1EEEENS2_IxS3_ILx1ELx1000000000EEEE@GLIBCXX_3.4.21 5 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvjj@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvjj@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZdaPvj@CXXABI_1.3.9 5 + _ZdaPvjSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvjSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvj@CXXABI_1.3.9 5 + _ZdlPvjSt11align_val_t@CXXABI_1.3.11 7 + _Znaj@GLIBCXX_3.4 4.1.1 + _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnajSt11align_val_t@CXXABI_1.3.11 7 + _ZnajSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _Znwj@GLIBCXX_3.4 4.1.1 + _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnwjSt11align_val_t@CXXABI_1.3.11 7 + _ZnwjSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.32bit.cxx11 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.32bit.cxx11 @@ -0,0 +1,333 @@ + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES4_S4_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES4_S4_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Ejc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_jc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_jc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_destroyEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Ejw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_copyEPwPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_moveEPwPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_jw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_jw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_createERjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS5_x@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS5_x@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNS_12basic_stringIcS3_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNS_12basic_stringIcS3_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNS_12basic_stringIcS2_IcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNS_12basic_stringIcS2_IcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt17__verify_groupingPKcjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.32bit.hurd +++ gcc-7-7.3.0/debian/libstdc++6.symbols.32bit.hurd @@ -0,0 +1,536 @@ +#include "libstdc++6.symbols.common" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSsixEj@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEj@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znaj@GLIBCXX_3.4 4.1.1 + _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwj@GLIBCXX_3.4 4.1.1 + _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC1EP15__pthread_mutex@GLIBCXX_3.4 4.3.0 + _ZNSt12__basic_fileIcEC2EP15__pthread_mutex@GLIBCXX_3.4 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.64bit +++ gcc-7-7.3.0/debian/libstdc++6.symbols.64bit @@ -0,0 +1,624 @@ +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.64bit.cxx11" + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt19__codecvt_utf8_baseIDiE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@GLIBCXX_3.4.18 4.8 + _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@GLIBCXX_3.4.18 4.8 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.6.0 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mRKS1_@GLIBCXX_3.4.23 7 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mRKS1_@GLIBCXX_3.4.23 7 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPclc@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEl@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEl@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEli@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPclc@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPcl@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.6.0 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPcl@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12strstreambuf6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_l@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKal@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPalS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPclS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhlS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1El@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKal@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPalS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPclS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhlS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2El@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + (arch=!alpha !powerpc !ppc64 !ppc64el !s390 !s390x)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_l@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_l@GLIBCXX_3.4.16 4.6.0 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2ERKSsm@GLIBCXX_3.4.21 5 + + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + (arch=!kfreebsd-amd64)_ZNSt28__atomic_futex_unsigned_base19_M_futex_wait_untilEPjjbNSt6chrono8durationIlSt5ratioILl1ELl1EEEENS2_IlS3_ILl1ELl1000000000EEEE@GLIBCXX_3.4.21 5 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZTIPKn@CXXABI_1.3.5 4.6 + _ZTIPKo@CXXABI_1.3.5 4.6 + _ZTIPn@CXXABI_1.3.5 4.6 + _ZTIPo@CXXABI_1.3.5 4.6 + _ZTIn@CXXABI_1.3.5 4.6 + _ZTIo@CXXABI_1.3.5 4.6 + _ZTSPKn@CXXABI_1.3.9 5 + _ZTSPKo@CXXABI_1.3.9 5 + _ZTSPn@CXXABI_1.3.9 5 + _ZTSPo@CXXABI_1.3.9 5 + _ZTSn@CXXABI_1.3.9 5 + _ZTSo@CXXABI_1.3.9 5 + _ZThn16_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZdaPvm@CXXABI_1.3.9 5 + _ZdaPvmSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvm@CXXABI_1.3.9 5 + _ZdlPvmSt11align_val_t@CXXABI_1.3.11 7 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnamSt11align_val_t@CXXABI_1.3.11 7 + _ZnamSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnwmSt11align_val_t@CXXABI_1.3.11 7 + _ZnwmSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.64bit.cxx11 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.64bit.cxx11 @@ -0,0 +1,333 @@ + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES4_S4_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES4_S4_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Emc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_mc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_mc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_destroyEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Emw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_copyEPwPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_moveEPwPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_mw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_mw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_createERmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS5_l@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS5_l@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNS_12basic_stringIcS3_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNS_12basic_stringIcS3_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNS_12basic_stringIcS2_IcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNS_12basic_stringIcS2_IcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt17__verify_groupingPKcmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.alpha +++ gcc-7-7.3.0/debian/libstdc++6.symbols.alpha @@ -0,0 +1,56 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.8 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.amd64 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.amd64 @@ -0,0 +1,16 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvmS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.arm +++ gcc-7-7.3.0/debian/libstdc++6.symbols.arm @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_sj0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.arm64 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.arm64 @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.armel +++ gcc-7-7.3.0/debian/libstdc++6.symbols.armel @@ -0,0 +1,13 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0 + _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + __cxa_begin_cleanup@CXXABI_1.3 4.3.0 + __cxa_end_cleanup@CXXABI_1.3 4.3.0 + __cxa_type_match@CXXABI_1.3 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.armhf +++ gcc-7-7.3.0/debian/libstdc++6.symbols.armhf @@ -0,0 +1,20 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0 + _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + __cxa_begin_cleanup@CXXABI_1.3 4.3.0 + __cxa_end_cleanup@CXXABI_1.3 4.3.0 + __cxa_type_match@CXXABI_1.3 4.3.0 + _ZTIPKo@CXXABI_1.3.5 7 + _ZTIPo@CXXABI_1.3.5 7 + _ZTIo@CXXABI_1.3.5 7 + _ZTSPKo@CXXABI_1.3.9 7 + _ZTSPo@CXXABI_1.3.9 7 + _ZTSo@CXXABI_1.3.9 7 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.common +++ gcc-7-7.3.0/debian/libstdc++6.symbols.common @@ -0,0 +1,3470 @@ + 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.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 + _ZNKSt13runtime_error4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14error_category10equivalentERKSt10error_codei@GLIBCXX_3.4.11 4.4.0 + _ZNKSt14error_category10equivalentEiRKSt15error_condition@GLIBCXX_3.4.11 4.4.0 + _ZNKSt14error_category23default_error_conditionEi@GLIBCXX_3.4.11 4.4.0 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt16bad_array_length4whatEv@CXXABI_1.3.8 4.9 + _ZNKSt17bad_function_call4whatEv@GLIBCXX_3.4.18 4.8 + _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19__codecvt_utf8_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt20__codecvt_utf16_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20bad_array_new_length4whatEv@CXXABI_1.3.8 4.9 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category10_M_messageEi@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category10equivalentERKSt10error_codei@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category10equivalentEiRKSt15error_condition@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category23default_error_conditionEi@GLIBCXX_3.4.21 5 + _ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashIRKSsEclES2_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashISsEclESs@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIRKSsEclES1_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISsEclESs@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISt10error_codeEclES0_@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE10do_tolowerEPcPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_tolowerEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_toupperEPcPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_toupperEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE13_M_widen_initEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE14_M_narrow_initEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE8do_widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE9do_narrowEcc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_tolowerEPwPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_tolowerEw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_toupperEPwPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_toupperEw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE5do_isEPKwS2_Pt@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE5do_isEtw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE8do_widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE9do_narrowEwc@GLIBCXX_3.4 4.1.1 + _ZNKSt6locale2id5_M_idEv@GLIBCXX_3.4 4.1.1 + _ZNKSt6locale4nameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt6localeeqERKS_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIDic11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE5do_inERS0_PKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE6do_outERS0_PKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE5do_inERS0_PKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE6do_outERS0_PKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE10_M_compareEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12do_transformEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE4hashEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE7compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE7do_hashEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE9transformEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE10_M_compareEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12do_transformEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE4hashEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE7compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE7do_hashEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE9transformEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1 + _ZNKSt8bad_cast4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt8ios_base7failure4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE18_M_convert_to_charERKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE3getEiiiRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE5closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE6do_getEiiiRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE8do_closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE5closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE8do_closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE11do_truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE12do_falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE8truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE9falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE11do_truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE12do_falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE8truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE9falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt9bad_alloc4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv@GLIBCXX_3.4.21 5 + _ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEEcvbEv@GLIBCXX_3.4.21 5 + _ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9exception4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9strstream5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9strstream6pcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info10__do_catchEPKS_PPvj@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info14__is_pointer_pEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info15__is_function_pEv@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEE4nposE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5clearEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv@GLIBCXX_3.4.17 4.7 + _ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEaSEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEpLEw@GLIBCXX_3.4 4.1.1 + _ZNSd4swapERSd@GLIBCXX_3.4.21 5 + _ZNSdC1EOSd@GLIBCXX_3.4.21 5 + _ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSdC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSdC2EOSd@GLIBCXX_3.4.21 5 + _ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSdC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSdaSEOSd@GLIBCXX_3.4.21 5 + _ZNSi10_M_extractIPvEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIbEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIdEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIeEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIfEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIjEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIlEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractImEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractItEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIxEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIyEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@GLIBCXX_3.4 4.1.1 + _ZNSi3getERc@GLIBCXX_3.4 4.1.1 + _ZNSi3getEv@GLIBCXX_3.4 4.1.1 + _ZNSi4peekEv@GLIBCXX_3.4 4.1.1 + _ZNSi4swapERSi@GLIBCXX_3.4.21 5 + _ZNSi4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSi5tellgEv@GLIBCXX_3.4 4.1.1 + _ZNSi5ungetEv@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEv@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEv@GLIBCXX_3.4.5 4.1.1 + _ZNSi6sentryC1ERSib@GLIBCXX_3.4 4.1.1 + _ZNSi6sentryC2ERSib@GLIBCXX_3.4 4.1.1 + _ZNSi7putbackEc@GLIBCXX_3.4 4.1.1 + _ZNSiC1EOSi@GLIBCXX_3.4.21 5 + _ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSiC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSiC2EOSi@GLIBCXX_3.4.21 5 + _ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSiC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSiaSEOSi@GLIBCXX_3.4.21 5 + _ZNSirsEPFRSiS_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSirsERPv@GLIBCXX_3.4 4.1.1 + _ZNSirsERb@GLIBCXX_3.4 4.1.1 + _ZNSirsERd@GLIBCXX_3.4 4.1.1 + _ZNSirsERe@GLIBCXX_3.4 4.1.1 + _ZNSirsERf@GLIBCXX_3.4 4.1.1 + _ZNSirsERi@GLIBCXX_3.4 4.1.1 + _ZNSirsERj@GLIBCXX_3.4 4.1.1 + _ZNSirsERl@GLIBCXX_3.4 4.1.1 + _ZNSirsERm@GLIBCXX_3.4 4.1.1 + _ZNSirsERs@GLIBCXX_3.4 4.1.1 + _ZNSirsERt@GLIBCXX_3.4 4.1.1 + _ZNSirsERx@GLIBCXX_3.4 4.1.1 + _ZNSirsERy@GLIBCXX_3.4 4.1.1 + _ZNSo3putEc@GLIBCXX_3.4 4.1.1 + _ZNSo4swapERSo@GLIBCXX_3.4.21 5 + _ZNSo5flushEv@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSo5tellpEv@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryC1ERSo@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryC2ERSo@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSo9_M_insertIPKvEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIbEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIdEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIeEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIlEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertImEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIxEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIyEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSoC1EOSo@GLIBCXX_3.4.21 5 + _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSoC1ERSd@GLIBCXX_3.4.21 5 + _ZNSoC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSoC2EOSo@GLIBCXX_3.4.21 5 + _ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSoC2ERSd@GLIBCXX_3.4.21 5 + _ZNSoC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSoaSEOSo@GLIBCXX_3.4.21 5 + _ZNSolsEPFRSoS_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPKv@GLIBCXX_3.4 4.1.1 + _ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSolsEb@GLIBCXX_3.4 4.1.1 + _ZNSolsEd@GLIBCXX_3.4 4.1.1 + _ZNSolsEe@GLIBCXX_3.4 4.1.1 + _ZNSolsEf@GLIBCXX_3.4 4.1.1 + _ZNSolsEi@GLIBCXX_3.4 4.1.1 + _ZNSolsEj@GLIBCXX_3.4 4.1.1 + _ZNSolsEl@GLIBCXX_3.4 4.1.1 + _ZNSolsEm@GLIBCXX_3.4 4.1.1 + _ZNSolsEs@GLIBCXX_3.4 4.1.1 + _ZNSolsEt@GLIBCXX_3.4 4.1.1 + _ZNSolsEx@GLIBCXX_3.4 4.1.1 + _ZNSolsEy@GLIBCXX_3.4 4.1.1 + _ZNSs12_Alloc_hiderC1EPcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs12_Alloc_hiderC2EPcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs12_M_leak_hardEv@GLIBCXX_3.4 4.1.1 + _ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcPKcS1_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcS_S_@GLIBCXX_3.4 4.1.1 + _ZNSs13shrink_to_fitEv@GLIBCXX_3.4.14 4.5 + _ZNSs3endEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_destroyERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_disposeERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep7_M_grabERKSaIcES2_@GLIBCXX_3.4 4.1.1 + _ZNSs4backEv@GLIBCXX_3.4.15 4.6 + _ZNSs4nposE@GLIBCXX_3.4 4.1.1 + _ZNSs4rendEv@GLIBCXX_3.4 4.1.1 + _ZNSs4swapERSs@GLIBCXX_3.4 4.1.1 + _ZNSs5beginEv@GLIBCXX_3.4 4.1.1 + _ZNSs5clearEv@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@GLIBCXX_3.4 4.1.1 + _ZNSs5frontEv@GLIBCXX_3.4.15 4.6 + _ZNSs6appendEPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6appendESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6assignEOSs@GLIBCXX_3.4.14 4.5 + _ZNSs6assignEPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6assignESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@GLIBCXX_3.4 4.1.1 + _ZNSs6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_dataEPc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_leakEv@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs8pop_backEv@GLIBCXX_3.4.17 4.7 + _ZNSs9push_backEc@GLIBCXX_3.4 4.1.1 + _ZNSsC1EOSs@GLIBCXX_3.4.14 4.5 + _ZNSsC1EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsC1ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EOSs@GLIBCXX_3.4.15 4.6 + _ZNSsC2EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsC2ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSsD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSsaSEOSs@GLIBCXX_3.4.14 4.5 + _ZNSsaSEPKc@GLIBCXX_3.4 4.1.1 + _ZNSsaSERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsaSESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsaSEc@GLIBCXX_3.4 4.1.1 + _ZNSspLEPKc@GLIBCXX_3.4 4.1.1 + _ZNSspLERKSs@GLIBCXX_3.4 4.1.1 + _ZNSspLESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSspLEc@GLIBCXX_3.4 4.1.1 + _ZNSt10_Sp_lockerC1EPKv@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerC1EPKvS1_@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerC2EPKv@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerC2EPKvS1_@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerD1Ev@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerD2Ev@GLIBCXX_3.4.21 5 + _ZNSt10__num_base11_S_atoms_inE@GLIBCXX_3.4 4.1.1 + _ZNSt10__num_base12_S_atoms_outE@GLIBCXX_3.4 4.1.1 + _ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5alnumE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5alphaE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5blankE@GLIBCXX_3.4.21 5 + _ZNSt10ctype_base5cntrlE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5digitE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5graphE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5lowerE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5printE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5punctE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5spaceE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5upperE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base6xdigitE@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base18_S_default_patternE@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base20_S_construct_patternEccc@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base8_S_atomsE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstream6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4.5 4.1.1 + _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4.5 4.1.1 + _ZNSt11logic_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC1ERKS_@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC2ERKS_@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_erroraSERKS_@GLIBCXX_3.4.21 5 + _ZNSt11range_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt11range_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt11range_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@GLIBCXX_3.4.20 4.9 + _ZNSt11regex_errorC2ENSt15regex_constants10error_typeE@GLIBCXX_3.4.21 5 + _ZNSt11regex_errorD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12__basic_fileIcE2fdEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE4fileEv@GLIBCXX_3.4.1 4.1.1 + _ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12bad_weak_ptrD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12bad_weak_ptrD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12bad_weak_ptrD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12ctype_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt12domain_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt12domain_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12future_errorD0Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12future_errorD1Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12future_errorD2Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12length_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt12length_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt12length_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12out_of_rangeC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt12out_of_rangeC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt12out_of_rangeC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_1E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_2E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_3E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_4E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_5E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_6E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_7E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_8E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_9E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_10E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_11E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_12E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_13E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_14E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_15E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_16E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_17E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_18E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_19E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_20E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_21E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_22E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_23E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_24E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_25E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_26E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_27E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_28E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_29E@GLIBCXX_3.4.15 4.6 + _ZNSt12strstreambuf3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7_M_freeEPc@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12system_errorD0Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt12system_errorD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt12system_errorD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt13bad_exceptionD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13bad_exceptionD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13bad_exceptionD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6 + _ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6 + _ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1ERSt14basic_iostreamIwS1_E@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2ERSt14basic_iostreamIwS1_E@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@GLIBCXX_3.4 4.1.1 + _ZNSt13random_device14_M_init_pretr1ERKSs@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device16_M_getval_pretr1Ev@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device7_M_finiEv@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device7_M_initERKSs@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device9_M_getvalEv@GLIBCXX_3.4.18 4.8 + _ZNSt13runtime_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14error_categoryC1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryC2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14numeric_limitsIDiE10has_denormE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE10is_boundedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE10is_integerE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE11round_styleE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12has_infinityE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIDiE12max_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12min_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14is_specializedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14max_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14min_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE5radixE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE5trapsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE6digitsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE8digits10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE8is_exactE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_iec559E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_moduloE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_signedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10has_denormE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10is_boundedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10is_integerE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE11round_styleE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12has_infinityE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIDsE12max_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12min_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14is_specializedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14max_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14min_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE5radixE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE5trapsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE6digitsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE8digits10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE8is_exactE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_iec559E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_moduloE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_signedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIaE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIaE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIbE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIcE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIdE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIfE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIhE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIiE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIjE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIlE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsImE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIsE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsItE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIwE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIxE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIyE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt14overflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt14overflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base11_M_transferEPS_S0_@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base4hookEPS_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base4swapERS_S0_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base6unhookEv@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base7_M_hookEPS_@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base7reverseEv@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base8transferEPS_S0_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@GLIBCXX_3.4.10 4.3 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@GLIBCXX_3.4.10 4.3 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt15underflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt15underflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16bad_array_lengthD0Ev@CXXABI_1.3.8 4.9 + _ZNSt16bad_array_lengthD1Ev@CXXABI_1.3.8 4.9 + _ZNSt16bad_array_lengthD2Ev@CXXABI_1.3.8 4.9 + _ZNSt16invalid_argumentC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt16invalid_argumentC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt16invalid_argumentC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17__timepunct_cacheIcE12_S_timezonesE@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwE12_S_timezonesE@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17bad_function_callD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17bad_function_callD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17bad_function_callD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17moneypunct_bynameIcLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt18condition_variable10notify_allEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variable10notify_oneEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableC1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableC2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt19__codecvt_utf8_baseIDiED0Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDiED1Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDiED2Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDsED0Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDsED1Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDsED2Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIwED0Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIwED1Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIwED2Ev@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 4.1.1 + _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 4.1.1 + _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt20__codecvt_utf16_baseIDiED0Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDiED1Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDiED2Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDsED0Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDsED1Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDsED2Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIwED0Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIwED1Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIwED2Ev@GLIBCXX_3.4.21 5 + _ZNSt20bad_array_new_lengthD0Ev@CXXABI_1.3.8 4.9 + _ZNSt20bad_array_new_lengthD1Ev@CXXABI_1.3.8 4.9 + _ZNSt20bad_array_new_lengthD2Ev@CXXABI_1.3.8 4.9 + _ZNSt21__numeric_limits_base10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt21__numeric_limits_base12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt22condition_variable_anyC1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyC2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt25__codecvt_utf8_utf16_baseIDiED0Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDiED1Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDiED2Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDsED0Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDsED1Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDsED2Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIwED0Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIwED1Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIwED2Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V214error_categoryD0Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V214error_categoryD1Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V214error_categoryD2Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V215system_categoryEv@GLIBCXX_3.4.21 5 + _ZNSt3_V216generic_categoryEv@GLIBCXX_3.4.21 5 + _ZNSt3tr18__detail12__prime_listE@GLIBCXX_3.4.10 4.3 + _ZNSt5ctypeIcE10table_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcE13classic_tableEv@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwE19_M_initialize_ctypeEv@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6__norm15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base4hookEPS0_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base6unhookEv@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base7reverseEv@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt6chrono3_V212steady_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212steady_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono12system_clock12is_monotonicE@GLIBCXX_3.4.11 4.4.0 + _ZNSt6chrono12system_clock3nowEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt6locale11_M_coalesceERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6locale21_S_normalize_categoryEi@GLIBCXX_3.4 4.1.1 + _ZNSt6locale3allE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale4noneE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale4timeE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5ctypeE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet13_S_get_c_nameEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt6locale5facet15_S_get_c_localeEv@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale6globalERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7classicEv@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7collateE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7numericE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale8messagesE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale8monetaryE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1EPNS_5_ImplE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_PKci@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2EPNS_5_ImplE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_PKci@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeaSERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@GLIBCXX_3.4.11 4.4.0 + _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@GLIBCXX_3.4.21 5 + _ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@GLIBCXX_3.4.22 6 + _ZNSt6thread20hardware_concurrencyEv@GLIBCXX_3.4.17 4.7 + _ZNSt6thread4joinEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt6thread6_StateD0Ev@GLIBCXX_3.4.22 6 + _ZNSt6thread6_StateD1Ev@GLIBCXX_3.4.22 6 + _ZNSt6thread6_StateD2Ev@GLIBCXX_3.4.22 6 + _ZNSt6thread6detachEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt7codecvtIDic11__mbstate_tE2idE@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDic11__mbstate_tED0Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDic11__mbstate_tED1Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDic11__mbstate_tED2Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsc11__mbstate_tE2idE@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsc11__mbstate_tED0Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsc11__mbstate_tED1Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsc11__mbstate_tED2Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIcc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8__detail12__prime_listE@GLIBCXX_3.4.10 4.3 + _ZNSt8__detail15_List_node_base10_M_reverseEv@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base9_M_unhookEv@GLIBCXX_3.4.15 4.6 + _ZNSt8bad_castD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8bad_castD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8bad_castD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base10floatfieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base10scientificE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base11adjustfieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base13_M_grow_wordsEib@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base15sync_with_stdioEb@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base17_M_call_callbacksENS_5eventE@GLIBCXX_3.4.6 4.1.1 + _ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base20_M_dispose_callbacksEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt8ios_base2inE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3appE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3ateE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3begE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3curE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3decE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3endE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3hexE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3octE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3outE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4leftE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5fixedE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5rightE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5truncE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6badbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6binaryE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6eofbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6skipwsE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6xallocEv@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7_M_initEv@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7_M_moveERS_@GLIBCXX_3.4.21 5 + _ZNSt8ios_base7_M_swapERS_@GLIBCXX_3.4.21 5 + _ZNSt8ios_base7failbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7goodbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7showposE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7unitbufE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base8internalE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base8showbaseE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9basefieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9boolalphaE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9showpointE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9uppercaseE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.14 4.5 + _ZNSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base4hookEPS0_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base4swapERS0_S1_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base6unhookEv@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base7reverseEv@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt9bad_allocD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9bad_allocD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9bad_allocD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4moveEOS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEE4moveERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE9set_rdbufEPSt15basic_streambufIcS1_E@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4moveEOS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEE4moveERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE9set_rdbufEPSt15basic_streambufIwS1_E@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt9strstream6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD2Ev@GLIBCXX_3.4 4.1.1 + _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.11 4.4.0 + _ZNVSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.11 4.4.0 + _ZSt10adopt_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt10defer_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt10unexpectedv@GLIBCXX_3.4 4.1.1 + _ZSt11__once_call@GLIBCXX_3.4.11 4.4.0 + _ZSt11try_to_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt13get_terminatev@GLIBCXX_3.4.20 4.9 + _ZSt13set_terminatePFvvE@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14get_unexpectedv@GLIBCXX_3.4.20 4.9 + _ZSt14set_unexpectedPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15__once_callable@GLIBCXX_3.4.11 4.4.0 + _ZSt15future_category@GLIBCXX_3.4.14 4.5 + _ZSt15future_categoryv@GLIBCXX_3.4.15 4.6 + _ZSt15get_new_handlerv@GLIBCXX_3.4.20 4.9 + _ZSt15set_new_handlerPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15system_categoryv@GLIBCXX_3.4.11 4.4.0 + _ZNSt13runtime_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt13runtime_errorC1ERKS_@GLIBCXX_3.4.21 5 + _ZNSt13runtime_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt13runtime_errorC2ERKS_@GLIBCXX_3.4.21 5 + _ZNSt13runtime_erroraSERKS_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZSt16__throw_bad_castv@GLIBCXX_3.4 4.1.1 + _ZSt16generic_categoryv@GLIBCXX_3.4.11 4.4.0 + _ZSt17__throw_bad_allocv@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18__throw_bad_typeidv@GLIBCXX_3.4 4.1.1 + _ZSt18uncaught_exceptionv@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_ios_failurePKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_logic_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_range_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@GLIBCXX_3.4.15 4.6 + _ZSt19uncaught_exceptionsv@GLIBCXX_3.4.22 6 + _ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@GLIBCXX_3.4 4.1.1 + _ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_domain_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_future_errori@GLIBCXX_3.4.14 4.5 + _ZSt20__throw_length_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_out_of_rangePKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_system_errori@GLIBCXX_3.4.11 4.4.0 + _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1 + _ZSt21__throw_bad_exceptionv@GLIBCXX_3.4 4.1.1 + _ZSt21__throw_runtime_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt22__throw_overflow_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt23__throw_underflow_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt24__throw_invalid_argumentPKc@GLIBCXX_3.4 4.1.1 + _ZSt24__throw_out_of_range_fmtPKcz@GLIBCXX_3.4.20 4.9 + _ZSt25__throw_bad_function_callv@GLIBCXX_3.4.14 4.5 + _ZSt25notify_all_at_thread_exitRSt18condition_variableSt11unique_lockISt5mutexE@GLIBCXX_3.4.21 5 + _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@GLIBCXX_3.4 4.1.1 + _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@GLIBCXX_3.4 4.1.1 + _ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt3cin@GLIBCXX_3.4 4.1.1 + _ZSt4cerr@GLIBCXX_3.4 4.1.1 + _ZSt4clog@GLIBCXX_3.4 4.1.1 + _ZSt4cout@GLIBCXX_3.4 4.1.1 + _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4wcin@GLIBCXX_3.4 4.1.1 + _ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt5wcerr@GLIBCXX_3.4 4.1.1 + _ZSt5wclog@GLIBCXX_3.4 4.1.1 + _ZSt5wcout@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1 + _ZSt7nothrow@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt5ctypeIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt5ctypeIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7collateIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7collateIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8messagesIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8messagesIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8numpunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8numpunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9terminatev@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7collateIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7collateIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZTIDd@CXXABI_1.3.4 4.5 + _ZTIDe@CXXABI_1.3.4 4.5 + _ZTIDf@CXXABI_1.3.4 4.5 + _ZTIDi@CXXABI_1.3.3 4.4.0 + _ZTIDn@CXXABI_1.3.5 4.6 + _ZTIDs@CXXABI_1.3.3 4.4.0 + _ZTIN10__cxxabiv115__forced_unwindE@CXXABI_1.3.2 4.3 + _ZTIN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv119__foreign_exceptionE@CXXABI_1.3.2 4.3 + _ZTIN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTINSt3_V214error_categoryE@GLIBCXX_3.4.21 5 + _ZTINSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTINSt6thread6_StateE@GLIBCXX_3.4.22 6 + _ZTINSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTIPDd@CXXABI_1.3.4 4.5 + _ZTIPDe@CXXABI_1.3.4 4.5 + _ZTIPDf@CXXABI_1.3.4 4.5 + _ZTIPDi@CXXABI_1.3.3 4.4.0 + _ZTIPDn@CXXABI_1.3.5 4.6 + _ZTIPDs@CXXABI_1.3.3 4.4.0 + _ZTIPKDd@CXXABI_1.3.4 4.5 + _ZTIPKDe@CXXABI_1.3.4 4.5 + _ZTIPKDf@CXXABI_1.3.4 4.5 + _ZTIPKDi@CXXABI_1.3.3 4.4.0 + _ZTIPKDn@CXXABI_1.3.5 4.6 + _ZTIPKDs@CXXABI_1.3.3 4.4.0 + _ZTIPKa@CXXABI_1.3 4.1.1 + _ZTIPKb@CXXABI_1.3 4.1.1 + _ZTIPKc@CXXABI_1.3 4.1.1 + _ZTIPKd@CXXABI_1.3 4.1.1 + _ZTIPKe@CXXABI_1.3 4.1.1 + _ZTIPKf@CXXABI_1.3 4.1.1 + _ZTIPKh@CXXABI_1.3 4.1.1 + _ZTIPKi@CXXABI_1.3 4.1.1 + _ZTIPKj@CXXABI_1.3 4.1.1 + _ZTIPKl@CXXABI_1.3 4.1.1 + _ZTIPKm@CXXABI_1.3 4.1.1 + _ZTIPKs@CXXABI_1.3 4.1.1 + _ZTIPKt@CXXABI_1.3 4.1.1 + _ZTIPKv@CXXABI_1.3 4.1.1 + _ZTIPKw@CXXABI_1.3 4.1.1 + _ZTIPKx@CXXABI_1.3 4.1.1 + _ZTIPKy@CXXABI_1.3 4.1.1 + _ZTIPa@CXXABI_1.3 4.1.1 + _ZTIPb@CXXABI_1.3 4.1.1 + _ZTIPc@CXXABI_1.3 4.1.1 + _ZTIPd@CXXABI_1.3 4.1.1 + _ZTIPe@CXXABI_1.3 4.1.1 + _ZTIPf@CXXABI_1.3 4.1.1 + _ZTIPh@CXXABI_1.3 4.1.1 + _ZTIPi@CXXABI_1.3 4.1.1 + _ZTIPj@CXXABI_1.3 4.1.1 + _ZTIPl@CXXABI_1.3 4.1.1 + _ZTIPm@CXXABI_1.3 4.1.1 + _ZTIPs@CXXABI_1.3 4.1.1 + _ZTIPt@CXXABI_1.3 4.1.1 + _ZTIPv@CXXABI_1.3 4.1.1 + _ZTIPw@CXXABI_1.3 4.1.1 + _ZTIPx@CXXABI_1.3 4.1.1 + _ZTIPy@CXXABI_1.3 4.1.1 + _ZTISd@GLIBCXX_3.4 4.1.1 + _ZTISi@GLIBCXX_3.4 4.1.1 + _ZTISo@GLIBCXX_3.4 4.1.1 + _ZTISt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTISt10ctype_base@GLIBCXX_3.4 4.1.1 + _ZTISt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTISt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTISt10money_base@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTISt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTISt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTISt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTISt11range_error@GLIBCXX_3.4 4.1.1 + _ZTISt11regex_error@GLIBCXX_3.4.15 4.6 + _ZTISt12bad_weak_ptr@GLIBCXX_3.4.15 4.6 + _ZTISt12codecvt_base@GLIBCXX_3.4 4.1.1 + _ZTISt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTISt12future_error@GLIBCXX_3.4.14 4.5 + _ZTISt12length_error@GLIBCXX_3.4 4.1.1 + _ZTISt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTISt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTISt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTISt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13messages_base@GLIBCXX_3.4 4.1.1 + _ZTISt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTISt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTISt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTISt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTISt17bad_function_call@GLIBCXX_3.4.15 4.6 + _ZTISt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt19__codecvt_utf8_baseIDiE@GLIBCXX_3.4.21 5 + _ZTISt19__codecvt_utf8_baseIDsE@GLIBCXX_3.4.21 5 + _ZTISt19__codecvt_utf8_baseIwE@GLIBCXX_3.4.21 5 + _ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt20__codecvt_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTISt20__codecvt_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTISt20__codecvt_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTISt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTISt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTISt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt25__codecvt_utf8_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTISt25__codecvt_utf8_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTISt25__codecvt_utf8_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTISt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTISt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTISt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTISt7codecvtIDsc11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTISt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTISt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTISt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTISt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTISt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTISt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTISt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTISt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt9exception@GLIBCXX_3.4 4.1.1 + _ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9strstream@GLIBCXX_3.4 4.1.1 + _ZTISt9time_base@GLIBCXX_3.4 4.1.1 + _ZTISt9type_info@GLIBCXX_3.4 4.1.1 + _ZTIa@CXXABI_1.3 4.1.1 + _ZTIb@CXXABI_1.3 4.1.1 + _ZTIc@CXXABI_1.3 4.1.1 + _ZTId@CXXABI_1.3 4.1.1 + _ZTIe@CXXABI_1.3 4.1.1 + _ZTIf@CXXABI_1.3 4.1.1 + _ZTIh@CXXABI_1.3 4.1.1 + _ZTIi@CXXABI_1.3 4.1.1 + _ZTIj@CXXABI_1.3 4.1.1 + _ZTIl@CXXABI_1.3 4.1.1 + _ZTIm@CXXABI_1.3 4.1.1 + _ZTIs@CXXABI_1.3 4.1.1 + _ZTIt@CXXABI_1.3 4.1.1 + _ZTIv@CXXABI_1.3 4.1.1 + _ZTIw@CXXABI_1.3 4.1.1 + _ZTIx@CXXABI_1.3 4.1.1 + _ZTIy@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSNSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTSNSt6thread6_StateE@GLIBCXX_3.4.22 6 + _ZTSNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTSPKa@CXXABI_1.3 4.1.1 + _ZTSPKb@CXXABI_1.3 4.1.1 + _ZTSPKc@CXXABI_1.3 4.1.1 + _ZTSPKd@CXXABI_1.3 4.1.1 + _ZTSPKe@CXXABI_1.3 4.1.1 + _ZTSPKf@CXXABI_1.3 4.1.1 + _ZTSPKh@CXXABI_1.3 4.1.1 + _ZTSPKi@CXXABI_1.3 4.1.1 + _ZTSPKj@CXXABI_1.3 4.1.1 + _ZTSPKl@CXXABI_1.3 4.1.1 + _ZTSPKm@CXXABI_1.3 4.1.1 + _ZTSPKs@CXXABI_1.3 4.1.1 + _ZTSPKt@CXXABI_1.3 4.1.1 + _ZTSPKv@CXXABI_1.3 4.1.1 + _ZTSPKw@CXXABI_1.3 4.1.1 + _ZTSPKx@CXXABI_1.3 4.1.1 + _ZTSPKy@CXXABI_1.3 4.1.1 + _ZTSPa@CXXABI_1.3 4.1.1 + _ZTSPb@CXXABI_1.3 4.1.1 + _ZTSPc@CXXABI_1.3 4.1.1 + _ZTSPd@CXXABI_1.3 4.1.1 + _ZTSPe@CXXABI_1.3 4.1.1 + _ZTSPf@CXXABI_1.3 4.1.1 + _ZTSPh@CXXABI_1.3 4.1.1 + _ZTSPi@CXXABI_1.3 4.1.1 + _ZTSPj@CXXABI_1.3 4.1.1 + _ZTSPl@CXXABI_1.3 4.1.1 + _ZTSPm@CXXABI_1.3 4.1.1 + _ZTSPs@CXXABI_1.3 4.1.1 + _ZTSPt@CXXABI_1.3 4.1.1 + _ZTSPv@CXXABI_1.3 4.1.1 + _ZTSPw@CXXABI_1.3 4.1.1 + _ZTSPx@CXXABI_1.3 4.1.1 + _ZTSPy@CXXABI_1.3 4.1.1 + _ZTSSd@GLIBCXX_3.4 4.1.1 + _ZTSSi@GLIBCXX_3.4 4.1.1 + _ZTSSo@GLIBCXX_3.4 4.1.1 + _ZTSSt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTSSt10ctype_base@GLIBCXX_3.4 4.1.1 + _ZTSSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTSSt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTSSt10money_base@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTSSt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTSSt11range_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12codecvt_base@GLIBCXX_3.4 4.1.1 + _ZTSSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12future_error@GLIBCXX_3.4.14 4.5 + _ZTSSt12length_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTSSt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTSSt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTSSt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13messages_base@GLIBCXX_3.4 4.1.1 + _ZTSSt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTSSt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTSSt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTSSt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19__codecvt_utf8_baseIDiE@GLIBCXX_3.4.21 5 + _ZTSSt19__codecvt_utf8_baseIDsE@GLIBCXX_3.4.21 5 + _ZTSSt19__codecvt_utf8_baseIwE@GLIBCXX_3.4.21 5 + _ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt20__codecvt_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTSSt20__codecvt_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTSSt20__codecvt_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTSSt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTSSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt25__codecvt_utf8_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTSSt25__codecvt_utf8_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTSSt25__codecvt_utf8_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTSSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTSSt7codecvtIDsc11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTSSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTSSt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTSSt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTSSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9exception@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTSSt9time_base@GLIBCXX_3.4 4.1.1 + _ZTSSt9type_info@GLIBCXX_3.4 4.1.1 + _ZTSa@CXXABI_1.3 4.1.1 + _ZTSb@CXXABI_1.3 4.1.1 + _ZTSc@CXXABI_1.3 4.1.1 + _ZTSd@CXXABI_1.3 4.1.1 + _ZTSe@CXXABI_1.3 4.1.1 + _ZTSf@CXXABI_1.3 4.1.1 + _ZTSh@CXXABI_1.3 4.1.1 + _ZTSi@CXXABI_1.3 4.1.1 + _ZTSj@CXXABI_1.3 4.1.1 + _ZTSl@CXXABI_1.3 4.1.1 + _ZTSm@CXXABI_1.3 4.1.1 + _ZTSs@CXXABI_1.3 4.1.1 + _ZTSt@CXXABI_1.3 4.1.1 + _ZTSv@CXXABI_1.3 4.1.1 + _ZTSw@CXXABI_1.3 4.1.1 + _ZTSx@CXXABI_1.3 4.1.1 + _ZTSy@CXXABI_1.3 4.1.1 + _ZTTSd@GLIBCXX_3.4 4.1.1 + _ZTTSi@GLIBCXX_3.4 4.1.1 + _ZTTSo@GLIBCXX_3.4 4.1.1 + _ZTTSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTTSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTVN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVNSt3_V214error_categoryE@GLIBCXX_3.4.21 5 + _ZTVNSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTVNSt6thread6_StateE@GLIBCXX_3.4.22 6 + _ZTVNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTVSd@GLIBCXX_3.4 4.1.1 + _ZTVSi@GLIBCXX_3.4 4.1.1 + _ZTVSo@GLIBCXX_3.4 4.1.1 + _ZTVSt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTVSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTVSt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTVSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTVSt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTVSt11range_error@GLIBCXX_3.4 4.1.1 + _ZTVSt11regex_error@GLIBCXX_3.4.15 4.6 + _ZTVSt12bad_weak_ptr@GLIBCXX_3.4.15 4.6 + _ZTVSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTVSt12future_error@GLIBCXX_3.4.14 4.5 + _ZTVSt12length_error@GLIBCXX_3.4 4.1.1 + _ZTVSt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTVSt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTVSt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTVSt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTVSt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTVSt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTVSt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTVSt17bad_function_call@GLIBCXX_3.4.15 4.6 + _ZTVSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19__codecvt_utf8_baseIDiE@GLIBCXX_3.4.21 5 + _ZTVSt19__codecvt_utf8_baseIDsE@GLIBCXX_3.4.21 5 + _ZTVSt19__codecvt_utf8_baseIwE@GLIBCXX_3.4.21 5 + _ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt20__codecvt_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTVSt20__codecvt_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTVSt20__codecvt_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTVSt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTVSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt25__codecvt_utf8_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTVSt25__codecvt_utf8_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTVSt25__codecvt_utf8_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTVSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTVSt7codecvtIDsc11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTVSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTVSt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTVSt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTVSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9exception@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTVSt9type_info@GLIBCXX_3.4 4.1.1 + _ZdaPv@GLIBCXX_3.4 4.1.1 + _ZdaPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZdaPvSt11align_val_t@CXXABI_1.3.11 7 + _ZdaPvSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _ZdlPv@GLIBCXX_3.4 4.1.1 + _ZdlPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZdlPvSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + __atomic_flag_for_address@GLIBCXX_3.4.11 4.4.0 + __atomic_flag_wait_explicit@GLIBCXX_3.4.11 4.4.0 + __cxa_allocate_dependent_exception@CXXABI_1.3.6 4.7 + __cxa_allocate_exception@CXXABI_1.3 4.1.1 + __cxa_bad_cast@CXXABI_1.3 4.1.1 + __cxa_bad_typeid@CXXABI_1.3 4.1.1 + __cxa_begin_catch@CXXABI_1.3 4.1.1 + __cxa_call_unexpected@CXXABI_1.3 4.1.1 + __cxa_current_exception_type@CXXABI_1.3 4.1.1 + __cxa_deleted_virtual@CXXABI_1.3.6 4.7 + __cxa_demangle@CXXABI_1.3 4.1.1 + __cxa_end_catch@CXXABI_1.3 4.1.1 + __cxa_free_dependent_exception@CXXABI_1.3.6 4.7 + __cxa_free_exception@CXXABI_1.3 4.1.1 + __cxa_get_exception_ptr@CXXABI_1.3.1 4.1.1 + __cxa_get_globals@CXXABI_1.3 4.1.1 + __cxa_get_globals_fast@CXXABI_1.3 4.1.1 + __cxa_guard_abort@CXXABI_1.3 4.1.1 + __cxa_guard_acquire@CXXABI_1.3 4.1.1 + __cxa_guard_release@CXXABI_1.3 4.1.1 + __cxa_init_primary_exception@CXXABI_1.3.11 7 + __cxa_pure_virtual@CXXABI_1.3 4.1.1 + __cxa_rethrow@CXXABI_1.3 4.1.1 + __cxa_thread_atexit@CXXABI_1.3.7 4.8 + __cxa_throw@CXXABI_1.3 4.1.1 + __cxa_throw_bad_array_length@CXXABI_1.3.8 4.9 + __cxa_throw_bad_array_new_length@CXXABI_1.3.8 4.9 + __cxa_tm_cleanup@CXXABI_TM_1 4.7 + __cxa_vec_cctor@CXXABI_1.3 4.1.1 + __cxa_vec_cleanup@CXXABI_1.3 4.1.1 + __cxa_vec_ctor@CXXABI_1.3 4.1.1 + __cxa_vec_delete2@CXXABI_1.3 4.1.1 + __cxa_vec_delete3@CXXABI_1.3 4.1.1 + __cxa_vec_delete@CXXABI_1.3 4.1.1 + __cxa_vec_dtor@CXXABI_1.3 4.1.1 + __cxa_vec_new2@CXXABI_1.3 4.1.1 + __cxa_vec_new3@CXXABI_1.3 4.1.1 + __cxa_vec_new@CXXABI_1.3 4.1.1 + __dynamic_cast@CXXABI_1.3 4.1.1 + __once_proxy@GLIBCXX_3.4.11 4.4.0 + atomic_flag_clear_explicit@GLIBCXX_3.4.11 4.4.0 + atomic_flag_test_and_set_explicit@GLIBCXX_3.4.11 4.4.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.common.cxx11 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.common.cxx11 @@ -0,0 +1,884 @@ + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIcLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIcLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIwLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIwLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx117collateIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx117collateIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118messagesIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118messagesIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118numpunctIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118numpunctIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt3_V214error_category10_M_messageB5cxx11Ei@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt3tr14hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclES6_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt3tr14hashINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEclES6_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt6locale4nameB5cxx11Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4cendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5crendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6cbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7crbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4cendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5c_strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5crendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5emptyEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6cbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6lengthEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_M_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7crbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE10_M_compareEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE10do_compareEPKcS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12do_transformEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE4hashEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE7compareEPKcS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE7do_hashEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE9transformEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE10_M_compareEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE10do_compareEPKwS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12do_transformEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE4hashEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE7compareEPKwS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE7do_hashEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE9transformEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE18_M_convert_to_charERKNS_12basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE20_M_convert_from_charEPc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE3getEiiiRKNS_12basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6localePKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE5closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE6do_getEiiiRKNS_12basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE7do_openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE8do_closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE18_M_convert_to_charERKNS_12basic_stringIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE20_M_convert_from_charEPc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE3getEiiiRKNS_12basic_stringIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6localePKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE5closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE6do_getEiiiRKNS_12basic_stringIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE7do_openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE8do_closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE11do_truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE12do_falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE8truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE9falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE11do_truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE12do_falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE8truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE9falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS2_IcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS2_IcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt8ios_base7failureB5cxx114whatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS5_S4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4nposE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPcS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvS9_T_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_NS6_IPcS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_PcSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S9_S9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_St16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_NS6_IPKcS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_S7_S7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8pop_backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPwEEvT_S7_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS4_EESA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS5_S4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS5_S5_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4nposE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5clearEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPKwS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvS9_T_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_M_dataEPw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_NS6_IPwS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_PwSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S9_S9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_St16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_NS6_IPKwS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_S7_S7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8pop_backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9push_backEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsC1ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsC2ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsD1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsD2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsC1ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsC2ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsD1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsD2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1EPKcRKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2EPKcRKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13random_device14_M_init_pretr1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt17iostream_categoryv@GLIBCXX_3.4.21 5.1.1 + (optional=abi_c++11)_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx1110moneypunctIcLb0EEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx1110moneypunctIwLb0EEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx117collateIcEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx117collateIwEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118messagesIcEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118messagesIwEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118numpunctIcEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118numpunctIwEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIcLb0EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIcLb1EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIwLb0EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIwLb1EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx117collateIcEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx117collateIwEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118messagesIcEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118messagesIwEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118numpunctIcEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118numpunctIwEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EES5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EES5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1114collate_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1114collate_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115messages_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115messages_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115numpunct_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115numpunct_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx117collateIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx117collateIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118messagesIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118messagesIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118numpunctIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118numpunctIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt8ios_base7failureB5cxx11E@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1114collate_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1114collate_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115messages_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115messages_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115numpunct_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115numpunct_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx117collateIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx117collateIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118messagesIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118messagesIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118numpunctIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118numpunctIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt8ios_base7failureB5cxx11E@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1114collate_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1114collate_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115messages_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115messages_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115numpunct_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115numpunct_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx117collateIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx117collateIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118messagesIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118messagesIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118numpunctIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118numpunctIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt8ios_base7failureB5cxx11E@GLIBCXX_3.4.21 5.2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.excprop +++ gcc-7-7.3.0/debian/libstdc++6.symbols.excprop @@ -0,0 +1,18 @@ + _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@CXXABI_1.3.3 4.4.0 + _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@CXXABI_1.3.3 4.4.0 + _ZNKSt15__exception_ptr13exception_ptrntEv@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptr4swapERS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1EPv@CXXABI_1.3.11 7 + _ZNSt15__exception_ptr13exception_ptrC1ERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2ERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrD1Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrD2Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptraSERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0 + _ZSt17current_exceptionv@CXXABI_1.3.3 4.4.0 + _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@CXXABI_1.3.3 4.4.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.float128 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.float128 @@ -0,0 +1,7 @@ + CXXABI_FLOAT128@CXXABI_FLOAT128 5 + _ZTIPKg@CXXABI_FLOAT128 5 + _ZTIPg@CXXABI_FLOAT128 5 + _ZTIg@CXXABI_FLOAT128 5 + _ZTSPKg@CXXABI_FLOAT128 5 + _ZTSPg@CXXABI_FLOAT128 5 + _ZTSg@CXXABI_FLOAT128 5 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.glibcxxmath +++ gcc-7-7.3.0/debian/libstdc++6.symbols.glibcxxmath @@ -0,0 +1,22 @@ + acosl@GLIBCXX_3.4.3 4.1.1 + asinl@GLIBCXX_3.4.3 4.1.1 + atan2l@GLIBCXX_3.4 4.1.1 + atanl@GLIBCXX_3.4.3 4.1.1 + ceill@GLIBCXX_3.4.3 4.1.1 + coshl@GLIBCXX_3.4 4.1.1 + cosl@GLIBCXX_3.4 4.1.1 + expl@GLIBCXX_3.4 4.1.1 + floorl@GLIBCXX_3.4.3 4.1.1 + fmodl@GLIBCXX_3.4.3 4.1.1 + frexpl@GLIBCXX_3.4.3 4.1.1 + hypotl@GLIBCXX_3.4 4.1.1 + ldexpl@GLIBCXX_3.4.3 4.1.1 + log10l@GLIBCXX_3.4 4.1.1 + logl@GLIBCXX_3.4 4.1.1 + modfl@GLIBCXX_3.4.3 4.1.1 + powl@GLIBCXX_3.4 4.1.1 + sinhl@GLIBCXX_3.4 4.1.1 + sinl@GLIBCXX_3.4 4.1.1 + sqrtl@GLIBCXX_3.4 4.1.1 + tanhl@GLIBCXX_3.4 4.1.1 + tanl@GLIBCXX_3.4 4.1.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.hppa +++ gcc-7-7.3.0/debian/libstdc++6.symbols.hppa @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +# removed, see PR libstdc++/39491 __signbitl@GLIBCXX_3.4 4.2.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.hurd-i386 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.hurd-i386 @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit.hurd" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.i386 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.i386 @@ -0,0 +1,14 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.ia64 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.ia64 @@ -0,0 +1,53 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.8 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.kfreebsd-amd64 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.kfreebsd-amd64 @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.kfreebsd-i386 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.kfreebsd-i386 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.ldbl.32bit +++ gcc-7-7.3.0/debian/libstdc++6.symbols.ldbl.32bit @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.ldbl.32bit.s390 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.ldbl.32bit.s390 @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.ldbl.64bit +++ gcc-7-7.3.0/debian/libstdc++6.symbols.ldbl.64bit @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.m68k +++ gcc-7-7.3.0/debian/libstdc++6.symbols.m68k @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mips +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mips @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +##include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mips64 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mips64 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mips64el +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mips64el @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.9.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.9.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mips64r6 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mips64r6 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mips64r6el +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mips64r6el @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.9 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.9 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mipsel +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mipsel @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mipsr6 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mipsr6 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.mipsr6el +++ gcc-7-7.3.0/debian/libstdc++6.symbols.mipsr6el @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.money.f128 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.money.f128 @@ -0,0 +1,10 @@ + GLIBCXX_LDBL_3.4.21@GLIBCXX_LDBL_3.4.21 5 +# cxx11 symbols only + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_3.4.21 5.2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.money.ldbl +++ gcc-7-7.3.0/debian/libstdc++6.symbols.money.ldbl @@ -0,0 +1,9 @@ +# cxx11 symbols only + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basece@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basece@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewe@GLIBCXX_3.4.21 5.2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.not-armel +++ gcc-7-7.3.0/debian/libstdc++6.symbols.not-armel @@ -0,0 +1,24 @@ + _ZNSt13__future_base11_State_baseD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base11_State_baseD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base11_State_baseD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseC1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseC2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv@GLIBCXX_3.4.21 5 + _ZNSt13__future_base19_Async_state_commonD0Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt13__future_base19_Async_state_commonD1Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt13__future_base19_Async_state_commonD2Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt16nested_exceptionD0Ev@CXXABI_1.3.5 4.6 + _ZNSt16nested_exceptionD1Ev@CXXABI_1.3.5 4.6 + _ZNSt16nested_exceptionD2Ev@CXXABI_1.3.5 4.6 + _ZTINSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6 + _ZTINSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6 + _ZTINSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTISt16nested_exception@CXXABI_1.3.5 4.6 + _ZTSNSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTVNSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6 + _ZTVNSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6 + _ZTVNSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTVSt16nested_exception@CXXABI_1.3.5 4.6 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.powerpc +++ gcc-7-7.3.0/debian/libstdc++6.symbols.powerpc @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.powerpcspe +++ gcc-7-7.3.0/debian/libstdc++6.symbols.powerpcspe @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.ppc64 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.ppc64 @@ -0,0 +1,11 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.ppc64el +++ gcc-7-7.3.0/debian/libstdc++6.symbols.ppc64el @@ -0,0 +1,11 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.s390 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.s390 @@ -0,0 +1,558 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit.s390" + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.s390x +++ gcc-7-7.3.0/debian/libstdc++6.symbols.s390x @@ -0,0 +1,13 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.sh4 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.sh4 @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.sparc +++ gcc-7-7.3.0/debian/libstdc++6.symbols.sparc @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.sparc64 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.sparc64 @@ -0,0 +1,11 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1 +# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc. +# #include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-7-7.3.0.orig/debian/libstdc++6.symbols.x32 +++ gcc-7-7.3.0/debian/libstdc++6.symbols.x32 @@ -0,0 +1,27 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 + _ZTIPKn@CXXABI_1.3.5 4.9.0 + _ZTIPKo@CXXABI_1.3.5 4.9.0 + _ZTIPn@CXXABI_1.3.5 4.9.0 + _ZTIPo@CXXABI_1.3.5 4.9.0 + _ZTIn@CXXABI_1.3.5 4.9.0 + _ZTIo@CXXABI_1.3.5 4.9.0 + _ZTSPKn@CXXABI_1.3.9 4.9.0 + _ZTSPKo@CXXABI_1.3.9 4.9.0 + _ZTSPn@CXXABI_1.3.9 4.9.0 + _ZTSPo@CXXABI_1.3.9 4.9.0 + _ZTSn@CXXABI_1.3.9 4.9.0 + _ZTSo@CXXABI_1.3.9 4.9.0 --- gcc-7-7.3.0.orig/debian/libstdc++CXX.postinst +++ gcc-7-7.3.0/debian/libstdc++CXX.postinst @@ -0,0 +1,18 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libstdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi + + if [ -n "$2" ] && [ -d /usr/share/gcc-4.9 ] && dpkg --compare-versions "$2" lt 5.1.1-10; then + find /usr/share/gcc-4.9/python -name __pycache__ -type d -print0 | xargs -r0 rm -rf + find /usr/share/gcc-4.9/python -name '*.py[co]' -type f -print0 | xargs -r0 rm -f + find /usr/share/gcc-4.9 -empty -delete 2>/dev/null || true + fi +esac + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/libstdc++CXX.prerm +++ gcc-7-7.3.0/debian/libstdc++CXX.prerm @@ -0,0 +1,13 @@ +#! /bin/sh + +set -e + +case "$1" in + remove|upgrade) + files=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {$NF=sprintf("__pycache__/%s.*.py[co]", substr($NF,1,length($NF)-3)); print}') + rm -f $files + dirs=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {NF--; print}' | sort -u) + find $dirs -mindepth 1 -maxdepth 1 -name __pycache__ -type d -empty | xargs -r rmdir +esac + +#DEBHELPER# --- gcc-7-7.3.0.orig/debian/libtsan0.symbols +++ gcc-7-7.3.0/debian/libtsan0.symbols @@ -0,0 +1,1807 @@ +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 + 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 + _ZN11__sanitizer7OnPrintEPKc@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_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___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_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_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_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_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_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_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_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_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 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_indir_call16@Base 5 + __sanitizer_cov_init@Base 5 + __sanitizer_cov_module_init@Base 5 + __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_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __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 + __sanitizer_cov_with_check@Base 6 + __sanitizer_free_hook@Base 5 + __sanitizer_get_allocated_size@Base 5 + __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_number_of_counters@Base 6 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_total_unique_caller_callee_pairs@Base 6 + __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 + __sanitizer_maybe_open_cov_file@Base 5 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_report_error_summary@Base 4.9 + __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 + __sanitizer_update_counter_bitset_and_clear_counters@Base 6 + __sigsetjmp@Base 4.9 + __tls_get_addr@Base 6 + __tsan_acquire@Base 4.9 + __tsan_atomic128_compare_exchange_strong@Base 4.9 + __tsan_atomic128_compare_exchange_val@Base 4.9 + __tsan_atomic128_compare_exchange_weak@Base 4.9 + __tsan_atomic128_exchange@Base 4.9 + __tsan_atomic128_fetch_add@Base 4.9 + __tsan_atomic128_fetch_and@Base 4.9 + __tsan_atomic128_fetch_nand@Base 4.9 + __tsan_atomic128_fetch_or@Base 4.9 + __tsan_atomic128_fetch_sub@Base 4.9 + __tsan_atomic128_fetch_xor@Base 4.9 + __tsan_atomic128_load@Base 4.9 + __tsan_atomic128_store@Base 4.9 + __tsan_atomic16_compare_exchange_strong@Base 4.9 + __tsan_atomic16_compare_exchange_val@Base 4.9 + __tsan_atomic16_compare_exchange_weak@Base 4.9 + __tsan_atomic16_exchange@Base 4.9 + __tsan_atomic16_fetch_add@Base 4.9 + __tsan_atomic16_fetch_and@Base 4.9 + __tsan_atomic16_fetch_nand@Base 4.9 + __tsan_atomic16_fetch_or@Base 4.9 + __tsan_atomic16_fetch_sub@Base 4.9 + __tsan_atomic16_fetch_xor@Base 4.9 + __tsan_atomic16_load@Base 4.9 + __tsan_atomic16_store@Base 4.9 + __tsan_atomic32_compare_exchange_strong@Base 4.9 + __tsan_atomic32_compare_exchange_val@Base 4.9 + __tsan_atomic32_compare_exchange_weak@Base 4.9 + __tsan_atomic32_exchange@Base 4.9 + __tsan_atomic32_fetch_add@Base 4.9 + __tsan_atomic32_fetch_and@Base 4.9 + __tsan_atomic32_fetch_nand@Base 4.9 + __tsan_atomic32_fetch_or@Base 4.9 + __tsan_atomic32_fetch_sub@Base 4.9 + __tsan_atomic32_fetch_xor@Base 4.9 + __tsan_atomic32_load@Base 4.9 + __tsan_atomic32_store@Base 4.9 + __tsan_atomic64_compare_exchange_strong@Base 4.9 + __tsan_atomic64_compare_exchange_val@Base 4.9 + __tsan_atomic64_compare_exchange_weak@Base 4.9 + __tsan_atomic64_exchange@Base 4.9 + __tsan_atomic64_fetch_add@Base 4.9 + __tsan_atomic64_fetch_and@Base 4.9 + __tsan_atomic64_fetch_nand@Base 4.9 + __tsan_atomic64_fetch_or@Base 4.9 + __tsan_atomic64_fetch_sub@Base 4.9 + __tsan_atomic64_fetch_xor@Base 4.9 + __tsan_atomic64_load@Base 4.9 + __tsan_atomic64_store@Base 4.9 + __tsan_atomic8_compare_exchange_strong@Base 4.9 + __tsan_atomic8_compare_exchange_val@Base 4.9 + __tsan_atomic8_compare_exchange_weak@Base 4.9 + __tsan_atomic8_exchange@Base 4.9 + __tsan_atomic8_fetch_add@Base 4.9 + __tsan_atomic8_fetch_and@Base 4.9 + __tsan_atomic8_fetch_nand@Base 4.9 + __tsan_atomic8_fetch_or@Base 4.9 + __tsan_atomic8_fetch_sub@Base 4.9 + __tsan_atomic8_fetch_xor@Base 4.9 + __tsan_atomic8_load@Base 4.9 + __tsan_atomic8_store@Base 4.9 + __tsan_atomic_signal_fence@Base 4.9 + __tsan_atomic_thread_fence@Base 4.9 + __tsan_default_options@Base 4.9 + __tsan_default_suppressions@Base 7 + __tsan_func_entry@Base 4.9 + __tsan_func_exit@Base 4.9 + __tsan_get_current_report@Base 7 + __tsan_get_report_data@Base 7 + __tsan_get_report_loc@Base 7 + __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_init@Base 4.9 + __tsan_java_acquire@Base 6 + __tsan_java_alloc@Base 4.9 + __tsan_java_finalize@Base 5 + __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_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_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 + 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 + 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 + 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 + 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 + 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 + (arch=!arm64)setjmp@Base 4.9 + 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 + 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 + 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 + 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 + (optional)backtrace_uncompress_zdebug@Base 7 --- gcc-7-7.3.0.orig/debian/libubsan0.symbols +++ gcc-7-7.3.0/debian/libubsan0.symbols @@ -0,0 +1,118 @@ +libubsan.so.0 libubsan0 #MINVER# + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.9 + _ZN11__sanitizer7OnPrintEPKc@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_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 + __sanitizer_cov@Base 4.9 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_indir_call16@Base 5 + __sanitizer_cov_init@Base 5 + __sanitizer_cov_module_init@Base 5 + __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_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __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 + __sanitizer_cov_with_check@Base 6 + __sanitizer_get_coverage_guards@Base 6 + __sanitizer_get_number_of_counters@Base 6 + __sanitizer_get_total_unique_caller_callee_pairs@Base 6 + __sanitizer_get_total_unique_coverage@Base 6 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_maybe_open_cov_file@Base 5 + __sanitizer_report_error_summary@Base 4.9 + __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_update_counter_bitset_and_clear_counters@Base 6 + __ubsan_handle_add_overflow@Base 4.9 + __ubsan_handle_add_overflow_abort@Base 4.9 + __ubsan_handle_builtin_unreachable@Base 4.9 + __ubsan_handle_cfi_bad_icall@Base 7 + __ubsan_handle_cfi_bad_icall_abort@Base 7 + __ubsan_handle_cfi_bad_type@Base 7 + __ubsan_handle_cfi_bad_type_abort@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_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@Base 5 + __ubsan_handle_nonnull_return_abort@Base 5 + __ubsan_handle_out_of_bounds@Base 4.9 + __ubsan_handle_out_of_bounds_abort@Base 4.9 + __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@Base 4.9 + __ubsan_handle_type_mismatch_abort@Base 4.9 + __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 + (optional)backtrace_uncompress_zdebug@Base 7 --- gcc-7-7.3.0.orig/debian/libvtv0.symbols +++ gcc-7-7.3.0/debian/libvtv0.symbols @@ -0,0 +1,68 @@ +libvtv.so.0 libvtv0 #MINVER# + _Z10__vtv_freePv@Base 4.9.0 + (arch=amd64)_Z12__vtv_mallocm@Base 4.9.0 + (arch=i386)_Z12__vtv_mallocj@Base 4.9.0 + _Z14__VLTDumpStatsv@Base 4.9.0 + _Z14__vtv_open_logPKc@Base 4.9.0 + (arch=amd64)_Z16__VLTRegisterSetPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z16__VLTRegisterSetPPvPKvjjS0_@Base 4.9.0 + _Z16__vtv_add_to_logiPKcz@Base 4.9.0 + (arch=amd64)_Z17__VLTRegisterPairPPvPKvmS2_@Base 4.9.0 + (arch=i386)_Z17__VLTRegisterPairPPvPKvjS2_@Base 4.9.0 + _Z17__vtv_malloc_initv@Base 4.9.0 + _Z17__vtv_really_failPKc@Base 4.9.0 + _Z17__vtv_verify_failPPvPKv@Base 4.9.0 + _Z18__vtv_malloc_statsv@Base 4.9.0 + _Z20__vtv_malloc_protectv@Base 4.9.0 + (arch=amd64)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@Base 4.9.0 + (arch=amd64)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@Base 4.9.0 + (arch=i386)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@Base 4.9.0 + _Z22__vtv_malloc_unprotectv@Base 4.9.0 + _Z23__vtv_malloc_dump_statsv@Base 4.9.0 + _Z23__vtv_verify_fail_debugPPvPKvPKc@Base 4.9.0 + (arch=amd64)_Z23search_cached_file_datam@Base 4.9.0 + (arch=i386)_Z23search_cached_file_dataj@Base 4.9.0 + _Z24__VLTVerifyVtablePointerPPvPKv@Base 4.9.0 + _Z25__vtv_count_mmapped_pagesv@Base 4.9.0 + _Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@Base 4.9.0 + _Z30__vtv_log_verification_failurePKcb@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEm@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEm@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEj@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEj@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + __VLTChangePermission@Base 4.9.0 + __VLTprotect@Base 4.9.0 + __VLTunprotect@Base 4.9.0 + _vtable_map_vars_end@Base 4.9.0 + _vtable_map_vars_start@Base 4.9.0 + mprotect_cycles@Base 4.9.0 + num_cache_entries@Base 4.9.0 + num_calls_to_mprotect@Base 4.9.0 + num_calls_to_regpair@Base 4.9.0 + num_calls_to_regset@Base 4.9.0 + num_calls_to_verify_vtable@Base 4.9.0 + num_pages_protected@Base 4.9.0 + regpair_cycles@Base 4.9.0 + regset_cycles@Base 4.9.0 + verify_vtable_cycles@Base 4.9.0 --- gcc-7-7.3.0.orig/debian/libx32asan4.overrides +++ gcc-7-7.3.0/debian/libx32asan4.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +libx32asan4 binary: binary-or-shlib-defines-rpath --- gcc-7-7.3.0.orig/debian/libx32asan4.symbols +++ gcc-7-7.3.0/debian/libx32asan4.symbols @@ -0,0 +1,5 @@ +libasan.so.4 libx32asan4 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.32" +#include "libasan.symbols.16" + internal_sigreturn@Base 7.2 --- gcc-7-7.3.0.orig/debian/libx32gphobos71.lintian-overrides +++ gcc-7-7.3.0/debian/libx32gphobos71.lintian-overrides @@ -0,0 +1,2 @@ +# no multilib zlib for x32 +libx32gphobos71 binary: embedded-library --- gcc-7-7.3.0.orig/debian/libx32stdc++6.symbols +++ gcc-7-7.3.0/debian/libx32stdc++6.symbols @@ -0,0 +1,27 @@ +libstdc++.so.6 libx32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 + _ZTIPKn@CXXABI_1.3.5 4.9.0 + _ZTIPKo@CXXABI_1.3.5 4.9.0 + _ZTIPn@CXXABI_1.3.5 4.9.0 + _ZTIPo@CXXABI_1.3.5 4.9.0 + _ZTIn@CXXABI_1.3.5 4.9.0 + _ZTIo@CXXABI_1.3.5 4.9.0 + _ZTSPKn@CXXABI_1.3.9 4.9.0 + _ZTSPKo@CXXABI_1.3.9 4.9.0 + _ZTSPn@CXXABI_1.3.9 4.9.0 + _ZTSPo@CXXABI_1.3.9 4.9.0 + _ZTSn@CXXABI_1.3.9 4.9.0 + _ZTSo@CXXABI_1.3.9 4.9.0 --- gcc-7-7.3.0.orig/debian/locale-gen +++ gcc-7-7.3.0/debian/locale-gen @@ -0,0 +1,50 @@ +#!/bin/sh + +# generate locales that the libstdc++ testsuite depends on + +LOCPATH=`pwd`/locales +export LOCPATH + +[ -d $LOCPATH ] || mkdir -p $LOCPATH + +[ -n "$USE_CPUS" ] || USE_CPUS=1 + +umask 022 + +echo "Generating locales..." +xargs -L 1 -P $USE_CPUS -I{} \ + sh -c ' + set {}; locale=$1; charset=$2 + case $locale in \#*) exit;; esac + [ -n "$locale" -a -n "$charset" ] || exit + echo " `echo $locale | sed \"s/\([^.\@]*\).*/\1/\"`.$charset`echo $locale | sed \"s/\([^\@]*\)\(\@.*\)*/\2/\"`..." + if [ -f $LOCPATH/$locale ]; then + input=$locale + else + input=`echo $locale | sed "s/\([^.]*\)[^@]*\(.*\)/\1\2/"` + fi + localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias + ' <&2 "usage: `basename $0` [-p ] [-t ] [-m ]" + echo >&2 " [ ...]" + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -t) + timeout=$2 + shift + shift + ;; + -m) + message="$2" + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -gt 0 ] || usage + +logfile="$1" +shift +otherlogs="$@" + +cleanup() +{ + rm -f $pidfile + exit 0 +} + +#trap cleanup 0 1 3 15 + +echo $$ > $pidfile + +update() +{ + _logvar=$1 + _othervar=$2 + + # logfile may not exist yet + if [ -r $logfile ]; then + _logtail="`tail -10 $logfile | md5sum` $f" + else + _logtail="does not exist: $logfile" + fi + eval $_logvar="'$_logtail'" + + _othertails='' + for f in $otherlogs; do + if [ -r $f ]; then + _othertails="$_othertails `tail -10 $f | md5sum` $f" + else + _othertails="$_othertails does not exist: $f" + fi + done + eval $_othervar="'$_othertails'" +} + +update logtail othertails +while true; do + sleep $timeout + update newlogtail newothertails + if [ "$logtail" != "$newlogtail" ]; then + # there is still action in the primary logfile. do nothing. + logtail="$newlogtail" + elif [ "$othertails" != "$newothertails" ]; then + # there is still action in the other log files, so print the message + /bin/echo -e $message + othertails="$newothertails" + else + # nothing changed in the other log files. maybe a timeout ... + : + fi +done --- gcc-7-7.3.0.orig/debian/patches/aarch64-simd-fnma-fix.diff +++ gcc-7-7.3.0/debian/patches/aarch64-simd-fnma-fix.diff @@ -0,0 +1,17 @@ +# DP: aarch64-simd: Avoid emitting dup insn by using canonical form for fnma. + +diff -urpN a/src/gcc/config/aarch64/aarch64-simd.md b/src/gcc/config/aarch64/aarch64-simd.md +--- a/src/gcc/config/aarch64/aarch64-simd.md 2018-01-08 19:07:26.207492599 -0500 ++++ b/src/gcc/config/aarch64/aarch64-simd.md 2018-01-08 19:22:47.451259371 -0500 +@@ -1711,9 +1711,8 @@ + (define_insn "fnma4" + [(set (match_operand:VHSDF 0 "register_operand" "=w") + (fma:VHSDF +- (match_operand:VHSDF 1 "register_operand" "w") +- (neg:VHSDF +- (match_operand:VHSDF 2 "register_operand" "w")) ++ (neg:VHSDF (match_operand:VHSDF 1 "register_operand" "w")) ++ (match_operand:VHSDF 2 "register_operand" "w") + (match_operand:VHSDF 3 "register_operand" "0")))] + "TARGET_SIMD" + "fmls\\t%0., %1., %2." --- gcc-7-7.3.0.orig/debian/patches/ada-749574.diff +++ gcc-7-7.3.0/debian/patches/ada-749574.diff @@ -0,0 +1,116 @@ +From: Ludovic Brenta +From: Nicolas Boulenguez +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81087 +Bug-Debian: http://bugs.debian.org/749574 +Description: array index out of range in gnatlink + The procedure gnatlink assumes that the Linker_Options.Table contains access + values to strings whose 'First index is always 1. This assumption is wrong + for the string returned by function Base_Name. + . + The wrong indices are not detected because gnatlink is compiled with + -gnatp, but the test result is wrong. + . + The following program normally raises Constraint_Error, prints FALSE + if compiled with -gnatn, while the expected result is TRUE. + . + procedure A is + G : constant String (3 .. 5) := "abc"; + begin + Ada.Text_IO.Put_Line (Boolean'Image (G (1 .. 2) = "ab")); + end A; + +Index: b/src/gcc/ada/gnatlink.adb +=================================================================== +--- a/src/gcc/ada/gnatlink.adb ++++ b/src/gcc/ada/gnatlink.adb +@@ -239,6 +239,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 -- + --------------- +@@ -525,7 +528,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; +@@ -538,7 +541,7 @@ procedure Gnatlink is + ("Could not locate linker: " & Arg (8 .. Arg'Last)); + end if; + +- elsif Arg'Length > 6 and then Arg (1 .. 6) = "--GCC=" then ++ elsif Starts_With (Arg, "--GCC=") then + declare + Program_Args : constant Argument_List_Access := + Argument_String_To_List +@@ -1259,13 +1262,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: +@@ -1382,6 +1381,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 -- + ----------- +@@ -1896,8 +1906,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) := +@@ -1928,13 +1938,9 @@ begin + -- Here we just check for a canonical form that matches the + -- pragma Linker_Options set in the NT runtime. + +- if (Linker_Options.Table (J)'Length > 17 +- and then Linker_Options.Table (J) (1 .. 17) = +- "-Xlinker --stack=") +- or else +- (Linker_Options.Table (J)'Length > 12 +- and then Linker_Options.Table (J) (1 .. 12) = +- "-Wl,--stack=") ++ if Starts_With (Linker_Options.Table (J).all, "-Xlinker --stack=") ++ or else Starts_With (Linker_Options.Table (J).all, ++ "-Wl,--stack=") + then + if Stack_Op then + Linker_Options.Table (J .. Linker_Options.Last - 1) := --- gcc-7-7.3.0.orig/debian/patches/ada-acats.diff +++ gcc-7-7.3.0/debian/patches/ada-acats.diff @@ -0,0 +1,13 @@ +# DP: remove blanks from target_bit, see https://bugs.debian.org/814978 + +--- a/src/gcc/testsuite/ada/acats/run_all.sh ++++ b/src/gcc/testsuite/ada/acats/run_all.sh +@@ -130,7 +130,7 @@ + exit 1 + fi + target_run $dir/support/impbit > $dir/support/impbit.out 2>&1 +-target_bit=`cat $dir/support/impbit.out` ++target_bit=`sed -e 's/[ \r]//g' $dir/support/impbit.out` + echo target_bit="$target_bit" >> $dir/acats.log + + # Find out a suitable asm statement --- gcc-7-7.3.0.orig/debian/patches/ada-arm.diff +++ gcc-7-7.3.0/debian/patches/ada-arm.diff @@ -0,0 +1,18 @@ +DP: Improve support for ZCX on arm. + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1953,7 +1953,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 = \ --- gcc-7-7.3.0.orig/debian/patches/ada-armel-libatomic.diff +++ gcc-7-7.3.0/debian/patches/ada-armel-libatomic.diff @@ -0,0 +1,37 @@ +Description: link libgnat with libatomic on armel + On other architectures, the link step does not change because we link + with --as-needed (ada-link-lib.diff). + . + Libatomic becomes an artificial dependency for Ada in Makefile.def, + so a better solution is welcome. + . + Please read ada-changes-in-autogen-output.diff about src/Makefile.def. +Bug-Debian: https://bugs.debian.org/861734 +Author: Matthias Klose +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 +@@ -1938,6 +1938,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}" \ +@@ -49967,26 +50452,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}" \ +@@ -49994,26 +50479,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}" \ +@@ -50021,26 +50506,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}" \ +@@ -50048,25 +50533,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}" \ +@@ -50074,24 +50559,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}" \ +@@ -50099,24 +50584,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}" \ +@@ -50124,24 +50609,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}" \ +@@ -50149,24 +50634,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}" \ +@@ -50174,7 +50659,7 @@ maintainer-clean-target-libada: + maintainer-clean) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + + + +@@ -55242,6 +55727,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 +@@ -55278,6 +55765,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 +@@ -55733,8 +56222,12 @@ all-stageprofile-fixincludes: maybe-all- + 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-lto-plugin: maybe-all-libiberty + + all-stage1-lto-plugin: maybe-all-stage1-libiberty +@@ -56434,6 +56927,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 +@@ -56486,6 +56981,10 @@ configure-target-rda: maybe-all-target-n + + configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss ++ ++configure-target-libada-sjlj: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss --- gcc-7-7.3.0.orig/debian/patches/ada-drop-termio-h.diff +++ gcc-7-7.3.0/debian/patches/ada-drop-termio-h.diff @@ -0,0 +1,40 @@ +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 + +--- a/src/gcc/ada/terminals.c ++++ b/src/gcc/ada/terminals.c +@@ -1060,14 +1060,6 @@ + #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__) +-# include +-#endif +- + #include + #include + #include +@@ -1083,7 +1075,6 @@ + # include + #endif + #if defined (__hpux__) +-# include + # include + #endif + --- gcc-7-7.3.0.orig/debian/patches/ada-gcc-name.diff +++ gcc-7-7.3.0/debian/patches/ada-gcc-name.diff @@ -0,0 +1,295 @@ +Description: always call gcc with an explicit target and version + Many problems have been caused by the fact that tools like gnatmake + call other tools like gcc without an explicit target or version. + . + In order to solve this issue for all similar tools at once, AdaCore + has created the Osint.Program_Name function. When gnatmake launches a + gcc subprocess, this function computes the name of the right gcc + executable. This patch improves the function in four ways. + . + The previous algorithm wrongly tests "End_Of_Prefix > 1", + which may happen even if a match has been found. + This part will most probably be of interest for upstream. + . + Update the gnatchop tool to use this function. + This part will most probably be of interest for upstream. + . + Check that the target and version in the gnatmake program name, if + present, match the static constants inside the gnatmake program + itself. Also, knowing the length of the only allowed prefix and suffix + slightly improves performance by avoiding loops. + This part will most probably be of interest for upstream. + . + In Debian, gcc/gcc-version/target-gcc are symbolic links to the + target-gcc-version executable. The same holds for gnatmake, but the + target and version may differ. So "target-gcc-version" is the right + answer. It helps log checkers and humans debuggers, even if gnatmake + was invoked via a shortcut intended for human typers. + This part will probably be hard to merge for upstream, as some + distributions provide no "target-gcc-version". + . + Log for bug 903694 carries regression tests for both bugs. +Bug-Debian: https://bugs.debian.org/814977 +Bug-Debian: https://bugs.debian.org/814978 +Bug-Debian: https://bugs.debian.org/856274 +Bug-Debian: https://bugs.debian.org/881938 +Bug-Debian: https://bugs.debian.org/903694 +Author: Ludovic Brenta +Author: Nicolas Boulenguez +Author: Svante Signell +Author: YunQiang Su + +--- a/src/gcc/ada/osint.ads ++++ b/src/gcc/ada/osint.ads +@@ -137,16 +137,10 @@ + -- path) in Name_Buffer, with the length in Name_Len. + + function Program_Name (Nam : String; Prog : String) return String_Access; +- -- In the native compilation case, Create a string containing Nam. In the +- -- cross compilation case, looks at the prefix of the current program being +- -- run and prepend it to Nam. For instance if the program being run is +- -- -gnatmake and Nam is "gcc", the returned value will be a pointer +- -- to "-gcc". In the specific case where AAMP_On_Target is set, the +- -- name "gcc" is mapped to "gnaamp", and names of the form "gnat*" are +- -- mapped to "gnaamp*". This function clobbers Name_Buffer and Name_Len. +- -- Also look at any suffix, e.g. gnatmake-4.1 -> "gcc-4.1". Prog is the +- -- default name of the current program being executed, e.g. "gnatmake", +- -- "gnatlink". ++ -- On Debian, always create a string containing ++ -- Sdefault.Target_Name & '-' & Nam & '-' & Gnatvsn.Library_Version. ++ -- Fail if the program base name differs from Prog, ++ -- maybe extended with the same prefix or suffix. + + procedure Write_Program_Name; + -- Writes name of program as invoked to the current output (normally +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -2205,51 +2205,52 @@ + ------------------ + + 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 Name_Buffer (Name_Len) /= ':' ++ and then Name_Buffer (Name_Len) /= Directory_Separator ++ then ++ Fail ("Osint.Program_Name: must start with " & Prog ++ & " or " & Prefix.all & Prog); ++ end if; + +- return new String' +- (Name_Buffer (Start_Of_Prefix .. End_Of_Prefix) +- & Nam +- & Name_Buffer (Start_Of_Suffix .. Name_Len)); ++ Result := new String'(Prefix.all & Nam & Suffix); ++ Types.Free (Prefix); ++ return Result; + end Program_Name; + + ------------------------------ +--- a/src/gcc/ada/gnatchop.adb ++++ b/src/gcc/ada/gnatchop.adb +@@ -36,6 +36,7 @@ + with GNAT.Heap_Sort_G; + with GNAT.Table; + ++with Osint; + with Switch; use Switch; + with Types; + +@@ -44,12 +45,9 @@ + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := null; + -- May be modified by switch --GCC= + +- Gcc_Set : Boolean := False; +- -- True if a switch --GCC= is used +- + Gnat_Cmd : String_Access; + -- Command to execute the GNAT compiler + +@@ -222,12 +220,6 @@ + Integer'Image + (Maximum_File_Name_Length); + +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access; +- -- Locate executable for given program name. This takes into account +- -- the target-prefix of the current command, if Look_For_Prefix is True. +- + subtype EOL_Length is Natural range 0 .. 2; + -- Possible lengths of end of line sequence + +@@ -492,76 +484,6 @@ + Unit.Table (Sorted_Units.Table (U + 1)).File_Name.all; + end Is_Duplicated; + +- ----------------------- +- -- Locate_Executable -- +- ----------------------- +- +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access +- is +- Gnatchop_Str : constant String := "gnatchop"; +- Current_Command : constant String := Normalize_Pathname (Command_Name); +- End_Of_Prefix : Natural; +- Start_Of_Prefix : Positive; +- Start_Of_Suffix : Positive; +- Result : String_Access; +- +- begin +- Start_Of_Prefix := Current_Command'First; +- Start_Of_Suffix := Current_Command'Last + 1; +- End_Of_Prefix := Start_Of_Prefix - 1; +- +- if Look_For_Prefix then +- +- -- Find Start_Of_Prefix +- +- for J in reverse Current_Command'Range loop +- if Current_Command (J) = '/' or else +- Current_Command (J) = Directory_Separator or else +- Current_Command (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. +- Current_Command'Last - Gnatchop_Str'Length + 1 +- loop +- if Current_Command (J .. J + Gnatchop_Str'Length - 1) = +- Gnatchop_Str +- then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; +- end if; +- +- if End_Of_Prefix > Current_Command'First then +- Start_Of_Suffix := End_Of_Prefix + Gnatchop_Str'Length + 1; +- end if; +- +- declare +- Command : constant String := +- Current_Command (Start_Of_Prefix .. End_Of_Prefix) +- & Program_Name +- & Current_Command (Start_Of_Suffix .. +- Current_Command'Last); +- begin +- Result := Locate_Exec_On_Path (Command); +- +- if Result = null then +- Error_Msg +- (Command & ": installation problem, executable not found"); +- end if; +- end; +- +- return Result; +- end Locate_Executable; +- + --------------- + -- Parse_EOL -- + --------------- +@@ -1088,8 +1010,8 @@ + exit; + + when '-' => +- Gcc := new String'(Parameter); +- Gcc_Set := True; ++ Free (Gcc); ++ Gcc := new String'(Parameter); + + when 'c' => + Compilation_Mode := True; +@@ -1767,9 +1689,13 @@ + + -- Check presence of required executables + +- Gnat_Cmd := Locate_Executable (Gcc.all, not Gcc_Set); ++ if Gcc = null then ++ Gcc := Osint.Program_Name ("gcc", "gnatchop"); ++ end if; ++ Gnat_Cmd := Locate_Exec_On_Path (Gcc.all); + + if Gnat_Cmd = null then ++ Error_Msg (Gcc.all & ": installation problem, executable not found"); + goto No_Files_Written; + end if; + --- gcc-7-7.3.0.orig/debian/patches/ada-gnattools-cross.diff +++ gcc-7-7.3.0/debian/patches/ada-gnattools-cross.diff @@ -0,0 +1,274 @@ +* 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. + +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 +@@ -1637,6 +1637,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 = \ +@@ -2640,6 +2645,20 @@ gnatlink-re: ../stamp-tools gnatmake-re + --GCC="$(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="$(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 +@@ -2689,14 +2708,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); \ +@@ -2721,8 +2736,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 +@@ -2786,7 +2800,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) \ +@@ -2820,36 +2834,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) +@@ -2860,6 +2889,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) \ +@@ -2868,21 +2899,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) \ +@@ -2892,17 +2917,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 +Index: b/src/gnattools/Makefile.in +=================================================================== +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -76,15 +76,21 @@ CXX_LFLAGS = \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + + # Variables for gnattools, native ++rtsdir := $(abspath ../gcc/ada/rts) ++vsndir := $(abspath ../$(target_noncanonical)/libgnatvsn) + TOOLS_FLAGS_TO_PASS_NATIVE= \ + "CC=../../xgcc -B../../" \ + "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--as-needed -Wl,-z,defs" \ ++ "ADAFLAGS=$(ADAFLAGS) -gnatn" \ + "ADA_CFLAGS=$(ADA_CFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ +- "ADA_INCLUDES=-I- -I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ ++ "ADA_INCLUDES=-I- -nostdinc -I$(vsndir) -I$(rtsdir) $(ADA_INCLUDES_FOR_SUBDIR)" \ ++ "TOOLS_ALREADY_COMPILED=$(foreach d, $(vsndir) $(rtsdir), \ ++ $(patsubst $(d)/%.ali,%.o, $(wildcard $(d)/*.ali)))" \ ++ 'LIBGNAT=-L$(vsndir) -lgnatvsn -L$(rtsdir) -lgnat-$$(LIB_VERSION)' \ ++ "GNATBIND_FLAGS=-nostdlib -x" \ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ +@@ -190,6 +196,10 @@ $(GCC_DIR)/stamp-tools: + # to be able to build gnatmake without a version of gnatmake around. Once + # everything has been compiled once, gnatmake can be recompiled with itself + # (see target regnattools) ++gnattools-native: export LD_LIBRARY_PATH := \ ++ $(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(vsndir):$(rtsdir) ++# Useful even for 1st pass, as ../../gnatmake may already be ++# dynamically linked in case this target has already been invokated. + gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts + # gnattools1 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +@@ -198,6 +208,13 @@ gnattools-native: $(GCC_DIR)/stamp-tools + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools ++# The hard-coded object lists for gnatbind/make/link contain unneeded ++# objects. Use the fresh tools to recompute dependencies. ++# A separate Make run avoids race conditions between gnatmakes ++# building the same object for common-tools and gnat*-re. ++# (parallelism is already forbidden between gnat*-re targets) ++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ ++ $(TOOLS_FLAGS_TO_PASS_NATIVE) gnatbind-re gnatmake-re gnatlink-re + + # gnatmake/link can be built with recent gnatmake/link if they are available. + # This is especially convenient for building cross tools or for rebuilding --- gcc-7-7.3.0.orig/debian/patches/ada-kfreebsd.diff +++ gcc-7-7.3.0/debian/patches/ada-kfreebsd.diff @@ -0,0 +1,100 @@ +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 + +--- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads ++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads +@@ -45,6 +45,7 @@ + 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 @@ + 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 @@ + 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 @@ + 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; +--- 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 +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1441,7 +1441,7 @@ + CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU clock") + + #if defined(__FreeBSD__) || (defined(_AIX) && defined(_AIXVERSION_530)) \ +- || defined(__DragonFly__) ++ || defined(__DragonFly__) || defined(__FreeBSD_kernel__) + /** On these platforms use system provided monotonic clock instead of + ** the default CLOCK_REALTIME. We then need to set up cond var attributes + ** appropriately (see thread.c). --- gcc-7-7.3.0.orig/debian/patches/ada-lib-info-source-date-epoch.diff +++ gcc-7-7.3.0/debian/patches/ada-lib-info-source-date-epoch.diff @@ -0,0 +1,144 @@ +Description: set ALI timestamps from SOURCE_DATE_EPOCH if available. + When the SOURCE_DATE_EPOCH environment variable is set, + replace timestamps more recent than its value with its value + when writing Ada Library Information (ALI) files. + This allow reproducible builds from generated or patched Ada sources. + https://reproducible-builds.org/specs/source-date-epoch/ +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/ali-util.adb ++++ b/src/gcc/ada/ali-util.adb +@@ -484,8 +484,10 @@ + 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 +@@ -1471,7 +1471,14 @@ + + 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 +@@ -1674,6 +1674,20 @@ + + 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 +@@ -685,6 +685,17 @@ + function Prep_Suffix return String; + -- The suffix used for pre-processed 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/s-os_lib.adb ++++ b/src/gcc/ada/s-os_lib.adb +@@ -1153,6 +1153,41 @@ + 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/s-os_lib.ads ++++ b/src/gcc/ada/s-os_lib.ads +@@ -164,6 +164,13 @@ + -- component parts to be interpreted in the local time zone, and returns + -- an OS_Time. Returns Invalid_Time if the creation fails. + ++ procedure Get_OS_Time_From_String (Arg : String; ++ Success : out Boolean; ++ Result : out OS_Time); ++ -- Success is set if Arg is not empty, only contains decimal ++ -- digits and represents an integer within OS_Time range. Result ++ -- is then affected with the represented value. ++ + ---------------- + -- File Stuff -- + ---------------- --- gcc-7-7.3.0.orig/debian/patches/ada-libgnatvsn.diff +++ gcc-7-7.3.0/debian/patches/ada-libgnatvsn.diff @@ -0,0 +1,297 @@ +# 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 +@@ -187,6 +187,16 @@ + 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; }; +@@ -385,6 +395,8 @@ + 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 +@@ -171,6 +171,7 @@ + target-libobjc \ + target-libada \ + ${target_libiberty} \ ++ target-libgnatvsn \ + target-libgo" + + # these tools are built using the target libraries, and are intended to +@@ -455,7 +456,7 @@ + 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 @@ + + 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 @@ + 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 --- gcc-7-7.3.0.orig/debian/patches/ada-library-project-files-soname.diff +++ gcc-7-7.3.0/debian/patches/ada-library-project-files-soname.diff @@ -0,0 +1,88 @@ +Description: when linking an Ada shared library, avoid modifying user soname + In project files, use the exact Library_Version provided, if any, as + the soname of libraries; do not strip minor version numbers + . + GNAT has been announcing the removal of support for GPR projects + since gcc-6. + Gnatlink will then stop being able to link shared libraries. + This probably explains why upstream is not interested in this patch. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40025 +Author: Ludovic Brenta + +Index: b/src/gcc/ada/mlib-tgt-specific-linux.adb +=================================================================== +--- a/src/gcc/ada/mlib-tgt-specific-linux.adb ++++ b/src/gcc/ada/mlib-tgt-specific-linux.adb +@@ -50,6 +50,8 @@ package body MLib.Tgt.Specific is + + function Is_Archive_Ext (Ext : String) return Boolean; + ++ function Library_Major_Minor_Id_Supported return Boolean; ++ + --------------------------- + -- Build_Dynamic_Library -- + --------------------------- +@@ -142,7 +144,18 @@ package body MLib.Tgt.Specific is + return Ext = ".a" or else Ext = ".so"; + end Is_Archive_Ext; + ++ -------------------------------------- ++ -- Library_Major_Minor_Id_Supported -- ++ -------------------------------------- ++ ++ function Library_Major_Minor_Id_Supported return Boolean is ++ begin ++ return False; ++ end Library_Major_Minor_Id_Supported; ++ + begin + Build_Dynamic_Library_Ptr := Build_Dynamic_Library'Access; + Is_Archive_Ext_Ptr := Is_Archive_Ext'Access; ++ Library_Major_Minor_Id_Supported_Ptr := ++ Library_Major_Minor_Id_Supported'Access; + end MLib.Tgt.Specific; +Index: b/src/gcc/ada/mlib.adb +=================================================================== +--- a/src/gcc/ada/mlib.adb ++++ b/src/gcc/ada/mlib.adb +@@ -30,6 +30,7 @@ with System; + with Opt; + with Output; use Output; + ++with MLib.Tgt; + with MLib.Utl; use MLib.Utl; + + with Prj.Com; +@@ -393,7 +394,11 @@ package body MLib is + -- Major_Id_Name -- + ------------------- + +- function Major_Id_Name ++ function Major_Id_Name_If_Supported ++ (Lib_Filename : String; ++ Lib_Version : String) ++ return String; ++ function Major_Id_Name_If_Supported + (Lib_Filename : String; + Lib_Version : String) + return String +@@ -447,6 +452,19 @@ package body MLib is + else + return ""; + end if; ++ end Major_Id_Name_If_Supported; ++ ++ function Major_Id_Name ++ (Lib_Filename : String; ++ Lib_Version : String) ++ return String ++ is ++ begin ++ if MLib.Tgt.Library_Major_Minor_Id_Supported then ++ return Major_Id_Name_If_Supported (Lib_Filename, Lib_Version); ++ else ++ return ""; ++ end if; + end Major_Id_Name; + + ------------------------------- --- gcc-7-7.3.0.orig/debian/patches/ada-link-lib.diff +++ gcc-7-7.3.0/debian/patches/ada-link-lib.diff @@ -0,0 +1,161 @@ +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 @@ + 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 +@@ -106,9 +106,9 @@ + #elif defined (__FreeBSD__) || defined (__DragonFly__) \ + || defined (__NetBSD__) || defined (__OpenBSD__) + 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"; +@@ -128,9 +128,9 @@ + + #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 @@ + # 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 @@ + 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@'; }; +@@ -168,7 +177,16 @@ + 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; }; +@@ -364,6 +382,7 @@ + + 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 @@ + # 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. +@@ -165,6 +170,7 @@ + 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 @@ + + + # Extra flags to pass to recursive makes. +-COMMON_ADAFLAGS= -gnatpg ++COMMON_ADAFLAGS= -gnatpgn + ifeq ($(TREECHECKING),) + CHECKING_ADAFLAGS= + else +@@ -211,7 +211,7 @@ + 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) --- gcc-7-7.3.0.orig/debian/patches/ada-link-shlib.diff +++ gcc-7-7.3.0/debian/patches/ada-link-shlib.diff @@ -0,0 +1,97 @@ +Description: when linking Ada shared libraries, list dependencies after objects + In gnatlink, pass the options and libraries after objects to the + linker to avoid link failures with --as-needed. + This option is activated by default on the GNU gold linker. + . + GNAT has been announcing the removal of support for GPR projects + since gcc-6. + Gnatlink will then stop being able to link shared libraries. + This probably explains why upstream is not interested in this patch. +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680292 +Author: Matthias Klose +Forwarded: http://gcc.gnu.org/ml/gcc-patches/2013-04/msg01132.html + +--- a/src/gcc/ada/mlib-tgt-specific-linux.adb ++++ b/src/gcc/ada/mlib-tgt-specific-linux.adb +@@ -81,19 +81,54 @@ + Version_Arg : String_Access; + Symbolic_Link_Needed : Boolean := False; + ++ N_Options : Argument_List := Options; ++ Options_Last : Natural := N_Options'Last; ++ -- After moving -lxxx to Options_2, N_Options up to index Options_Last ++ -- will contain the Options to pass to MLib.Utl.Gcc. ++ ++ Real_Options_2 : Argument_List (1 .. Options'Length); ++ Real_Options_2_Last : Natural := 0; ++ -- Real_Options_2 up to index Real_Options_2_Last will contain the ++ -- Options_2 to pass to MLib.Utl.Gcc. ++ + begin + if Opt.Verbose_Mode then + Write_Str ("building relocatable shared library "); + Write_Line (Lib_Path); + end if; + ++ -- Move all -lxxx to Options_2 ++ ++ declare ++ Index : Natural := N_Options'First; ++ Arg : String_Access; ++ ++ begin ++ while Index <= Options_Last loop ++ Arg := N_Options (Index); ++ ++ if Arg'Length > 2 ++ and then Arg (Arg'First .. Arg'First + 1) = "-l" ++ then ++ Real_Options_2_Last := Real_Options_2_Last + 1; ++ Real_Options_2 (Real_Options_2_Last) := Arg; ++ N_Options (Index .. Options_Last - 1) := ++ N_Options (Index + 1 .. Options_Last); ++ Options_Last := Options_Last - 1; ++ ++ else ++ Index := Index + 1; ++ end if; ++ end loop; ++ end; ++ + if Lib_Version = "" then + Utl.Gcc + (Output_File => Lib_Path, + Objects => Ofiles, +- Options => Options, ++ Options => N_Options (N_Options'First .. Options_Last), + Driver_Name => Driver_Name, +- Options_2 => No_Argument_List); ++ Options_2 => Real_Options_2 (1 .. Real_Options_2_Last)); + + else + declare +@@ -111,18 +146,20 @@ + Utl.Gcc + (Output_File => Lib_Version, + Objects => Ofiles, +- Options => Options & Version_Arg, ++ Options => N_Options (N_Options'First .. Options_Last) ++ & Version_Arg, + Driver_Name => Driver_Name, +- Options_2 => No_Argument_List); ++ Options_2 => Real_Options_2 (1 .. Real_Options_2_Last)); + Symbolic_Link_Needed := Lib_Version /= Lib_Path; + + else + Utl.Gcc + (Output_File => Lib_Dir & Directory_Separator & Lib_Version, + Objects => Ofiles, +- Options => Options & Version_Arg, ++ Options => N_Options (N_Options'First .. Options_Last) ++ & Version_Arg, + Driver_Name => Driver_Name, +- Options_2 => No_Argument_List); ++ Options_2 => Real_Options_2 (1 .. Real_Options_2_Last)); + Symbolic_Link_Needed := + Lib_Dir & Directory_Separator & Lib_Version /= Lib_Path; + end if; --- gcc-7-7.3.0.orig/debian/patches/ada-nobiarch-check.diff +++ gcc-7-7.3.0/debian/patches/ada-nobiarch-check.diff @@ -0,0 +1,21 @@ +Description: For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). +Author: Matthias Klose + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4510,7 +4510,11 @@ + if [ -f $${rootme}/../expect/expect ] ; then \ + TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ + export TCL_LIBRARY ; fi ; \ +- $(RUNTEST) --tool $* $(RUNTESTFLAGS)) ++ if [ "$*" = gnat ]; then \ ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed -r 's/,-m(32|64|x32)//g;s/,-mabi=(n32|64)//g'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ ++ fi; \ ++ $(RUNTEST) --tool $* $$runtestflags) + + $(patsubst %,%-subtargets,$(filter-out $(lang_checks_parallelized),$(lang_checks))): check-%-subtargets: + @echo check-$* --- gcc-7-7.3.0.orig/debian/patches/ada-sjlj.diff +++ gcc-7-7.3.0/debian/patches/ada-sjlj.diff @@ -0,0 +1,501 @@ +# Please read ada-changes-in-autogen-output.diff about src/Makefile.def. + +# !!! Must be applied after ada-libgnatvsn.diff + +Index: b/src/libada-sjlj/Makefile.in +=================================================================== +--- /dev/null ++++ b/src/libada-sjlj/Makefile.in +@@ -0,0 +1,201 @@ ++# Makefile for libada. ++# Copyright (C) 2003-2015 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) \ ++ -fexceptions -DIN_RTS @have_getipinfo@ ++ ++host_subdir = @host_subdir@ ++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++target_noncanonical:=@target_noncanonical@ ++gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(gcc_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)" \ ++ "LN_S=$(LN_S)" \ ++ "SHELL=$(SHELL)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ ++ "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 $(AM_MAKEFLAGS) $(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/override.m4 \ ++ $(srcdir)/../config/multi.m4 ++ ++$(srcdir)/configure: @MAINT@ $(configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++ ++# Don't export variables to the environment, in order to not confuse ++# configure. ++.NOEXPORT: +Index: b/src/libada-sjlj/configure.ac +=================================================================== +--- /dev/null ++++ b/src/libada-sjlj/configure.ac +@@ -0,0 +1,152 @@ ++# Configure script for libada. ++# Copyright (C) 2003-2016 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 GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ ++# Determine what to build for 'gnatlib' ++if test ${enable_shared} = yes ; then ++ # Note that build=target is almost certainly the wrong test; FIXME ++ 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 ++have_getipinfo= ++if test x$have_unwind_getipinfo = xyes; then ++ have_getipinfo=-DHAVE_GETIPINFO ++fi ++AC_SUBST(have_getipinfo) ++ ++# Output: create a Makefile. ++AC_CONFIG_FILES([Makefile]) ++ ++AC_OUTPUT +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -197,6 +197,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; }; +@@ -393,6 +394,7 @@ dependencies = { module=all-libcpp; on=a + dependencies = { module=all-fixincludes; on=all-libiberty; }; + + dependencies = { module=all-target-libada; on=all-gcc; }; ++dependencies = { module=all-target-libada-sjlj; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + dependencies = { module=all-gnattools; on=all-target-libgnatvsn; }; +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -170,6 +170,7 @@ target_libraries="target-libgcc \ + target-libffi \ + target-libobjc \ + target-libada \ ++ target-libada-sjlj \ + ${target_libiberty} \ + target-libgnatvsn \ + target-libgo" +@@ -456,7 +457,7 @@ AC_ARG_ENABLE(libada, + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs target-libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn gnattools target-libada-sjlj" + fi + + AC_ARG_ENABLE(libssp, +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -190,7 +190,7 @@ TOOLSCASE = + + # Multilib handling + MULTISUBDIR = +-RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) ++RTSDIR := rts$(subst /,_,$(MULTISUBDIR)) + + # Link flags used to build gnat tools. By default we prefer to statically + # link with libgcc to avoid a dependency on shared libgcc (which is tricky +@@ -2724,6 +2724,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) +@@ -3005,7 +3025,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="" RTSDIR="$(RTSDIR)" \ + THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) + sed \ + -e 's/Frontend_Exceptions.*/Frontend_Exceptions : constant Boolean := True;/' \ +@@ -3014,6 +3034,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)" \ +@@ -3065,6 +3086,8 @@ b_gnatm.o : b_gnatm.adb + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude ++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib + + # Special flags + +Index: b/src/gcc/ada/gcc-interface/config-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -34,8 +34,8 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad + + outputs="ada/gcc-interface/Makefile ada/Makefile" + +-target_libs="target-libada target-libgnatvsn" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnatvsn target-libada-sjlj" ++lang_dirs="libada gnattools libada-sjlj" + + # Ada is not enabled by default for the time being. + build_by_default=no +Index: b/src/gcc/ada/gcc-interface/Make-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -788,6 +788,7 @@ ada.install-common: + + install-gnatlib: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET) ++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) RTSDIR="rts-sjlj" install-gnatlib-sjlj$(LIBGNAT_TARGET) + + install-gnatlib-obj: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj --- gcc-7-7.3.0.orig/debian/patches/ada-symbolic-tracebacks.diff +++ gcc-7-7.3.0/debian/patches/ada-symbolic-tracebacks.diff @@ -0,0 +1,401 @@ +# DP: - Enable support for symbolic tracebacks in exceptions (delete the dummy +# DP: convert_addresses from adaint.c, and provide a real one separately.) + +Ported Jürgen Pfeifer's patch to enable symbolic tracebacks on Debian +GNU/Linux. + +The binary distribution of GNAT 3.15p comes with an old version of +binutils that includes a library, libaddr2line.a. This library does +not exist in recent versions of binutils. The patch works around this +by calling /usr/bin/addr2line (still part of binutils) and parsing the +output. See debian/convert_addresses.c for the gory details. + +I have modified convert_addresses.c to not use a shell script anymore; +Debian controls the version of binutils which is installed. Also, I +use execve instead of execle. + +-- +Ludovic Brenta. + +# ' make emacs highlighting happy + +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 +@@ -270,7 +270,8 @@ + # Both . and srcdir are used, in that order, + # so that tm.h and config.h will be found in the compilation + # subdirectory rather than in the source directory. +-INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(ftop_srcdir)/include $(GMPINC) ++INCLUDES = -iquote . -iquote .. -iquote $(srcdir)/ada -iquote $(srcdir) \ ++ -iquote $(ftop_srcdir)/include $(GMPINC) + + ADA_INCLUDES = -I- -I. -I$(srcdir)/ada + +@@ -2426,7 +2427,7 @@ + # library. LIBGNAT_OBJS is the list of object files for libgnat. + # thread.c is special as put into GNATRTL_TASKING_OBJS by Makefile.rtl + LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o \ +- cal.o cio.o cstreams.o ctrl_c.o \ ++ cal.o cio.o convert_addresses.o cstreams.o ctrl_c.o \ + env.o errno.o exit.o expect.o final.o \ + init.o initialize.o locales.o mkdir.o \ + raise.o seh_init.o socket.o sysdep.o \ +@@ -3104,6 +3105,7 @@ + socket.o : socket.c gsocket.h + sysdep.o : sysdep.c + raise.o : raise.c raise.h ++convert_addresses.o : convert_addresses.c + sigtramp-armdroid.o : sigtramp-armdroid.c sigtramp.h + sigtramp-armvxw.o : sigtramp-armvxw.c sigtramp.h + sigtramp-ppcvxw.o : sigtramp-ppcvxw.c sigtramp.h +Index: b/src/gcc/ada/adaint.c +=================================================================== +--- a/src/gcc/ada/adaint.c ++++ b/src/gcc/ada/adaint.c +@@ -3608,35 +3608,6 @@ + } + #endif + +-#if defined (IS_CROSS) \ +- || (! ((defined (sparc) || defined (i386)) && defined (sun) \ +- && defined (__SVR4)) \ +- && ! (defined (linux) && (defined (i386) || defined (__x86_64__))) \ +- && ! (defined (linux) && defined (__ia64__)) \ +- && ! (defined (linux) && defined (powerpc)) \ +- && ! defined (__FreeBSD__) \ +- && ! defined (__Lynx__) \ +- && ! defined (__hpux__) \ +- && ! defined (__APPLE__) \ +- && ! defined (_AIX) \ +- && ! defined (VMS) \ +- && ! defined (__MINGW32__)) +- +-/* Dummy function to satisfy g-trasym.o. See the preprocessor conditional +- just above for a list of native platforms that provide a non-dummy +- version of this procedure in libaddr2line.a. */ +- +-void +-convert_addresses (const char *file_name ATTRIBUTE_UNUSED, +- void *addrs ATTRIBUTE_UNUSED, +- int n_addr ATTRIBUTE_UNUSED, +- void *buf ATTRIBUTE_UNUSED, +- int *len ATTRIBUTE_UNUSED) +-{ +- *len = 0; +-} +-#endif +- + #if defined (_WIN32) + int __gnat_argument_needs_quote = 1; + #else +Index: b/src/gcc/ada/convert_addresses.c +=================================================================== +--- /dev/null ++++ b/src/gcc/ada/convert_addresses.c +@@ -0,0 +1,159 @@ ++/* ++ Copyright (C) 1999 by Juergen Pfeifer ++ Ada for Linux Team (ALT) ++ ++ 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, distribute with modifications, 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 ABOVE 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. ++ ++ Except as contained in this notice, the name(s) of the above copyright ++ holders shall not be used in advertising or otherwise to promote the ++ sale, use or other dealings in this Software without prior written ++ authorization. ++*/ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define STDIN_FILENO 0 ++#define STDOUT_FILENO 1 ++#define MAX_LINE 1024 ++ ++#define CLOSE1 close(fd1[0]); close(fd1[1]) ++#define CLOSE2 close(fd2[0]); close(fd2[1]) ++#define RESTSIG sigaction(SIGPIPE,&oact,NULL) ++ ++void convert_addresses ++(const char const *file_name, ++ void* addrs[], ++ int n_addr, ++ char* buf, ++ int* len) ++{ ++ int max_len = *len; ++ pid_t child; ++ ++ struct sigaction act, oact; ++ ++ int fd1[2], fd2[2]; ++ ++ if (!file_name) { ++ return; ++ } ++ ++ *buf = 0; *len = 0; ++ act.sa_handler = SIG_IGN; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = 0; ++ if (sigaction(SIGPIPE,&act,&oact) < 0) ++ return; ++ ++ if (pipe(fd1) >= 0) { ++ if (pipe(fd2)>=0) { ++ if ((child = fork()) < 0) { ++ CLOSE1; CLOSE2; RESTSIG; ++ return; ++ } ++ else { ++ if (0==child) { ++ close(fd1[1]); ++ close(fd2[0]); ++ if (fd1[0] != STDIN_FILENO) { ++ if (dup2(fd1[0],STDIN_FILENO) != STDIN_FILENO) { ++ CLOSE1; CLOSE2; ++ } ++ close(fd1[0]); ++ } ++ if (fd2[1] != STDOUT_FILENO) { ++ if (dup2(fd2[1],STDOUT_FILENO) != STDOUT_FILENO) { ++ CLOSE1; CLOSE2; ++ } ++ close(fd2[1]); ++ } ++ { ++ /* As pointed out by Florian Weimer to me, it is a ++ security threat to call the script with a user defined ++ environment and using the path. That would be Trojans ++ pleasure. Therefore we use the absolute path to ++ addr2line and an empty environment. That should be ++ safe. ++ */ ++ char *file_name_for_execve = strdup (file_name); /* non-const */ ++ char *const argv[] = { "addr2line", ++ "-e", ++ file_name_for_execve, ++ "--demangle=gnat", ++ "--functions", ++ "--basenames", ++ NULL }; ++ char *const envp[] = { NULL }; ++ if (execve("/usr/bin/addr2line", argv, envp) < 0) { ++ CLOSE1; CLOSE2; ++ } ++ if (file_name_for_execve) { free (file_name_for_execve); } ++ } ++ } ++ else { ++ int i, n; ++ char hex[16]; ++ char line[MAX_LINE + 1]; ++ char *p; ++ char *s = buf; ++ ++ /* Parent context */ ++ close(fd1[0]); ++ close(fd2[1]); ++ ++ for(i=0; i < n_addr; i++) { ++ snprintf(hex,sizeof(hex),"%p\n",addrs[i]); ++ write(fd1[1],hex,strlen(hex)); ++ n = read(fd2[0],line,MAX_LINE); ++ if (n<=0) ++ break; ++ line[n]=0; ++ /* We have approx. 16 additional chars for "%p in " clause. ++ We use this info to prevent a buffer overrun. ++ */ ++ if (n + 16 + (*len) > max_len) ++ break; ++ p = strchr(line,'\n'); ++ if (p) { ++ if (*(p+1)) { ++ *p = 0; ++ *len += snprintf(s, (max_len - (*len)), "%p in %s at %s",addrs[i], line, p+1); ++ } ++ else { ++ *len += snprintf(s, (max_len - (*len)), "%p at %s",addrs[i], line); ++ } ++ s = buf + (*len); ++ } ++ } ++ close(fd1[1]); ++ close(fd2[0]); ++ } ++ } ++ } ++ else { ++ CLOSE1; ++ } ++ } ++ RESTSIG; ++} +Index: b/src/gcc/ada/g-trasym.adb +=================================================================== +--- a/src/gcc/ada/g-trasym.adb ++++ b/src/gcc/ada/g-trasym.adb +@@ -33,40 +33,110 @@ + -- is not supported. It returns tracebacks as lists of LF separated strings of + -- the form "0x..." corresponding to the addresses. + ++with System.Soft_Links; + with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback; +-with System.Address_Image; + + package body GNAT.Traceback.Symbolic is + ++ package TSL renames System.Soft_Links; ++ ++ -- To perform the raw addresses to symbolic form translation we rely on a ++ -- libaddr2line symbolizer which examines debug info from a provided ++ -- executable file name, and an absolute path is needed to ensure the file ++ -- is always found. This is "__gnat_locate_exec_on_path (gnat_argv [0])" ++ -- for our executable file, a fairly heavy operation so we cache the ++ -- result. ++ ++ Exename : System.Address; ++ -- Pointer to the name of the executable file to be used on all ++ -- invocations of the libaddr2line symbolization service. ++ ++ Exename_Resolved : Boolean := False; ++ -- Flag to indicate whether we have performed the executable file name ++ -- resolution already. Relying on a not null Exename for this purpose ++ -- would be potentially inefficient as this is what we will get if the ++ -- resolution attempt fails. ++ + ------------------------ + -- Symbolic_Traceback -- + ------------------------ + + function Symbolic_Traceback (Traceback : Tracebacks_Array) return String is ++ ++ procedure convert_addresses ++ (filename : System.Address; ++ addrs : System.Address; ++ n_addrs : Integer; ++ buf : System.Address; ++ len : System.Address); ++ pragma Import (C, convert_addresses, "convert_addresses"); ++ -- This is the procedure version of the Ada-aware addr2line. It places ++ -- in BUF a string representing the symbolic translation of the N_ADDRS ++ -- raw addresses provided in ADDRS, looked up in debug information from ++ -- FILENAME. LEN points to an integer which contains the size of the ++ -- BUF buffer at input and the result length at output. ++ -- ++ -- Note that this procedure is *not* thread-safe. ++ ++ type Argv_Array is array (0 .. 0) of System.Address; ++ gnat_argv : access Argv_Array; ++ pragma Import (C, gnat_argv, "gnat_argv"); ++ ++ function locate_exec_on_path ++ (c_exename : System.Address) return System.Address; ++ pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); ++ ++ B_Size : constant Integer := 256 * Traceback'Length; ++ Len : Integer := B_Size; ++ Res : String (1 .. B_Size); ++ ++ use type System.Address; ++ + begin ++ -- The symbolic translation of an empty set of addresses is an empty ++ -- string. ++ + if Traceback'Length = 0 then + return ""; ++ end if; + +- else +- declare +- Img : String := System.Address_Image (Traceback (Traceback'First)); ++ -- If our input set of raw addresses is not empty, resort to the ++ -- libaddr2line service to symbolize it all. + +- Result : String (1 .. (Img'Length + 3) * Traceback'Length); +- Last : Natural := 0; ++ -- Compute, cache and provide the absolute path to our executable file ++ -- name as the binary file where the relevant debug information is to be ++ -- found. If the executable file name resolution fails, we have no ++ -- sensible basis to invoke the symbolizer at all. ++ ++ -- Protect all this against concurrent accesses explicitly, as the ++ -- underlying services are potentially thread unsafe. ++ ++ TSL.Lock_Task.all; ++ ++ if not Exename_Resolved then ++ Exename := locate_exec_on_path (gnat_argv (0)); ++ Exename_Resolved := True; ++ end if; ++ ++ if Exename /= System.Null_Address then ++ Len := Res'Length; ++ convert_addresses ++ (Exename, Traceback'Address, Traceback'Length, ++ Res (1)'Address, Len'Address); ++ end if; ++ ++ TSL.Unlock_Task.all; + +- begin +- for J in Traceback'Range loop +- Img := System.Address_Image (Traceback (J)); +- Result (Last + 1 .. Last + 2) := "0x"; +- Last := Last + 2; +- Result (Last + 1 .. Last + Img'Length) := Img; +- Last := Last + Img'Length + 1; +- Result (Last) := ASCII.LF; +- end loop; ++ -- Return what the addr2line symbolizer has produced if we have called ++ -- it (the executable name resolution succeeded), or an empty string ++ -- otherwise. + +- return Result (1 .. Last); +- end; ++ if Exename /= System.Null_Address then ++ return Res (1 .. Len); ++ else ++ return ""; + end if; ++ + end Symbolic_Traceback; + + function Symbolic_Traceback (E : Exception_Occurrence) return String is +Index: b/src/gcc/ada/tracebak.c +=================================================================== +--- a/src/gcc/ada/tracebak.c ++++ b/src/gcc/ada/tracebak.c +@@ -425,7 +425,7 @@ + /* Starting with GCC 4.6, -fomit-frame-pointer is turned on by default for + 32-bit x86/Linux as well and DWARF 2 unwind tables are emitted instead. + See the x86-64 case below for the drawbacks with this approach. */ +-#if defined (linux) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45) ++#if (defined (linux) || defined(__GNU__)) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45) + #define USE_GCC_UNWINDER + #else + #define USE_GENERIC_UNWINDER --- gcc-7-7.3.0.orig/debian/patches/ada-tools-move-ldflags.diff +++ gcc-7-7.3.0/debian/patches/ada-tools-move-ldflags.diff @@ -0,0 +1,42 @@ +Description: For Ada tools, move LDFLAGS from GCC_LINK to TOOLS_LIBS. + Gnatlink moves GCC_LINK linker options after other options, + probably so that standard libraries come after user libraries + in case --as-needed is activated. + However, if --as-needed is activated via LDFLAGS, it is appended via + GCC_LINK and comes too late on the eventual command line. + All GCC_LINKS expansions but one are followed by an expansion of + TOOLS_LIBS, so TOOLS_LIBS seems to be the right place for LDFLAGS. +Author: Nicolas Boulenguez +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81104 + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -247,7 +247,7 @@ LIBS = $(LIBINTL) $(LIBICONV) $(LIBBACKT + LIBDEPS = $(LIBINTL_DEP) $(LIBICONV_DEP) $(LIBBACKTRACE) $(LIBIBERTY) + # Default is no TGT_LIB; one might be passed down or something + TGT_LIB = +-TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../libcommon-target.a \ ++TOOLS_LIBS = $(LDFLAGS) ../link.o ../targext.o ../../ggc-none.o ../../libcommon-target.a \ + ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \ + ../$(LIBBACKTRACE) ../$(LIBIBERTY) $(SYSLIBS) $(TGT_LIB) + +@@ -2527,7 +2527,7 @@ TOOLS_FLAGS_TO_PASS= \ + "GNATLINK=$(GNATLINK)" \ + "GNATBIND=$(GNATBIND)" + +-GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS) ++GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) + + # Build directory for the tools. Let's copy the target-dependent + # sources using the same mechanism as for gnatlib. The other sources are +@@ -2625,7 +2625,7 @@ common-tools: ../stamp-tools + ../../vxaddr2line$(exeext): ../stamp-tools + $(GNATMAKE) -c $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)" + $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line +- $(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" ../targext.o $(CLIB) ++ $(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" ../targext.o $(CLIB) $(LDFLAGS) + + gnatmake-re: ../stamp-tools + $(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)" --- gcc-7-7.3.0.orig/debian/patches/ada-verbose.diff +++ gcc-7-7.3.0/debian/patches/ada-verbose.diff @@ -0,0 +1,60 @@ +Description: Display subprocess command lines when building Ada. + The log can be a page longer if it helps debugging. +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Make-generated.in ++++ b/src/gcc/ada/Make-generated.in +@@ -28,21 +28,21 @@ + -$(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 @@ + -$(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 @@ + -$(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 +@@ -612,7 +612,7 @@ + -$(MKDIR) ./bldtools/oscons + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) + $(CP) $^ ./bldtools/oscons +- (cd ./bldtools/oscons ; gnatmake -q xoscons) ++ cd ./bldtools/oscons && gnatmake -v xoscons + + $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s --- gcc-7-7.3.0.orig/debian/patches/add-gnu-to-libgo-headers.diff +++ gcc-7-7.3.0/debian/patches/add-gnu-to-libgo-headers.diff @@ -0,0 +1,1077 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/archive/tar/stat_atim.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/archive/tar/stat_atim.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/archive/tar/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 dragonfly openbsd solaris ++// +build gnu linux dragonfly openbsd solaris + + package tar + +Index: gcc-7-7.2.0-12.1/src/libgo/go/cmd/go/signal_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/cmd/go/signal_unix.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/cmd/go/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package main + +Index: gcc-7-7.2.0-12.1/src/libgo/go/crypto/x509/root_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/crypto/x509/root_unix.go ++++ gcc-7-7.2.0-12.1/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 dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package x509 + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/fd_poll_runtime.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/fd_poll_runtime.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/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 darwin dragonfly freebsd linux netbsd openbsd windows solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd windows solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/interface_stub.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/interface_stub.go ++++ gcc-7-7.2.0-12.1/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 nacl ++// +build nacl gnu + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/internal/socktest/switch_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/internal/socktest/switch_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package socktest + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/port_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/port_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris nacl ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris nacl + + // Read system port mappings from /etc/services + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/dir_largefile.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/dir_largefile.go ++++ gcc-7-7.2.0-12.1/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 linux solaris,386 solaris,sparc ++// +build gnu linux solaris,386 solaris,sparc + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/dir_regfile.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/dir_regfile.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/os/dir_regfile.go +@@ -5,6 +5,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 + // +build !solaris !386 + // +build !solaris !sparc +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/dir_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/dir_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/exec_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/exec_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/stat_atim.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/stat_atim.go ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/os/stat.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/stat.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/os/stat.go +@@ -4,6 +4,7 @@ + + // +build !darwin + // +build !freebsd ++// +build !gnu + // +build !linux + // +build !netbsd + // +build !openbsd +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/stat_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/stat_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/sys_uname.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/sys_uname.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/os/sys_uname.go +@@ -4,7 +4,7 @@ + + // For systems which only store the hostname in uname (Solaris). + +-// +build solaris irix rtems ++// +build gnu solaris irix rtems + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/user/listgroups_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/user/listgroups_unix.go ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/os/wait_unimp.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/wait_unimp.go ++++ gcc-7-7.2.0-12.1/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 dragonfly nacl netbsd openbsd solaris ++// +build dragonfly gnu nacl netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/path/filepath/path_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/path/filepath/path_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package filepath + +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/env_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/runtime/env_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package runtime + +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/lock_sema.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/runtime/lock_sema.go ++++ gcc-7-7.2.0-12.1/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 darwin nacl netbsd openbsd plan9 solaris windows ++// +build darwin gnu nacl netbsd openbsd plan9 solaris windows + + package runtime + +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/netpoll.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/runtime/netpoll.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package runtime + +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/signal_gccgo.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/runtime/signal_gccgo.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package runtime + +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/signal_sighandler.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/runtime/signal_sighandler.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package runtime + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/errstr.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/errstr.go ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/syscall/libcall_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/libcall_posix.go ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/syscall/libcall_posix_largefile.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/libcall_posix_largefile.go ++++ gcc-7-7.2.0-12.1/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 linux solaris,386 solaris,sparc ++// +build gnu linux solaris,386 solaris,sparc + + // POSIX library calls on systems which use the largefile interface. + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/libcall_posix_regfile.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/libcall_posix_regfile.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/libcall_posix_regfile.go +@@ -2,6 +2,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 + // +build !solaris !386 + // +build !solaris !sparc +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/libcall_posix_utimesnano.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/libcall_posix_utimesnano.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd openbsd netbsd solaris ++// +build darwin dragonfly freebsd gnu openbsd netbsd solaris + + // General POSIX version of UtimesNano. + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_resnew.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/cgo_resnew.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_resnew.go +@@ -3,7 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build cgo,!netgo +-// +build darwin linux,!android netbsd solaris ++// +build darwin gnu linux,!android netbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_sockold.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/cgo_sockold.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_sockold.go +@@ -3,7 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build cgo,!netgo +-// +build darwin dragonfly freebsd netbsd openbsd ++// +build darwin dragonfly freebsd gnu netbsd openbsd + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/hook_cloexec.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/hook_cloexec.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/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 freebsd linux ++// +build freebsd gnu linux + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sock_cloexec.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/sock_cloexec.go ++++ gcc-7-7.2.0-12.1/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 freebsd linux ++// +build freebsd gnu linux + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sockoptip_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/sockoptip_posix.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/sockoptip_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 darwin dragonfly freebsd linux netbsd openbsd windows ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/exec_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/exec_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Fork, exec, wait, etc. + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/exec/lp_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/exec/lp_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package exec + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/signal/signal_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/signal/signal_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package signal + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/error_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/error_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/file_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/file_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/path_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/path_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/sys_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/sys_unix.go ++++ gcc-7-7.2.0-12.1/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 dragonfly linux netbsd openbsd solaris ++// +build dragonfly gnu linux netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/user/decls_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/user/decls_unix.go ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/os/user/lookup_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/user/lookup_unix.go ++++ gcc-7-7.2.0-12.1/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 netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu !android,linux netbsd openbsd solaris + // +build cgo + + package user +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/env_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/env_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + // Unix environment variables. + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/exec_bsd.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/exec_bsd.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu netbsd openbsd solaris + + package syscall + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/sockcmsg_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/sockcmsg_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Socket control messages + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/syscall_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/syscall_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package syscall + +Index: gcc-7-7.2.0-12.1/src/libgo/go/time/sys_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/time/sys_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package time + +Index: gcc-7-7.2.0-12.1/src/libgo/go/time/zoneinfo_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/time/zoneinfo_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin,386 darwin,amd64 dragonfly freebsd linux,!android nacl netbsd openbsd solaris ++// +build 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: gcc-7-7.2.0-12.1/src/libgo/go/net/addrselect.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/addrselect.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Minimal RFC 6724 address selection. + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/conf.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/conf.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/dnsclient_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/dnsclient_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // DNS client: see RFC 1035. + // Has to be linked into package net for Dial. +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/dnsconfig_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/dnsconfig_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Read system DNS config from /etc/resolv.conf + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/fd_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/fd_posix.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/fd_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/fd_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/file_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/file_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/hook_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/hook_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/iprawsock_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/iprawsock_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/ipsock_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/ipsock_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/lookup_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/lookup_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/nss.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/nss.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sockopt_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/sockopt_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sock_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/sock_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/tcpsockopt_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/tcpsockopt_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/tcpsockopt_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/tcpsockopt_unix.go ++++ gcc-7-7.2.0-12.1/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 freebsd linux netbsd ++// +build freebsd gnu linux netbsd + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/tcpsock_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/tcpsock_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/udpsock_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/udpsock_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/unixsock_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/unixsock_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/exec_posix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/exec_posix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/file_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/file_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/executable_procfs.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/executable_procfs.go ++++ gcc-7-7.2.0-12.1/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 openbsd dragonfly nacl ++// +build gnu linux netbsd openbsd dragonfly nacl + + package os + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/timestruct.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/timestruct.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package syscall + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/cgo_unix.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_unix.go +@@ -3,7 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build cgo,!netgo +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/archive/tar/stat_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/archive/tar/stat_unix.go ++++ gcc-7-7.2.0-12.1/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 linux darwin dragonfly freebsd openbsd netbsd solaris ++// +build gnu linux darwin dragonfly freebsd openbsd netbsd solaris + + package tar + +Index: gcc-7-7.2.0-12.1/src/libgo/go/crypto/rand/eagain.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/crypto/rand/eagain.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package rand + +Index: gcc-7-7.2.0-12.1/src/libgo/go/crypto/rand/rand_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/crypto/rand/rand_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd plan9 solaris + + // Unix cryptographically secure pseudorandom number + // generator. +Index: gcc-7-7.2.0-12.1/src/libgo/go/exp/terminal/util.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/exp/terminal/util.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/exp/terminal/util.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 ++// +build gnu linux + + // Package terminal provides support functions for dealing with terminals, as + // commonly found on UNIX systems. +Index: gcc-7-7.2.0-12.1/src/libgo/go/mime/type_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/mime/type_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package mime + +Index: gcc-7-7.2.0-12.1/src/libgo/go/plugin/plugin_dlopen.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/plugin/plugin_dlopen.go ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/syscall/dirent.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/dirent.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package syscall + +Index: gcc-7-7.2.0-12.1/src/libgo/runtime/env_posix.c +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/runtime/env_posix.c ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/net/internal/socktest/sys_unix.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/internal/socktest/sys_unix.go ++++ gcc-7-7.2.0-12.1/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package socktest + +Index: gcc-7-7.2.0-12.1/src/libgo/go/plugin/plugin_stubs.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/plugin/plugin_stubs.go ++++ gcc-7-7.2.0-12.1/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: gcc-7-7.2.0-12.1/src/libgo/go/net/internal/socktest/sys_cloexec.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/internal/socktest/sys_cloexec.go ++++ gcc-7-7.2.0-12.1/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 freebsd linux ++// +build freebsd gnu linux + + package socktest + --- gcc-7-7.3.0.orig/debian/patches/add-gnu-to-libgo-test-headers.diff +++ gcc-7-7.3.0/debian/patches/add-gnu-to-libgo-test-headers.diff @@ -0,0 +1,273 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/main_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/main_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/exec/lp_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/exec/lp_unix_test.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/os/os_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/os_unix_test.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/os/signal/signal_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/signal/signal_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package signal + +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/crash_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/runtime/crash_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package runtime_test + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/exec_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/exec_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package syscall_test + +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/runtime_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/runtime/runtime_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd plan9 ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd plan9 + + package runtime_test + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/export_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/export_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package syscall + +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/mmap_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/mmap_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd + + package syscall_test + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/addrselect_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/addrselect_test.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/net/cgo_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/cgo_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/conf_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/conf_test.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/net/dnsconfig_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/dnsconfig_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/fd_posix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/fd_posix_test.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/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 darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/nss_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/nss_test.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/cmd/go/go_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/cmd/go/go_unix_test.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/net/dial_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/dial_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/main_cloexec_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/main_cloexec_test.go ++++ gcc-7-7.2.0-12.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 freebsd linux ++// +build freebsd gnu linux + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/dnsclient_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/net/dnsclient_unix_test.go ++++ gcc-7-7.2.0-12.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 darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/env_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/env_unix_test.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/os/error_unix_test.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/error_unix_test.go ++++ gcc-7-7.2.0-12.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 + --- gcc-7-7.3.0.orig/debian/patches/alpha-ieee-doc.diff +++ gcc-7-7.3.0/debian/patches/alpha-ieee-doc.diff @@ -0,0 +1,24 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off (doc patch) + +--- + gcc/doc/invoke.texi | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -9980,6 +9980,13 @@ able to correctly support denormalized numbers and exceptional IEEE + values such as not-a-number and plus/minus infinity. Other Alpha + compilers call this option @option{-ieee_with_no_inexact}. + ++DEBIAN SPECIFIC: This option is on by default for alpha-linux-gnu, unless ++@option{-ffinite-math-only} (which is part of the @option{-ffast-math} ++set) is specified, because the software functions in the GNU libc math ++libraries generate denormalized numbers, NaNs, and infs (all of which ++will cause a programs to SIGFPE when it attempts to use the results without ++@option{-mieee}). ++ + @item -mieee-with-inexact + @opindex mieee-with-inexact + This is like @option{-mieee} except the generated code also maintains --- gcc-7-7.3.0.orig/debian/patches/alpha-ieee.diff +++ gcc-7-7.3.0/debian/patches/alpha-ieee.diff @@ -0,0 +1,21 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off + +--- + gcc/config/alpha/alpha.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -259,6 +259,10 @@ + int line_size = 0, l1_size = 0, l2_size = 0; + int i; + ++ /* If not -ffinite-math-only, enable -mieee*/ ++ if (!flag_finite_math_only) ++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; ++ + #ifdef SUBTARGET_OVERRIDE_OPTIONS + SUBTARGET_OVERRIDE_OPTIONS; + #endif --- gcc-7-7.3.0.orig/debian/patches/alpha-no-ev4-directive.diff +++ gcc-7-7.3.0/debian/patches/alpha-no-ev4-directive.diff @@ -0,0 +1,32 @@ +# DP: never emit .ev4 directive. + +--- + gcc/config/alpha/alpha.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +Index: b/src/gcc/config/alpha/alpha.c +=================================================================== +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -9471,7 +9471,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"; +@@ -9481,10 +9481,9 @@ alpha_file_start (void) + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + --- gcc-7-7.3.0.orig/debian/patches/arm-multilib-defaults.diff +++ gcc-7-7.3.0/debian/patches/arm-multilib-defaults.diff @@ -0,0 +1,92 @@ +# DP: Set MULTILIB_DEFAULTS for ARM multilib builds + +Index: b/src/gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -3774,10 +3774,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 +@@ -3811,6 +3819,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" +Index: b/src/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -43,7 +43,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. */ +@@ -97,6 +111,28 @@ + #define MUSL_DYNAMIC_LINKER \ + "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1" + ++/* Set the multilib defaults according the configuration, needed to ++ let gcc -print-multi-dir do the right thing. */ ++ ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian" ++#else ++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian" ++#endif ++ ++#ifndef TARGET_CONFIGURED_THUMB_MODE ++#define MULTILIB_DEFAULT_MODE "marm" ++#elif TARGET_CONFIGURED_THUMB_MODE == 1 ++#define MULTILIB_DEFAULT_MODE "mthumb" ++#else ++#define MULTILIB_DEFAULT_MODE "marm" ++#endif ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS \ ++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \ ++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" } ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC --- gcc-7-7.3.0.orig/debian/patches/arm-multilib-soft-cross.diff +++ gcc-7-7.3.0/debian/patches/arm-multilib-soft-cross.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/soft float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -21,6 +21,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-7-7.3.0.orig/debian/patches/arm-multilib-soft-float.diff +++ gcc-7-7.3.0/debian/patches/arm-multilib-soft-float.diff @@ -0,0 +1,26 @@ +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -24,6 +24,23 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines))) ++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . hf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float ++endif ++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . sf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float ++endif ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-7-7.3.0.orig/debian/patches/arm-multilib-soft.diff +++ gcc-7-7.3.0/debian/patches/arm-multilib-soft.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/soft float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -23,6 +23,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-7-7.3.0.orig/debian/patches/arm-multilib-softfp-cross.diff +++ gcc-7-7.3.0/debian/patches/arm-multilib-softfp-cross.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/softfp float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi 2011-01-03 20:52:22.000000000 +0000 ++++ b/src/gcc/config/arm/t-linux-eabi 2011-08-21 21:08:47.583351817 +0000 +@@ -24,6 +24,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-7-7.3.0.orig/debian/patches/arm-multilib-softfp.diff +++ gcc-7-7.3.0/debian/patches/arm-multilib-softfp.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/softfp float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi 2011-01-03 20:52:22.000000000 +0000 ++++ b/src/gcc/config/arm/t-linux-eabi 2011-08-21 21:08:47.583351817 +0000 +@@ -24,6 +24,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* --- gcc-7-7.3.0.orig/debian/patches/bind_now_when_pie.diff +++ gcc-7-7.3.0/debian/patches/bind_now_when_pie.diff @@ -0,0 +1,23 @@ +Author: Steve Beattie +Description: enable bind now by default when linking with pie by default + +--- + src/gcc/gcc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -943,7 +943,11 @@ proper position among the other output f + #ifndef LINK_PIE_SPEC + #ifdef HAVE_LD_PIE + #ifndef LD_PIE_SPEC ++#ifdef ACCEL_COMPILER + #define LD_PIE_SPEC "-pie" ++#else ++#define LD_PIE_SPEC "-pie -z now" ++#endif + #endif + #else + #define LD_PIE_SPEC "" --- gcc-7-7.3.0.orig/debian/patches/bootstrap-no-unneeded-libs.diff +++ gcc-7-7.3.0/debian/patches/bootstrap-no-unneeded-libs.diff @@ -0,0 +1,30 @@ +# DP: For bootstrap builds, don't build unneeded libstdc++ things +# DP: (debug library, PCH headers). + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. + +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -1060,7 +1060,9 @@ + --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ + --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ +- [+extra_configure_flags+][+ ENDIF extra_configure_flags +] ++ [+extra_configure_flags+][+ ENDIF extra_configure_flags +] \ ++ [+ IF bootstrap_configure_flags +][+bootstrap_configure_flags+] \ ++ [+ ENDIF bootstrap_configure_flags +] + @endif [+prefix+][+module+]-bootstrap + [+ ENDFOR bootstrap_stage +] + [+ ENDIF bootstrap +] +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -117,7 +117,8 @@ + target_modules = { module= libstdc++-v3; + bootstrap=true; + lib_path=src/.libs; +- raw_cxx=true; }; ++ raw_cxx=true; ++ bootstrap_configure_flags='--disable-libstdcxx-debug --disable-libstdcxx-pch'; }; + target_modules = { module= libmudflap; lib_path=.libs; }; + target_modules = { module= libsanitizer; lib_path=.libs; }; + target_modules = { module= libssp; lib_path=.libs; }; --- gcc-7-7.3.0.orig/debian/patches/canonical-cpppath.diff +++ gcc-7-7.3.0/debian/patches/canonical-cpppath.diff @@ -0,0 +1,36 @@ +# DP: Don't use any relative path names for the standard include paths. + +Index: b/src/gcc/incpath.c +=================================================================== +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -171,6 +171,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, SYSTEM, p->cxx_aware, false); + } + } +@@ -245,6 +253,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, SYSTEM, p->cxx_aware, false); + } --- gcc-7-7.3.0.orig/debian/patches/config-ml.diff +++ gcc-7-7.3.0/debian/patches/config-ml.diff @@ -0,0 +1,54 @@ +# DP: - Disable some biarch libraries for biarch builds. +# DP: - Fix multilib builds on kernels which don't support all multilibs. + +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -475,6 +475,25 @@ powerpc*-*-* | rs6000*-*-*) + ;; + esac + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++old_multidirs="${multidirs}" ++multidirs="" ++for x in ${old_multidirs}; do ++ case " $x " in ++ " 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf "|" m4-nofpu ") ++ case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++done ++ + # Remove extraneous blanks from multidirs. + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` +@@ -878,9 +897,19 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + fi + fi + ++ ml_configure_args= ++ for arg in ${ac_configure_args} ++ do ++ case $arg in ++ *CC=*) ml_configure_args=${ml_config_env} ;; ++ *CXX=*) ml_configure_args=${ml_config_env} ;; ++ *) ;; ++ esac ++ done ++ + if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ + --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ +- "${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then ++ "${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then + true + else + exit 1 --- gcc-7-7.3.0.orig/debian/patches/cross-biarch.diff +++ gcc-7-7.3.0/debian/patches/cross-biarch.diff @@ -0,0 +1,82 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -533,7 +533,13 @@ multi-do: + else \ + if [ -d ../$${dir}/$${lib} ]; then \ + flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ +- if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \ ++ libsuffix_="$${dir}"; \ ++ if [ "$${dir}" = "n32" ]; then libsuffix_=32; fi; \ ++ if [ -n "$$($${compiler} -v 2>&1 |grep '^Target: mips')" ] && [ "$${dir}" = "32" ]; then libsuffix_=o32; fi; \ ++ if (cd ../$${dir}/$${lib}; $(MAKE) $(subst \ ++ -B$(build_tooldir)/lib/, \ ++ -B$(build_tooldir)/lib$${libsuffix_}/, \ ++ $(FLAGS_TO_PASS)) \ + CFLAGS="$(CFLAGS) $${flags}" \ + CCASFLAGS="$(CCASFLAGS) $${flags}" \ + FCFLAGS="$(FCFLAGS) $${flags}" \ +@@ -786,6 +792,15 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + GFORTRAN_=$GFORTRAN' ' + GOC_=$GOC' ' + 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"`' ' ;; + *) +@@ -842,6 +865,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"`' ' ;; + *) +@@ -854,6 +879,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) --- gcc-7-7.3.0.orig/debian/patches/cross-fixes.diff +++ gcc-7-7.3.0/debian/patches/cross-fixes.diff @@ -0,0 +1,81 @@ +# DP: Fix the linker error when creating an xcc for ia64 + +--- + gcc/config/ia64/fde-glibc.c | 3 +++ + gcc/config/ia64/unwind-ia64.c | 3 ++- + gcc/unwind-compat.c | 2 ++ + gcc/unwind-generic.h | 2 ++ + 6 files changed, 14 insertions(+), 1 deletions(-) + +Index: b/src/libgcc/config/ia64/fde-glibc.c +=================================================================== +--- a/src/libgcc/config/ia64/fde-glibc.c ++++ b/src/libgcc/config/ia64/fde-glibc.c +@@ -28,6 +28,7 @@ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE 1 + #endif ++#ifndef inhibit_libc + #include "config.h" + #include + #include +@@ -159,3 +160,5 @@ _Unwind_FindTableEntry (void *pc, unw_wo + + return data.ret; + } ++ ++#endif +Index: b/src/libgcc/config/ia64/unwind-ia64.c +=================================================================== +--- a/src/libgcc/config/ia64/unwind-ia64.c ++++ b/src/libgcc/config/ia64/unwind-ia64.c +@@ -26,6 +26,7 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "coretypes.h" +@@ -2466,3 +2467,4 @@ alias (_Unwind_SetIP); + #endif + + #endif ++#endif +Index: b/src/libgcc/unwind-compat.c +=================================================================== +--- a/src/libgcc/unwind-compat.c ++++ b/src/libgcc/unwind-compat.c +@@ -23,6 +23,7 @@ + . */ + + #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "unwind.h" +@@ -207,3 +208,4 @@ _Unwind_SetIP (struct _Unwind_Context *c + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +Index: b/src/libgcc/unwind-generic.h +=================================================================== +--- a/src/libgcc/unwind-generic.h ++++ b/src/libgcc/unwind-generic.h +@@ -221,6 +221,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _ + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + static inline _Unwind_Ptr + _Unwind_GetDataRelBase (struct _Unwind_Context *_C) + { +@@ -237,6 +238,7 @@ _Unwind_GetTextRelBase (struct _Unwind_C + + /* @@@ Retrieve the Backing Store Pointer of the given context. */ + extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); ++#endif /* inhibit_libc */ + #else + extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); + extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); --- gcc-7-7.3.0.orig/debian/patches/cross-install-location.diff +++ gcc-7-7.3.0/debian/patches/cross-install-location.diff @@ -0,0 +1,378 @@ +Index: b/src/fixincludes/Makefile.in +=================================================================== +--- a/src/fixincludes/Makefile.in ++++ b/src/fixincludes/Makefile.in +@@ -52,9 +52,9 @@ target_noncanonical:=@target_noncanonica + gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Where our executable files go + itoolsdir = $(libexecsubdir)/install-tools + # Where our data files go +Index: b/src/libgfortran/Makefile.in +=================================================================== +--- a/src/libgfortran/Makefile.in ++++ b/src/libgfortran/Makefile.in +@@ -589,12 +589,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 +@@ -4239,7 +4239,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); +@@ -4265,15 +4265,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 +@@ -604,9 +604,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 +@@ -2113,8 +2113,8 @@ prefix.o: $(BASEVER) + + 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)\" \ +@@ -2776,7 +2776,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 +@@ -288,7 +288,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 + 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 +@@ -38,7 +38,7 @@ AM_CFLAGS = -Wall + 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 +@@ -355,7 +355,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 +@@ -41,7 +41,7 @@ libquadmath_la_LDFLAGS = -version-info ` + libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + + nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + libquadmath_la_SOURCES = \ + math/x2y2m1q.c math/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 +@@ -196,7 +196,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 +@@ -286,7 +286,7 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I .. -I ../config +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + nodist_saninclude_HEADERS = $(am__append_1) + @SANITIZER_SUPPORTED_TRUE@SUBDIRS = sanitizer_common $(am__append_2) \ + @SANITIZER_SUPPORTED_TRUE@ $(am__append_3) lsan asan ubsan \ --- gcc-7-7.3.0.orig/debian/patches/cross-no-locale-include.diff +++ gcc-7-7.3.0/debian/patches/cross-no-locale-include.diff @@ -0,0 +1,17 @@ +# DP: Don't add /usr/local/include for cross compilers. Assume that +# DP: /usr/include is ready for multiarch, but not /usr/local/include. + +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -66,8 +66,11 @@ + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++#if 0 ++ /* Unsafe to assume that /usr/local/include is ready for multiarch. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif ++#endif + #ifdef PREFIX_INCLUDE_DIR + { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 }, + #endif --- gcc-7-7.3.0.orig/debian/patches/cuda-float128.diff +++ gcc-7-7.3.0/debian/patches/cuda-float128.diff @@ -0,0 +1,28 @@ +# Mask __float128 types from CUDA compilers (LP: #1717257) + +Index: b/src/libstdc++-v3/include/std/type_traits +=================================================================== +--- a/src/libstdc++-v3/include/std/type_traits ++++ b/src/libstdc++-v3/include/std/type_traits +@@ -342,7 +342,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + struct __is_floating_point_helper + : public true_type { }; + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + template<> + struct __is_floating_point_helper<__float128> + : public true_type { }; +Index: b/src/libstdc++-v3/include/bits/std_abs.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/std_abs.h ++++ b/src/libstdc++-v3/include/bits/std_abs.h +@@ -96,7 +96,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + abs(__GLIBCXX_TYPE_INT_N_3 __x) { return __x >= 0 ? __x : -__x; } + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + inline _GLIBCXX_CONSTEXPR + __float128 + abs(__float128 __x) --- gcc-7-7.3.0.orig/debian/patches/disable-gdc-tests.diff +++ gcc-7-7.3.0/debian/patches/disable-gdc-tests.diff @@ -0,0 +1,19 @@ +# DP: Disable D tests, hang on many buildds + +Index: b/src/gcc/d/Make-lang.in +=================================================================== +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -148,9 +148,9 @@ d.srcman: doc/gdc.1 + # check targets. However, our DejaGNU framework requires 'check-gdc' as its + # entry point. We feed the former to the latter here. + check-d: check-gdc +-lang_checks += check-gdc +-lang_checks_parallelized += check-gdc +-check_gdc_parallelize = 10 ++#lang_checks += check-gdc ++#lang_checks_parallelized += check-gdc ++#check_gdc_parallelize = 10 + + # Install hooks. + --- gcc-7-7.3.0.orig/debian/patches/g++-multiarch-incdir.diff +++ gcc-7-7.3.0/debian/patches/g++-multiarch-incdir.diff @@ -0,0 +1,119 @@ +# DP: Use /usr/include//c++/4.x as the include directory +# DP: for host dependent c++ header files. + +Index: b/src/libstdc++-v3/include/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -924,7 +924,7 @@ endif + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +Index: b/src/libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -1209,7 +1209,7 @@ profile_impl_headers = \ + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -1150,6 +1150,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)" \ +@@ -1681,6 +1682,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 +@@ -2769,7 +2778,7 @@ PREPROCESSOR_DEFINES = \ + -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +- -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ ++ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ + -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ + -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ +Index: b/src/gcc/cppdefault.c +=================================================================== +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -49,6 +49,8 @@ const struct default_include cpp_include + /* Pick up GNU C++ target-dependent include files. */ + { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 }, + #endif + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR + /* Pick up GNU C++ backward and deprecated include files. */ +Index: b/src/gcc/incpath.c +=================================================================== +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -158,6 +158,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, SYSTEM, p->cxx_aware, false); + } +@@ -222,7 +234,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, SYSTEM, p->cxx_aware, false); --- gcc-7-7.3.0.orig/debian/patches/gcc-alpha-bs-ignore.diff +++ gcc-7-7.3.0/debian/patches/gcc-alpha-bs-ignore.diff @@ -0,0 +1,14 @@ +# DP: Ignore bootstrap comparison failures in gcc/d on alpha + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3511,6 +3511,7 @@ case "$target" in + hppa*64*-*-hpux*) ;; + hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/* | gcc/function-tests.o" ;; + powerpc*-ibm-aix*) compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | *libgomp*\$(objext)" ;; ++ alpha*-linux-*) compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | gcc/d/*\$(objext)" ;; + esac + AC_SUBST(compare_exclusions) + --- gcc-7-7.3.0.orig/debian/patches/gcc-as-needed-gold.diff +++ gcc-7-7.3.0/debian/patches/gcc-as-needed-gold.diff @@ -0,0 +1,58 @@ +# DP: Use --push-state/--pop-state for gold as well when linking libtsan. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -686,10 +686,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 +@@ -707,10 +707,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 +@@ -728,10 +728,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 +@@ -747,10 +747,10 @@ proper position among the other output f + " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" + #ifdef HAVE_LD_STATIC_DYNAMIC + #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ +- " %{!static-libubsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " %{!static-libubsan:--push-state --no-as-needed}" \ + " -lubsan " \ + " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libubsan:--pop-state}" \ + STATIC_LIBUBSAN_LIBS + #else + #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS --- gcc-7-7.3.0.orig/debian/patches/gcc-as-needed-push-pop.diff +++ gcc-7-7.3.0/debian/patches/gcc-as-needed-push-pop.diff @@ -0,0 +1,43 @@ +From: Jakub Jelinek +Subject: [PATCH] Use --push-state --as-needed and --pop-state instead of --as-needed and --no-as-needed for libgcc + +As discussed, using --as-needed and --no-as-needed is dangerous, because +it results in --no-as-needed even for libraries after -lgcc_s, even when the +default is --as-needed or --as-needed has been specified earlier on the +command line. + +If the linker supports --push-state/--pop-state, we should IMHO use it. + +2018-04-11 Jakub Jelinek + + * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use + --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed if ld supports it. + * configure: Regenerated. + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -5371,11 +5371,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>/dev/null | 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 + else + case "$target" in + # Solaris 2 ld always supports -z ignore/-z record. --- gcc-7-7.3.0.orig/debian/patches/gcc-as-needed.diff +++ gcc-7-7.3.0/debian/patches/gcc-as-needed.diff @@ -0,0 +1,241 @@ +# 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 +@@ -685,8 +685,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 +@@ -703,8 +706,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 +@@ -721,8 +727,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 +@@ -737,8 +746,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 +@@ -159,13 +159,13 @@ 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 "%{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 "%{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 +@@ -480,12 +480,12 @@ 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: \ + %{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: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \ + %(link_os_extra_spec64)" +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -810,7 +810,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: \ + %{rdynamic:-export-dynamic} \ +Index: b/src/gcc/config/alpha/linux-elf.h +=================================================================== +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu --as-needed %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +Index: b/src/gcc/config/arm/linux-elf.h +=================================================================== +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -71,6 +71,7 @@ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ + --hash-style=gnu \ ++ --as-needed \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +Index: b/src/gcc/config/mips/gnu-user.h +=================================================================== +--- a/src/gcc/config/mips/gnu-user.h ++++ b/src/gcc/config/mips/gnu-user.h +@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. + #undef GNU_USER_TARGET_LINK_SPEC + #define GNU_USER_TARGET_LINK_SPEC "\ + %{G*} %{EB} %{EL} %{mips*} %{shared} \ ++ -as-needed \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +Index: b/src/gcc/config/riscv/linux.h +=================================================================== +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -51,6 +51,7 @@ along with GCC; see the file COPYING3. + + #define LINK_SPEC "\ + -hash-style=gnu \ ++-as-needed \ + -melf" XLEN_SPEC "lriscv \ + %{shared} \ + %{!shared: \ --- gcc-7-7.3.0.orig/debian/patches/gcc-auto-build.diff +++ gcc-7-7.3.0/debian/patches/gcc-auto-build.diff @@ -0,0 +1,15 @@ +# DP: Fix cross building a native compiler. + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1705,7 +1705,7 @@ else + # Clearing GMPINC is necessary to prevent host headers being + # used by the build compiler. Defining GENERATOR_FILE stops + # system.h from including gmp.h. +- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ ++ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ + CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ + LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ + GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \ --- gcc-7-7.3.0.orig/debian/patches/gcc-d-lang.diff +++ gcc-7-7.3.0/debian/patches/gcc-d-lang.diff @@ -0,0 +1,251 @@ +# DP: Add D options and specs for the gcc driver. + +Index: b/src/gcc/d/lang-specs.h +=================================================================== +--- /dev/null ++++ b/src/gcc/d/lang-specs.h +@@ -0,0 +1,31 @@ ++/* lang-specs.h -- D frontend for GCC. ++ Copyright (C) 2011, 2012 Free Software Foundation, Inc. ++ ++ GCC is free software; you can redistribute it and/or modify it under ++ the terms of the GNU General Public License as published by the Free ++ Software Foundation; either version 3, or (at your option) any later ++ version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . ++*/ ++ ++/* %{!M} probably doesn't make sense because we would need ++ to do that -- -MD and -MMD doesn't sound like a plan for D.... */ ++ ++{".d", "@d", 0, 1, 0 }, ++{".D", "@d", 0, 1, 0 }, ++{".dd", "@d", 0, 1, 0 }, ++{".DD", "@d", 0, 1, 0 }, ++{".di", "@d", 0, 1, 0 }, ++{".DI", "@d", 0, 1, 0 }, ++{"@d", ++ "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %{nostdinc*} %{+e*} %{I*} %{J*}\ ++ %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", 0, 1, 0 }, ++ +Index: b/src/gcc/d/lang.opt +=================================================================== +--- /dev/null ++++ b/src/gcc/d/lang.opt +@@ -0,0 +1,208 @@ ++; GDC -- D front-end for GCC ++; Copyright (C) 2011, 2012 Free Software Foundation, Inc. ++; ++; This program is free software; you can redistribute it and/or modify ++; it under the terms of the GNU General Public License as published by ++; the Free Software Foundation; either version 2 of the License, or ++; (at your option) any later version. ++; ++; This program is distributed in the hope that it will be useful, ++; but WITHOUT ANY WARRANTY; without even the implied warranty of ++; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++; GNU General Public License for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with GCC; see the file COPYING3. If not see ++; . ++ ++Language ++D ++ ++debuglib= ++Driver Joined ++Debug library to use instead of phobos ++ ++defaultlib= ++Driver Joined ++Default library to use instead of phobos ++ ++fassert ++D ++Permit the use of the assert keyword ++ ++; For D: defaults to on ++fbounds-check ++D ++Generate code to check bounds before indexing arrays ++ ++fbuiltin ++D Var(flag_no_builtin, 0) ++Recognize built-in functions ++ ++fdebug ++D ++Compile in debug code ++ ++fdebug= ++D Joined RejectNegative ++-fdebug,-fdebug=,-fdebug= Compile in debug code, code <= level, or code identified by ident ++ ++fdeps= ++D Joined RejectNegative ++-fdeps= Write module dependencies to filename ++ ++fdoc ++D ++Generate documentation ++ ++fdoc-dir= ++D Joined RejectNegative ++-fdoc-dir= Write documentation file to docdir directory ++ ++fdoc-file= ++D Joined RejectNegative ++-fdoc-file= Write documentation file to filename ++ ++fdoc-inc= ++D Joined RejectNegative ++-fdoc-inc= Include a Ddoc macro file ++ ++fdump-source ++D RejectNegative ++Dump decoded UTF-8 text and source from HTML ++ ++fd-verbose ++D ++Print information about D language processing to stdout ++ ++fd-vtls ++D ++List all variables going into thread local storage ++ ++femit-templates ++D ++-femit-templates Emit templates code and data even if the linker cannot merge multiple copies ++ ++fignore-unknown-pragmas ++D ++Ignore unsupported pragmas ++ ++fin ++D ++Generate runtime code for in() contracts ++ ++fintfc ++Generate D interface files ++ ++fintfc-dir= ++D Joined RejectNegative ++-fintfc-dir= Write D interface files to directory ++ ++fintfc-file= ++D Joined RejectNegative ++-fintfc-file= Write D interface file to ++ ++finvariants ++D ++Generate runtime code for invariant()'s ++ ++fmake-deps= ++D Joined RejectNegative ++-fmake-deps= Write dependency output to the given file ++ ++fmake-mdeps= ++D Joined RejectNegative ++Like -fmake-deps= but ignore system modules ++ ++femit-moduleinfo ++D ++Generate ModuleInfo struct for output module ++ ++fonly= ++D Joined RejectNegative ++Process all modules specified on the command line, but only generate code for the module specified by the argument ++ ++fout ++D ++Generate runtime code for out() contracts ++ ++fproperty ++D ++Enforce property syntax ++ ++frelease ++D ++Compile release version ++ ++fsplit-dynamic-arrays ++D Var(flag_split_darrays) ++Split dynamic arrays into length and pointer when passing to functions ++ ++funittest ++D ++Compile in unittest code ++ ++fversion= ++D Joined RejectNegative ++-fversion= Compile in version code >= or identified by ++ ++fXf= ++D Joined RejectNegative ++-fXf= Write JSON file to ++ ++imultilib ++D Joined Separate ++-imultilib Set to be the multilib include subdirectory ++ ++iprefix ++D Joined Separate ++-iprefix Specify as a prefix for next two options ++ ++isysroot ++D Joined Separate ++-isysroot Set to be the system root directory ++ ++isystem ++D Joined Separate ++-isystem Add to the start of the system include path ++ ++I ++D Joined Separate ++-I Add to the end of the main include path ++ ++J ++D Joined Separate ++-J Put MODULE files in 'directory' ++ ++nophoboslib ++Driver ++Do not link the standard D library in the compilation ++ ++nostdinc ++D ++Do not search standard system include directories (those specified with -isystem will still be used) ++ ++static-libphobos ++Driver ++Link the standard D library statically in the compilation ++ ++Wall ++D ++; Documented in c.opt ++ ++Wcast-result ++D Warning Var(warn_cast_result) ++Warn about casts that will produce a null or nil result ++ ++Wdeprecated ++D ++; Documented in c.opt ++ ++Werror ++D ++; Documented in common.opt ++ ++Wunknown-pragmas ++D ++; Documented in c.opt ++ --- gcc-7-7.3.0.orig/debian/patches/gcc-default-format-security.diff +++ gcc-7-7.3.0/debian/patches/gcc-default-format-security.diff @@ -0,0 +1,39 @@ +# DP: Turn on -Wformat -Wformat-security by default for C, C++, ObjC, ObjC++. + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -4142,6 +4142,11 @@ value is used and that might result in t + sufficient length or magnitude. + @end table + ++NOTE: In Ubuntu 8.10 and later versions this option is enabled by default ++for C, C++, ObjC, ObjC++. To disable, use @option{-Wno-format-security}, ++or disable all format warnings with @option{-Wformat=0}. To make format ++security warnings fatal, specify @option{-Werror=format-security}. ++ + @item -Wformat-y2k + @opindex Wformat-y2k + @opindex Wno-format-y2k +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -876,11 +876,14 @@ proper position among the other output f + #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G" + #endif + ++/* no separate spec, just shove it into the ssp default spec */ ++#define FORMAT_SECURITY_SPEC "%{!Wformat:%{!Wformat=2:%{!Wformat=0:%{!Wall:-Wformat} %{!Wno-format-security:-Wformat-security}}}}" ++ + #ifndef SSP_DEFAULT_SPEC + #if defined(TARGET_LIBC_PROVIDES_SSP) && !defined(ACCEL_COMPILER) +-#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}" ++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}} " FORMAT_SECURITY_SPEC + #else +-#define SSP_DEFAULT_SPEC "" ++#define SSP_DEFAULT_SPEC FORMAT_SECURITY_SPEC + #endif + #endif + --- gcc-7-7.3.0.orig/debian/patches/gcc-default-fortify-source.diff +++ gcc-7-7.3.0/debian/patches/gcc-default-fortify-source.diff @@ -0,0 +1,42 @@ +# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, +# DP: if the optimization level is > 0 + +--- + gcc/doc/invoke.texi | 6 ++++++ + gcc/c-family/c-cppbuiltin.c | 3 + + 2 files changed, 9 insertions(+), 0 deletions(-) + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -7129,6 +7129,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 +@@ -1337,6 +1337,12 @@ c_cpp_builtins (cpp_reader *pfile) + builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0); + builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0); + ++#if !defined(ACCEL_COMPILER) ++ /* Fortify Source enabled by default for optimization levels > 0 */ ++ if (optimize) ++ builtin_define_with_int_value ("_FORTIFY_SOURCE", 2); ++#endif ++ + /* Misc. */ + if (flag_gnu89_inline) + cpp_define (pfile, "__GNUC_GNU_INLINE__"); --- gcc-7-7.3.0.orig/debian/patches/gcc-default-relro.diff +++ gcc-7-7.3.0/debian/patches/gcc-default-relro.diff @@ -0,0 +1,45 @@ +# DP: Turn on -Wl,-z,relro by default. + +--- + gcc/doc/invoke.texi | 3 +++ + gcc/gcc.c | 1 + + 2 files changed, 4 insertions(+), 0 deletions(-) + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -11859,6 +11859,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 +@@ -1046,6 +1046,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:\ +@@ -1054,6 +1059,7 @@ proper position among the other output f + "%{flto|flto=*:% + + * 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. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -290,6 +290,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. */ + +@@ -4458,7 +4462,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 +@@ -7697,6 +7704,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); +Index: b/src/gcc/lto-wrapper.c +=================================================================== +--- 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. */ +@@ -790,8 +791,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; +@@ -804,18 +807,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); + } +Index: b/src/libgomp/target.c +=================================================================== +--- a/src/libgomp/target.c ++++ b/src/libgomp/target.c +@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp + + void *plugin_handle = dlopen (plugin_name, RTLD_LAZY); + if (!plugin_handle) +- goto dl_fail; ++ return 0; + + /* Check if all required functions are available in the plugin and store + their handlers. None of the symbols can legitimately be NULL, --- gcc-7-7.3.0.orig/debian/patches/gcc-force-cross-layout.diff +++ gcc-7-7.3.0/debian/patches/gcc-force-cross-layout.diff @@ -0,0 +1,51 @@ +# DP: Add FORCE_CROSS_LAYOUT env var to force a cross directory layout. + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3016,7 +3016,7 @@ + # 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 +@@ -2008,7 +2008,7 @@ + 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 +@@ -2026,7 +2026,7 @@ + SYSTEM_HEADER_DIR=$build_system_header_dir + fi + +-if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then ++if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x || test x$FORCE_CROSS_LAYOUT = xyes; then + if test "x$with_headers" != x && test "x$with_headers" != xyes; then + target_header_dir=$with_headers + elif test "x$with_sysroot" = x; then +@@ -6193,7 +6193,7 @@ + + # 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 +@@ -6200,7 +6200,7 @@ + echo " from ${host} to ${target}." 1>&2 + fi + else +- if test x${host} = x${target} ; then ++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then + echo "Links are now set up to build (on ${build}) a native compiler" 1>&2 + echo " for ${target}." 1>&2 + else --- gcc-7-7.3.0.orig/debian/patches/gcc-fuse-ld-lld-doc.diff +++ gcc-7-7.3.0/debian/patches/gcc-fuse-ld-lld-doc.diff @@ -0,0 +1,17 @@ +# DP: Allow to use lld with -fuse-ld=ld.lld (documentation) + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -11533,6 +11533,10 @@ Use the @command{bfd} linker instead of + @opindex fuse-ld=gold + Use the @command{gold} linker instead of the default linker. + ++@item -fuse-ld=lld ++@opindex fuse-ld=lld ++Use the LLVM @command{lld} linker instead of the default linker. ++ + @cindex Libraries + @item -l@var{library} + @itemx -l @var{library} --- gcc-7-7.3.0.orig/debian/patches/gcc-fuse-ld-lld.diff +++ gcc-7-7.3.0/debian/patches/gcc-fuse-ld-lld.diff @@ -0,0 +1,83 @@ +# DP: Allow to use lld with -fuse-ld=ld.lld + +Index: b/src/gcc/collect2.c +=================================================================== +--- 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"; +@@ -1004,6 +1006,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 +@@ -1093,7 +1097,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 +@@ -1307,7 +1312,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--; + } +Index: b/src/gcc/common.opt +=================================================================== +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -2635,9 +2635,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) + +Index: b/src/gcc/opts.c +=================================================================== +--- a/src/gcc/opts.c ++++ b/src/gcc/opts.c +@@ -2328,6 +2328,7 @@ common_handle_option (struct gcc_options + + case OPT_fuse_ld_bfd: + case OPT_fuse_ld_gold: ++ case OPT_fuse_ld_lld: + case OPT_fuse_linker_plugin: + /* No-op. Used by the driver and passed to us because it starts with f.*/ + break; --- gcc-7-7.3.0.orig/debian/patches/gcc-gfdl-build.diff +++ gcc-7-7.3.0/debian/patches/gcc-gfdl-build.diff @@ -0,0 +1,39 @@ +# DP: Build a dummy s-tm-texi without access to the texinfo sources + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2406,30 +2406,8 @@ s-tm-texi: $(srcdir)/doc/../doc/tm.texi + # \r is not portable to Solaris tr, therefore we have a special + # case for ASCII. We use \r for other encodings like EBCDIC. + s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in +- $(RUN_GEN) build/genhooks$(build_exeext) -d \ +- $(srcdir)/doc/tm.texi.in > tmp-tm.texi +- case `echo X|tr X '\101'` in \ +- A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \ +- *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \ +- esac +- mv tmp2-tm.texi tmp-tm.texi +- $(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi +- @if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \ +- $(STAMP) $@; \ +- elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \ +- && ( test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ +- ); then \ +- echo >&2 ; \ +- echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ +- false; \ +- else \ +- echo >&2 ; \ +- echo Verify that you have permission to grant a GFDL license for all >&2 ; \ +- echo new text in tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \ +- false; \ +- fi ++ cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi ++ $(STAMP) $@ + + gimple-match.c: s-match gimple-match-head.c ; @true + generic-match.c: s-match generic-match-head.c ; @true --- gcc-7-7.3.0.orig/debian/patches/gcc-hash-style-both.diff +++ gcc-7-7.3.0/debian/patches/gcc-hash-style-both.diff @@ -0,0 +1,183 @@ +# DP: Link using --hash-style=both (alpha, amd64, armel, armhf, ia64, i386, powerpc, ppc64, riscv64, s390, sparc) + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=both. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +2009-12-21 Matthias Klose + + * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=both. + +2012-11-17 Matthias Klose + + * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=both. + +2018-03-02 Aurelien Jarno + + * config/riscv/linux.h (LINK_SPEC): Add --hash-style=both. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +Index: b/src/gcc/config/alpha/linux-elf.h +=================================================================== +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +Index: b/src/gcc/config/ia64/linux.h +=================================================================== +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC " --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/rs6000/linux64.h +=================================================================== +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -385,11 +385,11 @@ + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}" + +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -788,7 +788,7 @@ + #define GNU_USER_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +Index: b/src/gcc/config/s390/linux.h +=================================================================== +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -65,7 +65,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +Index: b/src/gcc/config/sparc/linux.h +=================================================================== +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -86,7 +86,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/arm/linux-elf.h +=================================================================== +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -67,6 +67,7 @@ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ + -X \ ++ --hash-style=both \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +Index: b/src/gcc/config/i386/gnu-user.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -74,7 +74,7 @@ + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +Index: b/src/gcc/config/i386/gnu-user64.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -56,6 +56,7 @@ + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/aarch64/aarch64-linux.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -24,6 +24,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1" + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=both \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +Index: b/src/gcc/config/riscv/linux.h +=================================================================== +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -50,6 +50,7 @@ + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + + #define LINK_SPEC "\ ++-hash-style=both \ + -melf" XLEN_SPEC "lriscv \ + %{shared} \ + {!shared: \ --- gcc-7-7.3.0.orig/debian/patches/gcc-hash-style-gnu.diff +++ gcc-7-7.3.0/debian/patches/gcc-hash-style-gnu.diff @@ -0,0 +1,185 @@ +# 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 +@@ -469,12 +469,12 @@ 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: \ + %{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: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \ + %(link_os_extra_spec64)" +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -810,7 +810,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: \ + %{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 @@ 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 +@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. + #define ICACHE_FLUSH_FUNC "__riscv_flush_icache" + + #define LINK_SPEC "\ ++-hash-style=gnu \ + -melf" XLEN_SPEC "lriscv \ + %{shared} \ + %{!shared: \ --- gcc-7-7.3.0.orig/debian/patches/gcc-hppa-caller-copies-ABI.diff +++ gcc-7-7.3.0/debian/patches/gcc-hppa-caller-copies-ABI.diff @@ -0,0 +1,18 @@ +# DP: Switch hppa-linux to caller copies ABI (as done in GCC 8). + +2018-01-16 John David Anglin + + * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller + copies. + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -1339,7 +1339,7 @@ + gas=yes gnu_ld=yes + ;; + hppa*-*-linux*) +- target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS" ++ target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES" + tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \ + pa/pa32-regs.h pa/pa32-linux.h" + tmake_file="${tmake_file} pa/t-linux" --- gcc-7-7.3.0.orig/debian/patches/gcc-ice-apport.diff +++ gcc-7-7.3.0/debian/patches/gcc-ice-apport.diff @@ -0,0 +1,24 @@ +# DP: Report an ICE to apport (if apport is available +# DP: and the environment variable GCC_NOAPPORT is not set) + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -6903,6 +6903,16 @@ do_report_bug (const char **new_argv, co + fflush(stderr); + free(cmd); + } ++ if (!env.get ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK)) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file) ++ + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", ++ new_argv[0], *out_file); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; --- gcc-7-7.3.0.orig/debian/patches/gcc-ice-dump.diff +++ gcc-7-7.3.0/debian/patches/gcc-ice-dump.diff @@ -0,0 +1,41 @@ +# DP: For ICEs, dump the preprocessed source file to stderr +# DP: when in a distro build environment. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -3163,7 +3163,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)) +@@ -6885,8 +6886,23 @@ do_report_bug (const char **new_argv, co + + if (status == ATTEMPT_STATUS_SUCCESS) + { ++ const char *deb_build_options = env.get("DEB_BUILD_OPTIONS"); ++ + fnotice (stderr, "Preprocessed source stored into %s file," + " please attach this to your bugreport.\n", *out_file); ++ if (deb_build_options) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); ++ ++ sprintf(cmd, "/usr/bin/awk '{print \"%d:\", $0}' %s >&2", getpid(), *out_file); ++ fprintf(stderr, "=== BEGIN GCC DUMP ===\n"); ++ fflush(stderr); ++ system(cmd); ++ fflush(stderr); ++ fprintf(stderr, "=== END GCC DUMP ===\n"); ++ fflush(stderr); ++ free(cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; --- gcc-7-7.3.0.orig/debian/patches/gcc-linaro-doc.diff +++ gcc-7-7.3.0/debian/patches/gcc-linaro-doc.diff @@ -0,0 +1,180 @@ +# DP: Changes for the Linaro 7-2018.04 snapshot (documentation). + +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -1097,14 +1097,18 @@ for each target is given below. + + @table @code + @item arm*-*-* +-@var{list} is one of@code{default}, @code{aprofile} or @code{rmprofile}. +-Specifying @code{default} is equivalent to omitting this option, ie. only the +-default runtime library will be enabled. Specifying @code{aprofile} or +-@code{rmprofile} builds multilibs for a combination of ISA, architecture, +-FPU available and floating-point ABI. ++@var{list} is a comma separated list of @code{aprofile} and @code{rmprofile} ++to build multilibs for A or R and M architecture profiles respectively. Note ++that, due to some limitation of the current multilib framework, using the ++combined @code{aprofile,rmprofile} multilibs selects in some cases a less ++optimal multilib than when using the multilib profile for the architecture ++targetted. The special value @code{default} is also accepted and is equivalent ++to omitting the option, ie. only the default run-time library will be enabled. + + The table below gives the combination of ISAs, architectures, FPUs and + floating-point ABIs for which multilibs are built for each accepted value. ++The union of these options is considered when specifying both @code{aprofile} ++and @code{rmprofile}. + + @multitable @columnfractions .15 .28 .30 + @item Option @tab aprofile @tab rmprofile +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -580,15 +580,14 @@ Objective-C and Objective-C++ Dialects}. + -mgeneral-regs-only @gol + -mcmodel=tiny -mcmodel=small -mcmodel=large @gol + -mstrict-align @gol +--momit-leaf-frame-pointer -mno-omit-leaf-frame-pointer @gol ++-momit-leaf-frame-pointer @gol + -mtls-dialect=desc -mtls-dialect=traditional @gol + -mtls-size=@var{size} @gol +--mfix-cortex-a53-835769 -mno-fix-cortex-a53-835769 @gol +--mfix-cortex-a53-843419 -mno-fix-cortex-a53-843419 @gol +--mlow-precision-recip-sqrt -mno-low-precision-recip-sqrt@gol +--mlow-precision-sqrt -mno-low-precision-sqrt@gol +--mlow-precision-div -mno-low-precision-div @gol +--march=@var{name} -mcpu=@var{name} -mtune=@var{name}} ++-mfix-cortex-a53-835769 -mfix-cortex-a53-843419 @gol ++-mlow-precision-recip-sqrt -mlow-precision-sqrt -mlow-precision-div @gol ++-mpc-relative-literal-loads @gol ++-msign-return-address=@var{scope} @gol ++-march=@var{name} -mcpu=@var{name} -mtune=@var{name} -moverride=@var{string}} + + @emph{Adapteva Epiphany Options} + @gccoptlist{-mhalf-reg-file -mprefer-short-insn-regs @gol +@@ -13967,7 +13966,7 @@ support for the ARMv8.2-A architecture extensions. + + The value @samp{armv8.1-a} implies @samp{armv8-a} and enables compiler + support for the ARMv8.1-A architecture extension. In particular, it +-enables the @samp{+crc} and @samp{+lse} features. ++enables the @samp{+crc}, @samp{+lse}, and @samp{+rdma} features. + + The value @samp{native} is available on native AArch64 GNU/Linux and + causes the compiler to pick the architecture of the host system. This +@@ -14040,8 +14039,10 @@ across releases. + This option is only intended to be useful when developing GCC. + + @item -mpc-relative-literal-loads ++@itemx -mno-pc-relative-literal-loads + @opindex mpc-relative-literal-loads +-Enable PC-relative literal loads. With this option literal pools are ++@opindex mno-pc-relative-literal-loads ++Enable or disable PC-relative literal loads. With this option literal pools are + accessed using a single instruction and emitted after each function. This + limits the maximum size of functions to 1MB. This is enabled by default for + @option{-mcmodel=tiny}. +@@ -14080,8 +14081,17 @@ instructions. This is on by default for all possible values for options + @item lse + Enable Large System Extension instructions. This is on by default for + @option{-march=armv8.1-a}. ++@item rdma ++Enable Round Double Multiply Accumulate instructions. This is on by default ++for @option{-march=armv8.1-a}. + @item fp16 + Enable FP16 extension. This also enables floating-point instructions. ++@item rcpc ++Enable the RcPc extension. This does not change code generation from GCC, ++but is passed on to the assembler, enabling inline asm statements to use ++instructions from the RcPc extension. ++@item dotprod ++Enable the Dot Product extension. This also enables Advanced SIMD instructions. + + @end table + +@@ -15095,6 +15105,15 @@ ARMv8.2-A architecture with the optional FP16 instructions extension. + This also enables the features provided by @option{-march=armv8.1-a} + and implies @option{-mfp16-format=ieee}. + ++@option{-march=armv8.2-a+dotprod} enables compiler support for the ++ARMv8.2-A architecture with the optional Dot Product instructions extension. ++This also enables the features provided by @option{-march=armv8.1-a}. ++ ++@option{-march=armv8.2-a+fp16+dotprod} enables compiler support for the ++ARMv8.2-A architecture with the optional FP16 and Dot Product instructions ++extension. This also enables the features provided by @option{-march=armv8.1-a} ++and implies @option{-mfp16-format=ieee}. ++ + @option{-march=native} causes the compiler to auto-detect the architecture + of the build computer. At present, this feature is only supported on + GNU/Linux, and not all architectures are recognized. If the auto-detect +--- a/src/gcc/doc/sourcebuild.texi ++++ b/src/gcc/doc/sourcebuild.texi +@@ -1666,6 +1666,17 @@ ARM target supports executing instructions from ARMv8.2 with the FP16 + extension. Some multilibs may be incompatible with these options. + Implies arm_v8_2a_fp16_neon_ok and arm_v8_2a_fp16_scalar_hw. + ++@item arm_v8_2a_dotprod_neon_ok ++@anchor{arm_v8_2a_dotprod_neon_ok} ++ARM target supports options to generate instructions from ARMv8.2 with ++the Dot Product extension. Some multilibs may be incompatible with these ++options. ++ ++@item arm_v8_2a_dotprod_neon_hw ++ARM target supports executing instructions from ARMv8.2 with the Dot ++Product extension. Some multilibs may be incompatible with these options. ++Implies arm_v8_2a_dotprod_neon_ok. ++ + @item arm_prefer_ldrd_strd + ARM target prefers @code{LDRD} and @code{STRD} instructions over + @code{LDM} and @code{STM} instructions. +@@ -2241,6 +2252,11 @@ supported by the target; see the + @ref{arm_v8_2a_fp16_neon_ok,,arm_v8_2a_fp16_neon_ok} effective target + keyword. + ++@item arm_v8_2a_dotprod_neon ++Add options for ARMv8.2 with Adv.SIMD Dot Product support, if this is ++supported by the target; see the ++@ref{arm_v8_2a_dotprod_neon_ok} effective target keyword. ++ + @item bind_pic_locally + Add the target-specific flags needed to enable functions to bind + locally when using pic/PIC passes in the testsuite. +@@ -2280,6 +2296,11 @@ the codeset to convert to. + Skip the test if the target does not support profiling with option + @var{profopt}. + ++@item dg-require-stack-check @var{check} ++Skip the test if the target does not support the @code{-fstack-check} ++option. If @var{check} is @code{""}, support for @code{-fstack-check} ++is checked, for @code{-fstack-check=("@var{check}")} otherwise. ++ + @item dg-require-visibility @var{vis} + Skip the test if the target does not support the @code{visibility} attribute. + If @var{vis} is @code{""}, support for @code{visibility("hidden")} is +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -3684,6 +3684,15 @@ such as the result of @code{get_frame_size ()} and the tables of + registers @code{df_regs_ever_live_p} and @code{call_used_regs}. + @end defmac + ++@deftypefn {Target Hook} void TARGET_COMPUTE_FRAME_LAYOUT (void) ++This target hook is called once each time the frame layout needs to be ++recalculated. The calculations can be cached by the target and can then ++be used by @code{INITIAL_ELIMINATION_OFFSET} instead of re-computing the ++layout on every invocation of that hook. This is particularly useful ++for targets that have an expensive frame layout function. Implementing ++this callback is optional. ++@end deftypefn ++ + @node Stack Arguments + @subsection Passing Function Arguments on the Stack + @cindex arguments on stack +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -3213,6 +3213,8 @@ such as the result of @code{get_frame_size ()} and the tables of + registers @code{df_regs_ever_live_p} and @code{call_used_regs}. + @end defmac + ++@hook TARGET_COMPUTE_FRAME_LAYOUT ++ + @node Stack Arguments + @subsection Passing Function Arguments on the Stack + @cindex arguments on stack --- gcc-7-7.3.0.orig/debian/patches/gcc-linaro-no-macros.diff +++ gcc-7-7.3.0/debian/patches/gcc-linaro-no-macros.diff @@ -0,0 +1,92 @@ +# DP : Don't add the __LINARO_RELEASE__ and __LINARO_SPIN__ macros for distro builds. + +Index: b/src/gcc/cppbuiltin.c +=================================================================== +--- a/src/gcc/cppbuiltin.c ++++ b/src/gcc/cppbuiltin.c +@@ -53,41 +53,18 @@ parse_basever (int *major, int *minor, i + *patchlevel = s_patchlevel; + } + +-/* Parse a LINAROVER version string of the format "M.m-year.month[-spin][~dev]" +- to create Linaro release number YYYYMM and spin version. */ +-static void +-parse_linarover (int *release, int *spin) +-{ +- static int s_year = -1, s_month, s_spin; +- +- if (s_year == -1) +- if (sscanf (LINAROVER, "%*[^-]-%d.%d-%d", &s_year, &s_month, &s_spin) != 3) +- { +- sscanf (LINAROVER, "%*[^-]-%d.%d", &s_year, &s_month); +- s_spin = 0; +- } +- +- if (release) +- *release = s_year * 100 + s_month; +- +- if (spin) +- *spin = s_spin; +-} + + /* Define __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ and __VERSION__. */ + static void + define__GNUC__ (cpp_reader *pfile) + { +- int major, minor, patchlevel, linaro_release, linaro_spin; ++ int major, minor, patchlevel; + + parse_basever (&major, &minor, &patchlevel); +- parse_linarover (&linaro_release, &linaro_spin); + cpp_define_formatted (pfile, "__GNUC__=%d", major); + cpp_define_formatted (pfile, "__GNUC_MINOR__=%d", minor); + cpp_define_formatted (pfile, "__GNUC_PATCHLEVEL__=%d", patchlevel); + cpp_define_formatted (pfile, "__VERSION__=\"%s\"", version_string); +- cpp_define_formatted (pfile, "__LINARO_RELEASE__=%d", linaro_release); +- cpp_define_formatted (pfile, "__LINARO_SPIN__=%d", linaro_spin); + cpp_define_formatted (pfile, "__ATOMIC_RELAXED=%d", MEMMODEL_RELAXED); + cpp_define_formatted (pfile, "__ATOMIC_SEQ_CST=%d", MEMMODEL_SEQ_CST); + cpp_define_formatted (pfile, "__ATOMIC_ACQUIRE=%d", MEMMODEL_ACQUIRE); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -845,12 +845,10 @@ BASEVER := $(srcdir)/BASE-VER # 4.x + DEVPHASE := $(srcdir)/DEV-PHASE # experimental, prerelease, "" + DATESTAMP := $(srcdir)/DATESTAMP # YYYYMMDD or empty + REVISION := $(srcdir)/REVISION # [BRANCH revision XXXXXX] +-LINAROVER := $(srcdir)/LINARO-VERSION # M.x-YYYY.MM[-S][~dev] + + BASEVER_c := $(shell cat $(BASEVER)) + DEVPHASE_c := $(shell cat $(DEVPHASE)) + DATESTAMP_c := $(shell cat $(DATESTAMP)) +-LINAROVER_c := $(shell cat $(LINAROVER)) + + ifeq (,$(wildcard $(REVISION))) + REVISION_c := +@@ -877,7 +875,6 @@ DATESTAMP_s := \ + "\"$(if $(DEVPHASE_c)$(filter-out 0,$(PATCHLEVEL_c)), $(DATESTAMP_c))\"" + PKGVERSION_s:= "\"@PKGVERSION@\"" + BUGURL_s := "\"@REPORT_BUGS_TO@\"" +-LINAROVER_s := "\"$(LINAROVER_c)\"" + + PKGVERSION := @PKGVERSION@ + BUGURL_TEXI := @REPORT_BUGS_TEXI@ +@@ -2804,9 +2801,8 @@ PREPROCESSOR_DEFINES = \ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + +-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \ +- -DLINAROVER=$(LINAROVER_s) +-cppbuiltin.o: $(BASEVER) $(LINAROVER) ++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) ++cppbuiltin.o: $(BASEVER) + + CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES) + +Index: b/src/gcc/LINARO-VERSION +=================================================================== +--- a/src/gcc/LINARO-VERSION ++++ /dev/null +@@ -1,1 +0,0 @@ +-7.3-2018.04~dev --- gcc-7-7.3.0.orig/debian/patches/gcc-linaro.diff +++ gcc-7-7.3.0/debian/patches/gcc-linaro.diff @@ -0,0 +1,8916 @@ +# DP: Changes for the Linaro 7-2018.04 snapshot. + +MSG=$(git log origin/linaro/gcc-7-branch --format=format:"%s" -n 1 --grep "Merge branches"); SVN=${MSG##* }; git log origin/gcc-7-branch --format=format:"%H" -n 1 --grep "gcc-7-branch@${SVN%.}" + +LANG=C git diff --no-renames b2b69ab68bc9da935ca6cce695f7aae5bee1503b 9fd777e570c1f99ada82b1dfc1147e7009a0f7b9 \ + | egrep -v '^(diff|index) ' \ + | filterdiff --strip=1 --addoldprefix=a/src/ --addnewprefix=b/src/ \ + | sed 's,a/src//dev/null,/dev/null,' + +--- /dev/null ++++ b/src/gcc/LINARO-VERSION +@@ -0,0 +1 @@ ++7.3-2018.04~dev +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -845,10 +845,12 @@ BASEVER := $(srcdir)/BASE-VER # 4.x.y + 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 := +@@ -875,6 +877,7 @@ 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@ +@@ -2801,8 +2804,9 @@ PREPROCESSOR_DEFINES = \ + -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) + +--- a/src/gcc/ccmp.c ++++ b/src/gcc/ccmp.c +@@ -38,6 +38,29 @@ along with GCC; see the file COPYING3. If not see + #include "ccmp.h" + #include "predict.h" + ++/* Check whether T is a simple boolean variable or a SSA name ++ set by a comparison operator in the same basic block. */ ++static bool ++ccmp_tree_comparison_p (tree t, basic_block bb) ++{ ++ gimple *g = get_gimple_for_ssa_name (t); ++ tree_code tcode; ++ ++ /* If we have a boolean variable allow it and generate a compare ++ to zero reg when expanding. */ ++ if (!g) ++ return (TREE_CODE (TREE_TYPE (t)) == BOOLEAN_TYPE); ++ ++ /* Check to see if SSA name is set by a comparison operator in ++ the same basic block. */ ++ if (!is_gimple_assign (g)) ++ return false; ++ if (bb != gimple_bb (g)) ++ return false; ++ tcode = gimple_assign_rhs_code (g); ++ return TREE_CODE_CLASS (tcode) == tcc_comparison; ++} ++ + /* The following functions expand conditional compare (CCMP) instructions. + Here is a short description about the over all algorithm: + * ccmp_candidate_p is used to identify the CCMP candidate +@@ -71,49 +94,69 @@ along with GCC; see the file COPYING3. If not see + static bool + ccmp_candidate_p (gimple *g) + { +- tree rhs = gimple_assign_rhs_to_tree (g); ++ tree rhs; + tree lhs, op0, op1; + gimple *gs0, *gs1; +- tree_code tcode, tcode0, tcode1; +- tcode = TREE_CODE (rhs); ++ tree_code tcode; ++ basic_block bb; ++ ++ if (!g) ++ return false; + ++ rhs = gimple_assign_rhs_to_tree (g); ++ tcode = TREE_CODE (rhs); + if (tcode != BIT_AND_EXPR && tcode != BIT_IOR_EXPR) + return false; + + lhs = gimple_assign_lhs (g); + op0 = TREE_OPERAND (rhs, 0); + op1 = TREE_OPERAND (rhs, 1); ++ bb = gimple_bb (g); + + if ((TREE_CODE (op0) != SSA_NAME) || (TREE_CODE (op1) != SSA_NAME) + || !has_single_use (lhs)) + return false; + +- gs0 = get_gimple_for_ssa_name (op0); +- gs1 = get_gimple_for_ssa_name (op1); +- if (!gs0 || !gs1 || !is_gimple_assign (gs0) || !is_gimple_assign (gs1) +- /* g, gs0 and gs1 must be in the same basic block, since current stage +- is out-of-ssa. We can not guarantee the correctness when forwording +- the gs0 and gs1 into g whithout DATAFLOW analysis. */ +- || gimple_bb (gs0) != gimple_bb (gs1) +- || gimple_bb (gs0) != gimple_bb (g)) +- return false; ++ gs0 = get_gimple_for_ssa_name (op0); /* gs0 may be NULL */ ++ gs1 = get_gimple_for_ssa_name (op1); /* gs1 may be NULL */ + +- tcode0 = gimple_assign_rhs_code (gs0); +- tcode1 = gimple_assign_rhs_code (gs1); +- if (TREE_CODE_CLASS (tcode0) == tcc_comparison +- && TREE_CODE_CLASS (tcode1) == tcc_comparison) ++ if (ccmp_tree_comparison_p (op0, bb) && ccmp_tree_comparison_p (op1, bb)) + return true; +- if (TREE_CODE_CLASS (tcode0) == tcc_comparison +- && ccmp_candidate_p (gs1)) ++ if (ccmp_tree_comparison_p (op0, bb) && ccmp_candidate_p (gs1)) + return true; +- else if (TREE_CODE_CLASS (tcode1) == tcc_comparison +- && ccmp_candidate_p (gs0)) ++ if (ccmp_tree_comparison_p (op1, bb) && ccmp_candidate_p (gs0)) + return true; + /* We skip ccmp_candidate_p (gs1) && ccmp_candidate_p (gs0) since +- there is no way to set the CC flag. */ ++ there is no way to set and maintain the CC flag on both sides of ++ the logical operator at the same time. */ + return false; + } + ++/* Extract the comparison we want to do from the tree. */ ++void ++get_compare_parts (tree t, int *up, rtx_code *rcode, ++ tree *rhs1, tree *rhs2) ++{ ++ tree_code code; ++ gimple *g = get_gimple_for_ssa_name (t); ++ if (g) ++ { ++ *up = TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (g))); ++ code = gimple_assign_rhs_code (g); ++ *rcode = get_rtx_code (code, *up); ++ *rhs1 = gimple_assign_rhs1 (g); ++ *rhs2 = gimple_assign_rhs2 (g); ++ } ++ else ++ { ++ /* If g is not a comparison operator create a compare to zero. */ ++ *up = 1; ++ *rcode = NE; ++ *rhs1 = t; ++ *rhs2 = build_zero_cst (TREE_TYPE (t)); ++ } ++} ++ + /* PREV is a comparison with the CC register which represents the + result of the previous CMP or CCMP. The function expands the + next compare based on G which is ANDed/ORed with the previous +@@ -121,20 +164,16 @@ ccmp_candidate_p (gimple *g) + PREP_SEQ returns all insns to prepare opearands for compare. + GEN_SEQ returns all compare insns. */ + static rtx +-expand_ccmp_next (gimple *g, tree_code code, rtx prev, ++expand_ccmp_next (tree op, tree_code code, rtx prev, + rtx_insn **prep_seq, rtx_insn **gen_seq) + { + rtx_code rcode; +- int unsignedp = TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (g))); +- +- gcc_assert (code == BIT_AND_EXPR || code == BIT_IOR_EXPR); +- +- rcode = get_rtx_code (gimple_assign_rhs_code (g), unsignedp); ++ int unsignedp; ++ tree rhs1, rhs2; + ++ get_compare_parts(op, &unsignedp, &rcode, &rhs1, &rhs2); + return targetm.gen_ccmp_next (prep_seq, gen_seq, prev, rcode, +- gimple_assign_rhs1 (g), +- gimple_assign_rhs2 (g), +- get_rtx_code (code, 0)); ++ rhs1, rhs2, get_rtx_code (code, 0)); + } + + /* Expand conditional compare gimple G. A typical CCMP sequence is like: +@@ -153,39 +192,42 @@ expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, rtx_insn **gen_seq) + { + tree exp = gimple_assign_rhs_to_tree (g); + tree_code code = TREE_CODE (exp); +- gimple *gs0 = get_gimple_for_ssa_name (TREE_OPERAND (exp, 0)); +- gimple *gs1 = get_gimple_for_ssa_name (TREE_OPERAND (exp, 1)); ++ basic_block bb = gimple_bb (g); ++ ++ tree op0 = TREE_OPERAND (exp, 0); ++ tree op1 = TREE_OPERAND (exp, 1); ++ gimple *gs0 = get_gimple_for_ssa_name (op0); ++ gimple *gs1 = get_gimple_for_ssa_name (op1); + rtx tmp; +- tree_code code0 = gimple_assign_rhs_code (gs0); +- tree_code code1 = gimple_assign_rhs_code (gs1); + + gcc_assert (code == BIT_AND_EXPR || code == BIT_IOR_EXPR); +- gcc_assert (gs0 && gs1 && is_gimple_assign (gs0) && is_gimple_assign (gs1)); + +- if (TREE_CODE_CLASS (code0) == tcc_comparison) ++ if (ccmp_tree_comparison_p (op0, bb)) + { +- if (TREE_CODE_CLASS (code1) == tcc_comparison) ++ if (ccmp_tree_comparison_p (op1, bb)) + { + int unsignedp0, unsignedp1; + rtx_code rcode0, rcode1; ++ tree logical_op0_rhs1, logical_op0_rhs2; ++ tree logical_op1_rhs1, logical_op1_rhs2; + int speed_p = optimize_insn_for_speed_p (); ++ + rtx tmp2 = NULL_RTX, ret = NULL_RTX, ret2 = NULL_RTX; + unsigned cost1 = MAX_COST; + unsigned cost2 = MAX_COST; + +- unsignedp0 = TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (gs0))); +- unsignedp1 = TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (gs1))); +- rcode0 = get_rtx_code (code0, unsignedp0); +- rcode1 = get_rtx_code (code1, unsignedp1); ++ get_compare_parts (op0, &unsignedp0, &rcode0, ++ &logical_op0_rhs1, &logical_op0_rhs2); ++ ++ get_compare_parts (op1, &unsignedp1, &rcode1, ++ &logical_op1_rhs1, &logical_op1_rhs2); + + rtx_insn *prep_seq_1, *gen_seq_1; + tmp = targetm.gen_ccmp_first (&prep_seq_1, &gen_seq_1, rcode0, +- gimple_assign_rhs1 (gs0), +- gimple_assign_rhs2 (gs0)); +- ++ logical_op0_rhs1, logical_op0_rhs2); + if (tmp != NULL) + { +- ret = expand_ccmp_next (gs1, code, tmp, &prep_seq_1, &gen_seq_1); ++ ret = expand_ccmp_next (op1, code, tmp, &prep_seq_1, &gen_seq_1); + cost1 = seq_cost (prep_seq_1, speed_p); + cost1 += seq_cost (gen_seq_1, speed_p); + } +@@ -197,27 +239,22 @@ expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, rtx_insn **gen_seq) + rtx_insn *prep_seq_2, *gen_seq_2; + if (tmp == NULL || cost1 < COSTS_N_INSNS (25)) + tmp2 = targetm.gen_ccmp_first (&prep_seq_2, &gen_seq_2, rcode1, +- gimple_assign_rhs1 (gs1), +- gimple_assign_rhs2 (gs1)); +- ++ logical_op1_rhs1, logical_op1_rhs2); + if (!tmp && !tmp2) + return NULL_RTX; +- + if (tmp2 != NULL) + { +- ret2 = expand_ccmp_next (gs0, code, tmp2, &prep_seq_2, ++ ret2 = expand_ccmp_next (op0, code, tmp2, &prep_seq_2, + &gen_seq_2); + cost2 = seq_cost (prep_seq_2, speed_p); + cost2 += seq_cost (gen_seq_2, speed_p); + } +- + if (cost2 < cost1) + { + *prep_seq = prep_seq_2; + *gen_seq = gen_seq_2; + return ret2; + } +- + *prep_seq = prep_seq_1; + *gen_seq = gen_seq_1; + return ret; +@@ -227,28 +264,18 @@ expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, rtx_insn **gen_seq) + tmp = expand_ccmp_expr_1 (gs1, prep_seq, gen_seq); + if (!tmp) + return NULL_RTX; +- +- return expand_ccmp_next (gs0, code, tmp, prep_seq, gen_seq); ++ return expand_ccmp_next (op0, code, tmp, prep_seq, gen_seq); + } + } + else + { + gcc_assert (gimple_assign_rhs_code (gs0) == BIT_AND_EXPR + || gimple_assign_rhs_code (gs0) == BIT_IOR_EXPR); +- +- if (TREE_CODE_CLASS (gimple_assign_rhs_code (gs1)) == tcc_comparison) +- { +- tmp = expand_ccmp_expr_1 (gs0, prep_seq, gen_seq); +- if (!tmp) +- return NULL_RTX; +- +- return expand_ccmp_next (gs1, code, tmp, prep_seq, gen_seq); +- } +- else +- { +- gcc_assert (gimple_assign_rhs_code (gs1) == BIT_AND_EXPR +- || gimple_assign_rhs_code (gs1) == BIT_IOR_EXPR); +- } ++ gcc_assert (ccmp_tree_comparison_p (op1, bb)); ++ tmp = expand_ccmp_expr_1 (gs0, prep_seq, gen_seq); ++ if (!tmp) ++ return NULL_RTX; ++ return expand_ccmp_next (op1, code, tmp, prep_seq, gen_seq); + } + + return NULL_RTX; +@@ -258,7 +285,7 @@ expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, rtx_insn **gen_seq) + Return NULL_RTX if G is not a legal candidate or expand fail. + Otherwise return the target. */ + rtx +-expand_ccmp_expr (gimple *g) ++expand_ccmp_expr (gimple *g, machine_mode mode) + { + rtx_insn *last; + rtx tmp; +@@ -275,7 +302,6 @@ expand_ccmp_expr (gimple *g) + { + insn_code icode; + machine_mode cc_mode = CCmode; +- tree lhs = gimple_assign_lhs (g); + rtx_code cmp_code = GET_CODE (tmp); + + #ifdef SELECT_CC_MODE +@@ -284,7 +310,6 @@ expand_ccmp_expr (gimple *g) + icode = optab_handler (cstore_optab, cc_mode); + if (icode != CODE_FOR_nothing) + { +- machine_mode mode = TYPE_MODE (TREE_TYPE (lhs)); + rtx target = gen_reg_rtx (mode); + + emit_insn (prep_seq); +@@ -300,4 +325,3 @@ expand_ccmp_expr (gimple *g) + delete_insns_since (last); + return NULL_RTX; + } +- +--- a/src/gcc/ccmp.h ++++ b/src/gcc/ccmp.h +@@ -20,6 +20,6 @@ along with GCC; see the file COPYING3. If not see + #ifndef GCC_CCMP_H + #define GCC_CCMP_H + +-extern rtx expand_ccmp_expr (gimple *); ++extern rtx expand_ccmp_expr (gimple *, machine_mode); + + #endif /* GCC_CCMP_H */ +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -3809,34 +3809,19 @@ case "${target}" in + # Add extra multilibs + if test "x$with_multilib_list" != x; then + arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'` +- case ${arm_multilibs} in +- aprofile) +- # Note that arm/t-aprofile is a +- # stand-alone make file fragment to be +- # used only with itself. We do not +- # specifically use the +- # TM_MULTILIB_OPTION framework because +- # this shorthand is more +- # pragmatic. +- tmake_profile_file="arm/t-aprofile" +- ;; +- rmprofile) +- # Note that arm/t-rmprofile is a +- # stand-alone make file fragment to be +- # used only with itself. We do not +- # specifically use the +- # TM_MULTILIB_OPTION framework because +- # this shorthand is more +- # pragmatic. +- tmake_profile_file="arm/t-rmprofile" +- ;; +- default) +- ;; +- *) +- echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2 +- exit 1 +- ;; +- esac ++ if test "x${arm_multilibs}" != xdefault ; then ++ for arm_multilib in ${arm_multilibs}; do ++ case ${arm_multilib} in ++ aprofile|rmprofile) ++ tmake_profile_file="arm/t-multilib" ++ ;; ++ *) ++ echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2 ++ exit 1 ++ ;; ++ esac ++ done ++ fi + + if test "x${tmake_profile_file}" != x ; then + # arm/t-aprofile and arm/t-rmprofile are only +@@ -3853,6 +3838,7 @@ case "${target}" in + fi + + tmake_file="${tmake_file} ${tmake_profile_file}" ++ TM_MULTILIB_CONFIG="$with_multilib_list" + fi + fi + ;; +--- a/src/gcc/config/aarch64/aarch64-builtins.c ++++ b/src/gcc/config/aarch64/aarch64-builtins.c +@@ -168,6 +168,11 @@ aarch64_types_quadop_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_none, qualifier_none, qualifier_none, + qualifier_none, qualifier_lane_index }; + #define TYPES_QUADOP_LANE (aarch64_types_quadop_lane_qualifiers) ++static enum aarch64_type_qualifiers ++aarch64_types_quadopu_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned, ++ qualifier_unsigned, qualifier_lane_index }; ++#define TYPES_QUADOPU_LANE (aarch64_types_quadopu_lane_qualifiers) + + static enum aarch64_type_qualifiers + aarch64_types_binop_imm_p_qualifiers[SIMD_MAX_BUILTIN_ARGS] +@@ -754,7 +759,7 @@ aarch64_init_simd_builtins (void) + for (i = 0; i < ARRAY_SIZE (aarch64_simd_builtin_data); i++, fcode++) + { + bool print_type_signature_p = false; +- char type_signature[SIMD_MAX_BUILTIN_ARGS] = { 0 }; ++ char type_signature[SIMD_MAX_BUILTIN_ARGS + 1] = { 0 }; + aarch64_simd_builtin_datum *d = &aarch64_simd_builtin_data[i]; + char namebuf[60]; + tree ftype = NULL; +--- a/src/gcc/config/aarch64/aarch64-c.c ++++ b/src/gcc/config/aarch64/aarch64-c.c +@@ -106,6 +106,7 @@ 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); + + cpp_undef (pfile, "__AARCH64_CMODEL_TINY__"); + cpp_undef (pfile, "__AARCH64_CMODEL_SMALL__"); +--- a/src/gcc/config/aarch64/aarch64-cores.def ++++ b/src/gcc/config/aarch64/aarch64-cores.def +@@ -43,7 +43,7 @@ + VARIANT is the variant of the CPU. In a GNU/Linux system it can found + in /proc/cpuinfo. If this is -1, this means it can match any variant. */ + +-/* V8 Architecture Processors. */ ++/* ARMv8-A Architecture Processors. */ + + /* ARM ('A') cores. */ + AARCH64_CORE("cortex-a35", cortexa35, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa35, 0x41, 0xd04, -1) +@@ -52,33 +52,35 @@ AARCH64_CORE("cortex-a57", cortexa57, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AA + AARCH64_CORE("cortex-a72", cortexa72, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, 0x41, 0xd08, -1) + AARCH64_CORE("cortex-a73", cortexa73, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa73, 0x41, 0xd09, -1) + +-/* Samsung ('S') cores. */ +-AARCH64_CORE("exynos-m1", exynosm1, exynosm1, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, exynosm1, 0x53, 0x001, -1) +- +-/* Qualcomm ('Q') cores. */ +-AARCH64_CORE("falkor", falkor, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, qdf24xx, 0x51, 0xC00, -1) +-AARCH64_CORE("qdf24xx", qdf24xx, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, qdf24xx, 0x51, 0xC00, -1) +- + /* Cavium ('C') cores. */ + AARCH64_CORE("thunderx", thunderx, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a0, -1) + /* Do not swap around "thunderxt88p1" and "thunderxt88", + this order is required to handle variant correctly. */ +-AARCH64_CORE("thunderxt88p1", thunderxt88p1, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a1, 0) +-AARCH64_CORE("thunderxt88", thunderxt88, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a1, -1) ++AARCH64_CORE("thunderxt88p1", thunderxt88p1, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderxt88, 0x43, 0x0a1, 0) ++AARCH64_CORE("thunderxt88", thunderxt88, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderxt88, 0x43, 0x0a1, -1) + AARCH64_CORE("thunderxt81", thunderxt81, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a2, -1) + AARCH64_CORE("thunderxt83", thunderxt83, thunderx, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx, 0x43, 0x0a3, -1) +-AARCH64_CORE("thunderx2t99", thunderx2t99, thunderx2t99, 8_1A, AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x43, 0x0af, -1) + + /* APM ('P') cores. */ + AARCH64_CORE("xgene1", xgene1, xgene1, 8A, AARCH64_FL_FOR_ARCH8, xgene1, 0x50, 0x000, -1) + +-/* V8.1 Architecture Processors. */ ++/* Qualcomm ('Q') cores. */ ++AARCH64_CORE("falkor", falkor, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA, qdf24xx, 0x51, 0xC00, -1) ++AARCH64_CORE("qdf24xx", qdf24xx, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA, qdf24xx, 0x51, 0xC00, -1) ++ ++/* Samsung ('S') cores. */ ++AARCH64_CORE("exynos-m1", exynosm1, exynosm1, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, exynosm1, 0x53, 0x001, -1) ++ ++/* ARMv8.1-A Architecture Processors. */ + + /* Broadcom ('B') cores. */ + AARCH64_CORE("thunderx2t99p1", thunderx2t99p1, thunderx2t99, 8_1A, AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x42, 0x516, -1) + AARCH64_CORE("vulcan", vulcan, thunderx2t99, 8_1A, AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x42, 0x516, -1) + +-/* V8 big.LITTLE implementations. */ ++/* Cavium ('C') cores. */ ++AARCH64_CORE("thunderx2t99", thunderx2t99, thunderx2t99, 8_1A, AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x43, 0x0af, -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) + AARCH64_CORE("cortex-a72.cortex-a53", cortexa72cortexa53, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, 0x41, AARCH64_BIG_LITTLE (0xd08, 0xd03), -1) +--- a/src/gcc/config/aarch64/aarch64-cost-tables.h ++++ b/src/gcc/config/aarch64/aarch64-cost-tables.h +@@ -136,8 +136,8 @@ const struct cpu_cost_table thunderx_extra_costs = + 0, /* Logical. */ + 0, /* Shift. */ + 0, /* Shift_reg. */ +- COSTS_N_INSNS (1), /* Arith_shift. */ +- COSTS_N_INSNS (1), /* Arith_shift_reg. */ ++ COSTS_N_INSNS (1)+1, /* Arith_shift. */ ++ COSTS_N_INSNS (1)+1, /* Arith_shift_reg. */ + COSTS_N_INSNS (1), /* UNUSED: Log_shift. */ + COSTS_N_INSNS (1), /* UNUSED: Log_shift_reg. */ + 0, /* Extend. */ +--- a/src/gcc/config/aarch64/aarch64-fusion-pairs.def ++++ b/src/gcc/config/aarch64/aarch64-fusion-pairs.def +@@ -34,5 +34,6 @@ AARCH64_FUSION_PAIR ("movk+movk", MOVK_MOVK) + AARCH64_FUSION_PAIR ("adrp+ldr", ADRP_LDR) + AARCH64_FUSION_PAIR ("cmp+branch", CMP_BRANCH) + AARCH64_FUSION_PAIR ("aes+aesmc", AES_AESMC) ++AARCH64_FUSION_PAIR ("alu+branch", ALU_BRANCH) + + #undef AARCH64_FUSION_PAIR +--- a/src/gcc/config/aarch64/aarch64-option-extensions.def ++++ b/src/gcc/config/aarch64/aarch64-option-extensions.def +@@ -43,8 +43,8 @@ + AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO | AARCH64_FL_F16, "fp") + + /* Enabling "simd" also enables "fp". +- Disabling "simd" also disables "crypto". */ +-AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO, "asimd") ++ Disabling "simd" also disables "crypto" and "dotprod". */ ++AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO | AARCH64_FL_DOTPROD, "asimd") + + /* Enabling "crypto" also enables "fp", "simd". + Disabling "crypto" just disables "crypto". */ +@@ -60,4 +60,15 @@ AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, "atomics") + Disabling "fp16" just disables "fp16". */ + AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, 0, "fphp asimdhp") + ++/* Enabling or disabling "rcpc" only changes "rcpc". */ ++AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, "lrcpc") ++ ++/* Enabling "rdma" also enables "fp", "simd". ++ Disabling "rdma" just disables "rdma". */ ++AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, "rdma") ++ ++/* Enabling "dotprod" also enables "simd". ++ Disabling "dotprod" only disables "dotprod". */ ++AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, "asimddp") ++ + #undef AARCH64_OPT_EXTENSION +--- a/src/gcc/config/aarch64/aarch64-protos.h ++++ b/src/gcc/config/aarch64/aarch64-protos.h +@@ -203,6 +203,16 @@ struct cpu_approx_modes + const unsigned int recip_sqrt; /* Reciprocal square root. */ + }; + ++/* Cache prefetch settings for prefetch-loop-arrays. */ ++struct cpu_prefetch_tune ++{ ++ const int num_slots; ++ const int l1_cache_size; ++ const int l1_cache_line_size; ++ const int l2_cache_size; ++ const int default_opt_level; ++}; ++ + struct tune_params + { + const struct cpu_cost_table *insn_extra_cost; +@@ -224,9 +234,6 @@ struct tune_params + int min_div_recip_mul_df; + /* Value for aarch64_case_values_threshold; or 0 for the default. */ + unsigned int max_case_values; +- /* Value for PARAM_L1_CACHE_LINE_SIZE; or 0 to use the default. */ +- unsigned int cache_line_size; +- + /* An enum specifying how to take into account CPU autoprefetch capabilities + during instruction scheduling: + - AUTOPREFETCHER_OFF: Do not take autoprefetch capabilities into account. +@@ -244,6 +251,10 @@ struct tune_params + } autoprefetcher_model; + + unsigned int extra_tuning_flags; ++ ++ /* Place prefetch struct pointer at the end to enable type checking ++ errors when tune_params misses elements (e.g., from erroneous merges). */ ++ const struct cpu_prefetch_tune *prefetch; + }; + + #define AARCH64_FUSION_PAIR(x, name) \ +@@ -301,18 +312,22 @@ extern struct tune_params aarch64_tune_params; + + HOST_WIDE_INT aarch64_initial_elimination_offset (unsigned, unsigned); + int aarch64_get_condition_code (rtx); ++bool aarch64_address_valid_for_prefetch_p (rtx, bool); + bool aarch64_bitmask_imm (HOST_WIDE_INT val, machine_mode); + unsigned HOST_WIDE_INT aarch64_and_split_imm1 (HOST_WIDE_INT val_in); + unsigned HOST_WIDE_INT aarch64_and_split_imm2 (HOST_WIDE_INT val_in); + bool aarch64_and_bitmask_imm (unsigned HOST_WIDE_INT val_in, machine_mode mode); + int aarch64_branch_cost (bool, bool); + enum aarch64_symbol_type aarch64_classify_symbolic_expression (rtx); ++bool aarch64_can_const_movi_rtx_p (rtx x, machine_mode mode); + bool aarch64_const_vec_all_same_int_p (rtx, HOST_WIDE_INT); + bool aarch64_constant_address_p (rtx); + bool aarch64_emit_approx_div (rtx, rtx, rtx); + bool aarch64_emit_approx_sqrt (rtx, rtx, bool); ++void aarch64_expand_call (rtx, rtx, bool); + bool aarch64_expand_movmem (rtx *); + bool aarch64_float_const_zero_rtx_p (rtx); ++bool aarch64_float_const_rtx_p (rtx); + bool aarch64_function_arg_regno_p (unsigned); + bool aarch64_fusion_enabled_p (enum aarch64_fusion_pairs); + bool aarch64_gen_movmemqi (rtx *); +@@ -338,9 +353,9 @@ bool aarch64_pad_arg_upward (machine_mode, const_tree); + bool aarch64_pad_reg_upward (machine_mode, const_tree, bool); + bool aarch64_regno_ok_for_base_p (int, bool); + bool aarch64_regno_ok_for_index_p (int, bool); ++bool aarch64_reinterpret_float_as_int (rtx value, unsigned HOST_WIDE_INT *fail); + bool aarch64_simd_check_vect_par_cnst_half (rtx op, machine_mode mode, + bool high); +-bool aarch64_simd_imm_scalar_p (rtx x, machine_mode mode); + bool aarch64_simd_imm_zero_p (rtx, machine_mode); + bool aarch64_simd_scalar_immediate_valid_for_move (rtx, machine_mode); + bool aarch64_simd_shift_imm_p (rtx, machine_mode, bool); +--- a/src/gcc/config/aarch64/aarch64-simd-builtins.def ++++ b/src/gcc/config/aarch64/aarch64-simd-builtins.def +@@ -205,6 +205,14 @@ + BUILTIN_VSDQ_I_DI (BINOP, srshl, 0) + BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0) + ++ /* Implemented by aarch64_{_lane}{q}. */ ++ BUILTIN_VB (TERNOP, sdot, 0) ++ BUILTIN_VB (TERNOPU, udot, 0) ++ BUILTIN_VB (QUADOP_LANE, sdot_lane, 0) ++ BUILTIN_VB (QUADOPU_LANE, udot_lane, 0) ++ BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0) ++ BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0) ++ + BUILTIN_VDQ_I (SHIFTIMM, ashr, 3) + VAR1 (SHIFTIMM, ashr_simd, 0, di) + BUILTIN_VDQ_I (SHIFTIMM, lshr, 3) +--- a/src/gcc/config/aarch64/aarch64-simd.md ++++ b/src/gcc/config/aarch64/aarch64-simd.md +@@ -44,12 +44,12 @@ + (define_insn "aarch64_simd_dup" + [(set (match_operand:VDQ_I 0 "register_operand" "=w, w") + (vec_duplicate:VDQ_I +- (match_operand: 1 "register_operand" "r, w")))] ++ (match_operand: 1 "register_operand" "w,?r")))] + "TARGET_SIMD" + "@ +- dup\\t%0., %1 +- dup\\t%0., %1.[0]" +- [(set_attr "type" "neon_from_gp, neon_dup")] ++ dup\\t%0., %1.[0] ++ dup\\t%0., %1" ++ [(set_attr "type" "neon_dup, neon_from_gp")] + ) + + (define_insn "aarch64_simd_dup" +@@ -105,7 +105,7 @@ + { + case 0: return "ldr\\t%d0, %1"; + case 1: return "str\\t%d1, %0"; +- case 2: return "orr\t%0., %1., %1."; ++ case 2: return "mov\t%0., %1."; + case 3: return "umov\t%0, %1.d[0]"; + case 4: return "fmov\t%d0, %1"; + case 5: return "mov\t%0, %1"; +@@ -136,7 +136,7 @@ + case 1: + return "str\\t%q1, %0"; + case 2: +- return "orr\t%0., %1., %1."; ++ return "mov\t%0., %1."; + case 3: + case 4: + case 5: +@@ -153,6 +153,19 @@ + (set_attr "length" "4,4,4,8,8,8,4")] + ) + ++;; When storing lane zero we can use the normal STR and its more permissive ++;; addressing modes. ++ ++(define_insn "aarch64_store_lane0" ++ [(set (match_operand: 0 "memory_operand" "=m") ++ (vec_select: (match_operand:VALL_F16 1 "register_operand" "w") ++ (parallel [(match_operand 2 "const_int_operand" "n")])))] ++ "TARGET_SIMD ++ && ENDIAN_LANE_N (mode, INTVAL (operands[2])) == 0" ++ "str\\t%1, %0" ++ [(set_attr "type" "neon_store1_1reg")] ++) ++ + (define_insn "load_pair" + [(set (match_operand:VD 0 "register_operand" "=w") + (match_operand:VD 1 "aarch64_mem_pair_operand" "Ump")) +@@ -338,6 +351,87 @@ + } + ) + ++;; These instructions map to the __builtins for the Dot Product operations. ++(define_insn "aarch64_dot" ++ [(set (match_operand:VS 0 "register_operand" "=w") ++ (plus:VS (match_operand:VS 1 "register_operand" "0") ++ (unspec:VS [(match_operand: 2 "register_operand" "w") ++ (match_operand: 3 "register_operand" "w")] ++ DOTPROD)))] ++ "TARGET_DOTPROD" ++ "dot\\t%0., %2., %3." ++ [(set_attr "type" "neon_dot")] ++) ++ ++;; These expands map to the Dot Product optab the vectorizer checks for. ++;; The auto-vectorizer expects a dot product builtin that also does an ++;; accumulation into the provided register. ++;; Given the following pattern ++;; ++;; for (i=0; idot_prod" ++ [(set (match_operand:VS 0 "register_operand") ++ (plus:VS (unspec:VS [(match_operand: 1 "register_operand") ++ (match_operand: 2 "register_operand")] ++ DOTPROD) ++ (match_operand:VS 3 "register_operand")))] ++ "TARGET_DOTPROD" ++{ ++ emit_insn ( ++ gen_aarch64_dot (operands[3], operands[3], operands[1], ++ operands[2])); ++ emit_insn (gen_rtx_SET (operands[0], operands[3])); ++ DONE; ++}) ++ ++;; These instructions map to the __builtins for the Dot Product ++;; indexed operations. ++(define_insn "aarch64_dot_lane" ++ [(set (match_operand:VS 0 "register_operand" "=w") ++ (plus:VS (match_operand:VS 1 "register_operand" "0") ++ (unspec:VS [(match_operand: 2 "register_operand" "w") ++ (match_operand:V8QI 3 "register_operand" "") ++ (match_operand:SI 4 "immediate_operand" "i")] ++ DOTPROD)))] ++ "TARGET_DOTPROD" ++ { ++ operands[4] ++ = GEN_INT (ENDIAN_LANE_N (V8QImode, INTVAL (operands[4]))); ++ return "dot\\t%0., %2., %3.4b[%4]"; ++ } ++ [(set_attr "type" "neon_dot")] ++) ++ ++(define_insn "aarch64_dot_laneq" ++ [(set (match_operand:VS 0 "register_operand" "=w") ++ (plus:VS (match_operand:VS 1 "register_operand" "0") ++ (unspec:VS [(match_operand: 2 "register_operand" "w") ++ (match_operand:V16QI 3 "register_operand" "") ++ (match_operand:SI 4 "immediate_operand" "i")] ++ DOTPROD)))] ++ "TARGET_DOTPROD" ++ { ++ operands[4] ++ = GEN_INT (ENDIAN_LANE_N (V16QImode, INTVAL (operands[4]))); ++ return "dot\\t%0., %2., %3.4b[%4]"; ++ } ++ [(set_attr "type" "neon_dot")] ++) ++ + (define_expand "copysign3" + [(match_operand:VHSDF 0 "register_operand") + (match_operand:VHSDF 1 "register_operand") +@@ -561,18 +655,18 @@ + gcc_unreachable (); + } + } +- [(set_attr "type" "neon_from_gp, neon_ins, neon_load1_1reg")] ++ [(set_attr "type" "neon_from_gp, neon_ins, neon_load1_one_lane")] + ) + + (define_insn "*aarch64_simd_vec_copy_lane" +- [(set (match_operand:VALL 0 "register_operand" "=w") +- (vec_merge:VALL +- (vec_duplicate:VALL ++ [(set (match_operand:VALL_F16 0 "register_operand" "=w") ++ (vec_merge:VALL_F16 ++ (vec_duplicate:VALL_F16 + (vec_select: +- (match_operand:VALL 3 "register_operand" "w") ++ (match_operand:VALL_F16 3 "register_operand" "w") + (parallel + [(match_operand:SI 4 "immediate_operand" "i")]))) +- (match_operand:VALL 1 "register_operand" "0") ++ (match_operand:VALL_F16 1 "register_operand" "0") + (match_operand:SI 2 "immediate_operand" "i")))] + "TARGET_SIMD" + { +@@ -1020,6 +1114,18 @@ + [(set_attr "type" "neon_mla__scalar")] + ) + ++(define_insn "*aarch64_mla_elt_merge" ++ [(set (match_operand:VDQHS 0 "register_operand" "=w") ++ (plus:VDQHS ++ (mult:VDQHS (vec_duplicate:VDQHS ++ (match_operand: 1 "register_operand" "w")) ++ (match_operand:VDQHS 2 "register_operand" "w")) ++ (match_operand:VDQHS 3 "register_operand" "0")))] ++ "TARGET_SIMD" ++ "mla\t%0., %2., %1.[0]" ++ [(set_attr "type" "neon_mla__scalar")] ++) ++ + (define_insn "aarch64_mls" + [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") + (minus:VDQ_BHSI (match_operand:VDQ_BHSI 1 "register_operand" "0") +@@ -1067,6 +1173,18 @@ + [(set_attr "type" "neon_mla__scalar")] + ) + ++(define_insn "*aarch64_mls_elt_merge" ++ [(set (match_operand:VDQHS 0 "register_operand" "=w") ++ (minus:VDQHS ++ (match_operand:VDQHS 1 "register_operand" "0") ++ (mult:VDQHS (vec_duplicate:VDQHS ++ (match_operand: 2 "register_operand" "w")) ++ (match_operand:VDQHS 3 "register_operand" "w"))))] ++ "TARGET_SIMD" ++ "mls\t%0., %3., %2.[0]" ++ [(set_attr "type" "neon_mla__scalar")] ++) ++ + ;; Max/Min operations. + (define_insn "3" + [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") +@@ -2815,38 +2933,10 @@ + (match_operand:VDC 2 "register_operand")] + "TARGET_SIMD" + { +- rtx op1, op2; +- if (BYTES_BIG_ENDIAN) +- { +- op1 = operands[2]; +- op2 = operands[1]; +- } +- else +- { +- op1 = operands[1]; +- op2 = operands[2]; +- } +- emit_insn (gen_aarch64_combine_internal (operands[0], op1, op2)); +- DONE; +-} +-) ++ aarch64_split_simd_combine (operands[0], operands[1], operands[2]); + +-(define_insn_and_split "aarch64_combine_internal" +- [(set (match_operand: 0 "register_operand" "=&w") +- (vec_concat: (match_operand:VDC 1 "register_operand" "w") +- (match_operand:VDC 2 "register_operand" "w")))] +- "TARGET_SIMD" +- "#" +- "&& reload_completed" +- [(const_int 0)] +-{ +- if (BYTES_BIG_ENDIAN) +- aarch64_split_simd_combine (operands[0], operands[2], operands[1]); +- else +- aarch64_split_simd_combine (operands[0], operands[1], operands[2]); + DONE; + } +-[(set_attr "type" "multiple")] + ) + + (define_expand "aarch64_simd_combine" +--- 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,exynosm1,falkor,qdf24xx,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,thunderx2t99,xgene1,thunderx2t99p1,vulcan,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53" ++ "cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,xgene1,falkor,qdf24xx,exynosm1,thunderx2t99p1,vulcan,thunderx2t99,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53" + (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 +@@ -35,4 +35,10 @@ two load/stores are not at least 8 byte aligned don't create load/store + pairs. */ + AARCH64_EXTRA_TUNING_OPTION ("slow_unaligned_ldpw", SLOW_UNALIGNED_LDPW) + ++/* Some of the optional shift to some arthematic instructions are ++ considered cheap. Logical shift left <=4 with or without a ++ zero extend are considered cheap. Sign extend; non logical shift left ++ are not considered cheap. */ ++AARCH64_EXTRA_TUNING_OPTION ("cheap_shift_extend", CHEAP_SHIFT_EXTEND) ++ + #undef AARCH64_EXTRA_TUNING_OPTION +--- a/src/gcc/config/aarch64/aarch64.c ++++ b/src/gcc/config/aarch64/aarch64.c +@@ -147,6 +147,8 @@ static bool aarch64_builtin_support_vector_misalignment (machine_mode mode, + const_tree type, + int misalignment, + bool is_packed); ++static machine_mode ++aarch64_simd_container_mode (machine_mode mode, unsigned width); + + /* Major revision number of the ARM Architecture implemented by the target. */ + unsigned aarch64_architecture_version; +@@ -193,10 +195,10 @@ static const struct aarch64_flag_desc aarch64_tuning_flags[] = + static const struct cpu_addrcost_table generic_addrcost_table = + { + { +- 0, /* hi */ ++ 1, /* hi */ + 0, /* si */ + 0, /* di */ +- 0, /* ti */ ++ 1, /* ti */ + }, + 0, /* pre_modify */ + 0, /* post_modify */ +@@ -390,13 +392,13 @@ static const struct cpu_vector_cost thunderx_vector_cost = + 3, /* scalar_load_cost */ + 1, /* scalar_store_cost */ + 4, /* vec_int_stmt_cost */ +- 4, /* vec_fp_stmt_cost */ ++ 1, /* vec_fp_stmt_cost */ + 4, /* vec_permute_cost */ + 2, /* vec_to_scalar_cost */ + 2, /* scalar_to_vec_cost */ + 3, /* vec_align_load_cost */ +- 10, /* vec_unalign_load_cost */ +- 10, /* vec_unalign_store_cost */ ++ 5, /* vec_unalign_load_cost */ ++ 5, /* vec_unalign_store_cost */ + 1, /* vec_store_cost */ + 3, /* cond_taken_branch_cost */ + 3 /* cond_not_taken_branch_cost */ +@@ -526,6 +528,61 @@ static const cpu_approx_modes xgene1_approx_modes = + AARCH64_APPROX_ALL /* recip_sqrt */ + }; + ++/* Generic prefetch settings (which disable prefetch). */ ++static const cpu_prefetch_tune generic_prefetch_tune = ++{ ++ 0, /* num_slots */ ++ -1, /* l1_cache_size */ ++ -1, /* l1_cache_line_size */ ++ -1, /* l2_cache_size */ ++ -1 /* default_opt_level */ ++}; ++ ++static const cpu_prefetch_tune exynosm1_prefetch_tune = ++{ ++ 0, /* num_slots */ ++ -1, /* l1_cache_size */ ++ 64, /* l1_cache_line_size */ ++ -1, /* l2_cache_size */ ++ -1 /* default_opt_level */ ++}; ++ ++static const cpu_prefetch_tune qdf24xx_prefetch_tune = ++{ ++ 4, /* num_slots */ ++ 32, /* l1_cache_size */ ++ 64, /* l1_cache_line_size */ ++ 1024, /* l2_cache_size */ ++ 3 /* default_opt_level */ ++}; ++ ++static const cpu_prefetch_tune thunderxt88_prefetch_tune = ++{ ++ 8, /* num_slots */ ++ 32, /* l1_cache_size */ ++ 128, /* l1_cache_line_size */ ++ 16*1024, /* l2_cache_size */ ++ 3 /* default_opt_level */ ++}; ++ ++static const cpu_prefetch_tune thunderx_prefetch_tune = ++{ ++ 8, /* num_slots */ ++ 32, /* l1_cache_size */ ++ 128, /* l1_cache_line_size */ ++ -1, /* l2_cache_size */ ++ -1 /* default_opt_level */ ++}; ++ ++static const cpu_prefetch_tune thunderx2t99_prefetch_tune = ++{ ++ 8, /* num_slots */ ++ 32, /* l1_cache_size */ ++ 64, /* l1_cache_line_size */ ++ 256, /* l2_cache_size */ ++ -1 /* default_opt_level */ ++}; ++ + static const struct tune_params generic_tunings = + { + &cortexa57_extra_costs, +@@ -538,17 +595,17 @@ static const struct tune_params generic_tunings = + 2, /* issue_rate */ + (AARCH64_FUSE_AES_AESMC), /* fusible_ops */ + 8, /* function_align. */ +- 8, /* jump_align. */ +- 4, /* loop_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. */ +- 0, /* cache_line_size. */ +- tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &generic_prefetch_tune + }; + + static const struct tune_params cortexa35_tunings = +@@ -564,7 +621,7 @@ static const struct tune_params cortexa35_tunings = + (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD + | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR), /* fusible_ops */ + 16, /* function_align. */ +- 8, /* jump_align. */ ++ 4, /* jump_align. */ + 8, /* loop_align. */ + 2, /* int_reassoc_width. */ + 4, /* fp_reassoc_width. */ +@@ -572,9 +629,9 @@ static const struct tune_params cortexa35_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &generic_prefetch_tune + }; + + static const struct tune_params cortexa53_tunings = +@@ -590,7 +647,7 @@ static const struct tune_params cortexa53_tunings = + (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD + | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR), /* fusible_ops */ + 16, /* function_align. */ +- 8, /* jump_align. */ ++ 4, /* jump_align. */ + 8, /* loop_align. */ + 2, /* int_reassoc_width. */ + 4, /* fp_reassoc_width. */ +@@ -598,9 +655,9 @@ static const struct tune_params cortexa53_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &generic_prefetch_tune + }; + + static const struct tune_params cortexa57_tunings = +@@ -616,7 +673,7 @@ static const struct tune_params cortexa57_tunings = + (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD + | AARCH64_FUSE_MOVK_MOVK), /* fusible_ops */ + 16, /* function_align. */ +- 8, /* jump_align. */ ++ 4, /* jump_align. */ + 8, /* loop_align. */ + 2, /* int_reassoc_width. */ + 4, /* fp_reassoc_width. */ +@@ -624,9 +681,9 @@ static const struct tune_params cortexa57_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_RENAME_FMA_REGS) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_RENAME_FMA_REGS), /* tune_flags. */ ++ &generic_prefetch_tune + }; + + static const struct tune_params cortexa72_tunings = +@@ -642,7 +699,7 @@ static const struct tune_params cortexa72_tunings = + (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD + | AARCH64_FUSE_MOVK_MOVK), /* fusible_ops */ + 16, /* function_align. */ +- 8, /* jump_align. */ ++ 4, /* jump_align. */ + 8, /* loop_align. */ + 2, /* int_reassoc_width. */ + 4, /* fp_reassoc_width. */ +@@ -650,9 +707,9 @@ static const struct tune_params cortexa72_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &generic_prefetch_tune + }; + + static const struct tune_params cortexa73_tunings = +@@ -668,7 +725,7 @@ static const struct tune_params cortexa73_tunings = + (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD + | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR), /* fusible_ops */ + 16, /* function_align. */ +- 8, /* jump_align. */ ++ 4, /* jump_align. */ + 8, /* loop_align. */ + 2, /* int_reassoc_width. */ + 4, /* fp_reassoc_width. */ +@@ -676,11 +733,13 @@ static const struct tune_params cortexa73_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &generic_prefetch_tune + }; + ++ ++ + static const struct tune_params exynosm1_tunings = + { + &exynosm1_extra_costs, +@@ -701,9 +760,34 @@ static const struct tune_params exynosm1_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 48, /* max_case_values. */ +- 64, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &exynosm1_prefetch_tune ++}; ++ ++static const struct tune_params thunderxt88_tunings = ++{ ++ &thunderx_extra_costs, ++ &generic_addrcost_table, ++ &thunderx_regmove_cost, ++ &thunderx_vector_cost, ++ &generic_branch_cost, ++ &generic_approx_modes, ++ 6, /* memmov_cost */ ++ 2, /* issue_rate */ ++ AARCH64_FUSE_CMP_BRANCH, /* fusible_ops */ ++ 8, /* function_align. */ ++ 8, /* 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_OFF, /* autoprefetcher_model. */ ++ (AARCH64_EXTRA_TUNE_SLOW_UNALIGNED_LDPW), /* tune_flags. */ ++ &thunderxt88_prefetch_tune + }; + + static const struct tune_params thunderx_tunings = +@@ -726,9 +810,10 @@ static const struct tune_params thunderx_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_SLOW_UNALIGNED_LDPW) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_SLOW_UNALIGNED_LDPW ++ | AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND), /* tune_flags. */ ++ &thunderx_prefetch_tune + }; + + static const struct tune_params xgene1_tunings = +@@ -751,9 +836,9 @@ static const struct tune_params xgene1_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &generic_prefetch_tune + }; + + static const struct tune_params qdf24xx_tunings = +@@ -777,9 +862,9 @@ static const struct tune_params qdf24xx_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 64, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_STRONG, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &qdf24xx_prefetch_tune + }; + + static const struct tune_params thunderx2t99_tunings = +@@ -792,7 +877,8 @@ static const struct tune_params thunderx2t99_tunings = + &generic_approx_modes, + 4, /* memmov_cost. */ + 4, /* issue_rate. */ +- (AARCH64_FUSE_CMP_BRANCH | AARCH64_FUSE_AES_AESMC), /* fusible_ops */ ++ (AARCH64_FUSE_CMP_BRANCH | AARCH64_FUSE_AES_AESMC ++ | AARCH64_FUSE_ALU_BRANCH), /* fusible_ops */ + 16, /* function_align. */ + 8, /* jump_align. */ + 16, /* loop_align. */ +@@ -802,9 +888,9 @@ static const struct tune_params thunderx2t99_tunings = + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ +- 64, /* cache_line_size. */ +- tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ +- (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ ++ tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ ++ (AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */ ++ &thunderx2t99_prefetch_tune + }; + + /* Support for fine-grained override of the tuning structures. */ +@@ -1649,41 +1735,41 @@ aarch64_split_simd_combine (rtx dst, rtx src1, rtx src2) + machine_mode dst_mode = GET_MODE (dst); + + gcc_assert (VECTOR_MODE_P (dst_mode)); ++ gcc_assert (register_operand (dst, dst_mode) ++ && register_operand (src1, src_mode) ++ && register_operand (src2, src_mode)); + +- if (REG_P (dst) && REG_P (src1) && REG_P (src2)) +- { +- rtx (*gen) (rtx, rtx, rtx); +- +- switch (src_mode) +- { +- case V8QImode: +- gen = gen_aarch64_simd_combinev8qi; +- break; +- case V4HImode: +- gen = gen_aarch64_simd_combinev4hi; +- break; +- case V2SImode: +- gen = gen_aarch64_simd_combinev2si; +- break; +- case V4HFmode: +- gen = gen_aarch64_simd_combinev4hf; +- break; +- case V2SFmode: +- gen = gen_aarch64_simd_combinev2sf; +- break; +- case DImode: +- gen = gen_aarch64_simd_combinedi; +- break; +- case DFmode: +- gen = gen_aarch64_simd_combinedf; +- break; +- default: +- gcc_unreachable (); +- } ++ rtx (*gen) (rtx, rtx, rtx); + +- emit_insn (gen (dst, src1, src2)); +- return; ++ switch (src_mode) ++ { ++ case V8QImode: ++ gen = gen_aarch64_simd_combinev8qi; ++ break; ++ case V4HImode: ++ gen = gen_aarch64_simd_combinev4hi; ++ break; ++ case V2SImode: ++ gen = gen_aarch64_simd_combinev2si; ++ break; ++ case V4HFmode: ++ gen = gen_aarch64_simd_combinev4hf; ++ break; ++ case V2SFmode: ++ gen = gen_aarch64_simd_combinev2sf; ++ break; ++ case DImode: ++ gen = gen_aarch64_simd_combinedi; ++ break; ++ case DFmode: ++ gen = gen_aarch64_simd_combinedf; ++ break; ++ default: ++ gcc_unreachable (); + } ++ ++ emit_insn (gen (dst, src1, src2)); ++ return; + } + + /* Split a complex SIMD move. */ +@@ -1792,6 +1878,31 @@ aarch64_internal_mov_immediate (rtx dest, rtx imm, bool generate, + return 1; + } + ++ /* Check to see if the low 32 bits are either 0xffffXXXX or 0xXXXXffff ++ (with XXXX non-zero). In that case check to see if the move can be done in ++ a smaller mode. */ ++ val2 = val & 0xffffffff; ++ if (mode == DImode ++ && aarch64_move_imm (val2, SImode) ++ && (((val >> 32) & 0xffff) == 0 || (val >> 48) == 0)) ++ { ++ if (generate) ++ emit_insn (gen_rtx_SET (dest, GEN_INT (val2))); ++ ++ /* Check if we have to emit a second instruction by checking to see ++ if any of the upper 32 bits of the original DI mode value is set. */ ++ if (val == val2) ++ return 1; ++ ++ i = (val >> 48) ? 48 : 32; ++ ++ if (generate) ++ emit_insn (gen_insv_immdi (dest, GEN_INT (i), ++ GEN_INT ((val >> i) & 0xffff))); ++ ++ return 2; ++ } ++ + if ((val >> 32) == 0 || mode == SImode) + { + if (generate) +@@ -1919,6 +2030,8 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm) + gcc_assert (can_create_pseudo_p ()); + base = gen_reg_rtx (ptr_mode); + aarch64_expand_mov_immediate (base, XEXP (mem, 0)); ++ if (ptr_mode != Pmode) ++ base = convert_memory_address (Pmode, base); + mem = gen_rtx_MEM (ptr_mode, base); + } + +@@ -2683,11 +2796,19 @@ aarch64_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size) + plus_constant (Pmode, stack_pointer_rtx, -first)); + + /* LAST_ADDR = SP + FIRST + ROUNDED_SIZE. */ +- emit_set_insn (reg2, +- plus_constant (Pmode, stack_pointer_rtx, +- -(first + rounded_size))); +- +- ++ HOST_WIDE_INT adjustment = - (first + rounded_size); ++ if (! aarch64_uimm12_shift (adjustment)) ++ { ++ aarch64_internal_mov_immediate (reg2, GEN_INT (adjustment), ++ true, Pmode); ++ emit_set_insn (reg2, gen_rtx_PLUS (Pmode, stack_pointer_rtx, reg2)); ++ } ++ else ++ { ++ emit_set_insn (reg2, ++ plus_constant (Pmode, stack_pointer_rtx, adjustment)); ++ } ++ + /* Step 3: the loop + + do +@@ -4550,6 +4671,24 @@ aarch64_classify_address (struct aarch64_address_info *info, + } + } + ++/* Return true if the address X is valid for a PRFM instruction. ++ STRICT_P is true if we should do strict checking with ++ aarch64_classify_address. */ ++ ++bool ++aarch64_address_valid_for_prefetch_p (rtx x, bool strict_p) ++{ ++ struct aarch64_address_info addr; ++ ++ /* PRFM accepts the same addresses as DImode... */ ++ bool res = aarch64_classify_address (&addr, x, DImode, MEM, strict_p); ++ if (!res) ++ return false; ++ ++ /* ... except writeback forms. */ ++ return addr.type != ADDRESS_REG_WB; ++} ++ + bool + aarch64_symbolic_address_p (rtx x) + { +@@ -4612,6 +4751,74 @@ aarch64_legitimize_address_displacement (rtx *disp, rtx *off, machine_mode mode) + return true; + } + ++/* Return the binary representation of floating point constant VALUE in INTVAL. ++ If the value cannot be converted, return false without setting INTVAL. ++ The conversion is done in the given MODE. */ ++bool ++aarch64_reinterpret_float_as_int (rtx value, unsigned HOST_WIDE_INT *intval) ++{ ++ ++ /* We make a general exception for 0. */ ++ if (aarch64_float_const_zero_rtx_p (value)) ++ { ++ *intval = 0; ++ return true; ++ } ++ ++ machine_mode mode = GET_MODE (value); ++ if (GET_CODE (value) != CONST_DOUBLE ++ || !SCALAR_FLOAT_MODE_P (mode) ++ || GET_MODE_BITSIZE (mode) > HOST_BITS_PER_WIDE_INT ++ /* Only support up to DF mode. */ ++ || GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (DFmode)) ++ return false; ++ ++ unsigned HOST_WIDE_INT ival = 0; ++ ++ long res[2]; ++ real_to_target (res, ++ CONST_DOUBLE_REAL_VALUE (value), ++ REAL_MODE_FORMAT (mode)); ++ ++ if (mode == DFmode) ++ { ++ int order = BYTES_BIG_ENDIAN ? 1 : 0; ++ ival = zext_hwi (res[order], 32); ++ ival |= (zext_hwi (res[1 - order], 32) << 32); ++ } ++ else ++ ival = zext_hwi (res[0], 32); ++ ++ *intval = ival; ++ return true; ++} ++ ++/* Return TRUE if rtx X is an immediate constant that can be moved using a ++ single MOV(+MOVK) followed by an FMOV. */ ++bool ++aarch64_float_const_rtx_p (rtx x) ++{ ++ machine_mode mode = GET_MODE (x); ++ if (mode == VOIDmode) ++ return false; ++ ++ /* Determine whether it's cheaper to write float constants as ++ mov/movk pairs over ldr/adrp pairs. */ ++ unsigned HOST_WIDE_INT ival; ++ ++ if (GET_CODE (x) == CONST_DOUBLE ++ && SCALAR_FLOAT_MODE_P (mode) ++ && aarch64_reinterpret_float_as_int (x, &ival)) ++ { ++ machine_mode imode = mode == HFmode ? SImode : int_mode_for_mode (mode); ++ int num_instr = aarch64_internal_mov_immediate ++ (NULL_RTX, gen_int_mode (ival, imode), false, imode); ++ return num_instr < 3; ++ } ++ ++ return false; ++} ++ + /* Return TRUE if rtx X is immediate constant 0.0 */ + bool + aarch64_float_const_zero_rtx_p (rtx x) +@@ -4624,6 +4831,49 @@ aarch64_float_const_zero_rtx_p (rtx x) + return real_equal (CONST_DOUBLE_REAL_VALUE (x), &dconst0); + } + ++/* Return TRUE if rtx X is immediate constant that fits in a single ++ MOVI immediate operation. */ ++bool ++aarch64_can_const_movi_rtx_p (rtx x, machine_mode mode) ++{ ++ if (!TARGET_SIMD) ++ return false; ++ ++ machine_mode vmode, imode; ++ unsigned HOST_WIDE_INT ival; ++ ++ if (GET_CODE (x) == CONST_DOUBLE ++ && SCALAR_FLOAT_MODE_P (mode)) ++ { ++ if (!aarch64_reinterpret_float_as_int (x, &ival)) ++ return false; ++ ++ /* We make a general exception for 0. */ ++ if (aarch64_float_const_zero_rtx_p (x)) ++ return true; ++ ++ imode = int_mode_for_mode (mode); ++ } ++ else if (GET_CODE (x) == CONST_INT ++ && SCALAR_INT_MODE_P (mode)) ++ { ++ imode = mode; ++ ival = INTVAL (x); ++ } ++ else ++ return false; ++ ++ /* use a 64 bit mode for everything except for DI/DF mode, where we use ++ a 128 bit vector mode. */ ++ int width = GET_MODE_BITSIZE (mode) == 64 ? 128 : 64; ++ ++ vmode = aarch64_simd_container_mode (imode, width); ++ rtx v_op = aarch64_simd_gen_const_vector_dup (vmode, ival); ++ ++ return aarch64_simd_valid_immediate (v_op, vmode, false, NULL); ++} ++ ++ + /* Return the fixed registers used for condition codes. */ + + static bool +@@ -4634,6 +4884,50 @@ aarch64_fixed_condition_code_regs (unsigned int *p1, unsigned int *p2) + return true; + } + ++/* This function is used by the call expanders of the machine description. ++ RESULT is the register in which the result is returned. It's NULL for ++ "call" and "sibcall". ++ MEM is the location of the function call. ++ SIBCALL indicates whether this function call is normal call or sibling call. ++ It will generate different pattern accordingly. */ ++ ++void ++aarch64_expand_call (rtx result, rtx mem, bool sibcall) ++{ ++ rtx call, callee, tmp; ++ rtvec vec; ++ machine_mode mode; ++ ++ gcc_assert (MEM_P (mem)); ++ callee = XEXP (mem, 0); ++ mode = GET_MODE (callee); ++ gcc_assert (mode == Pmode); ++ ++ /* Decide if we should generate indirect calls by loading the ++ address of the callee into a register before performing ++ the branch-and-link. */ ++ if (SYMBOL_REF_P (callee) ++ ? (aarch64_is_long_call_p (callee) ++ || aarch64_is_noplt_call_p (callee)) ++ : !REG_P (callee)) ++ XEXP (mem, 0) = force_reg (mode, callee); ++ ++ call = gen_rtx_CALL (VOIDmode, mem, const0_rtx); ++ ++ if (result != NULL_RTX) ++ call = gen_rtx_SET (result, call); ++ ++ if (sibcall) ++ tmp = ret_rtx; ++ else ++ tmp = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, LR_REGNUM)); ++ ++ vec = gen_rtvec (2, call, tmp); ++ call = gen_rtx_PARALLEL (VOIDmode, vec); ++ ++ aarch64_emit_call_insn (call); ++} ++ + /* Emit call insn with PAT and do aarch64-specific handling. */ + + void +@@ -4706,7 +5000,7 @@ aarch64_select_cc_mode (RTX_CODE code, rtx x, rtx y) + the comparison will have to be swapped when we emit the assembly + code. */ + if ((GET_MODE (x) == SImode || GET_MODE (x) == DImode) +- && (REG_P (y) || GET_CODE (y) == SUBREG) ++ && (REG_P (y) || GET_CODE (y) == SUBREG || y == const0_rtx) + && (GET_CODE (x) == ASHIFT || GET_CODE (x) == ASHIFTRT + || GET_CODE (x) == LSHIFTRT + || GET_CODE (x) == ZERO_EXTEND || GET_CODE (x) == SIGN_EXTEND)) +@@ -5113,6 +5407,8 @@ aarch64_print_operand (FILE *f, rtx x, int code) + + case MEM: + output_address (GET_MODE (x), XEXP (x, 0)); ++ /* Check all memory references are Pmode - even with ILP32. */ ++ gcc_assert (GET_MODE (XEXP (x, 0)) == Pmode); + break; + + case CONST: +@@ -5758,12 +6054,6 @@ aarch64_preferred_reload_class (rtx x, reg_class_t regclass) + return NO_REGS; + } + +- /* If it's an integer immediate that MOVI can't handle, then +- FP_REGS is not an option, so we return NO_REGS instead. */ +- if (CONST_INT_P (x) && reg_class_subset_p (regclass, FP_REGS) +- && !aarch64_simd_imm_scalar_p (x, GET_MODE (x))) +- return NO_REGS; +- + /* Register eliminiation can result in a request for + SP+constant->FP_REGS. We cannot support such operations which + use SP as source and an FP_REG as destination, so reject out +@@ -5978,9 +6268,10 @@ aarch64_strip_shift (rtx x) + /* Helper function for rtx cost calculation. Strip an extend + expression from X. Returns the inner operand if successful, or the + original expression on failure. We deal with a number of possible +- canonicalization variations here. */ ++ canonicalization variations here. If STRIP_SHIFT is true, then ++ we can strip off a shift also. */ + static rtx +-aarch64_strip_extend (rtx x) ++aarch64_strip_extend (rtx x, bool strip_shift) + { + rtx op = x; + +@@ -6004,7 +6295,8 @@ aarch64_strip_extend (rtx x) + + /* Now handle extended register, as this may also have an optional + left shift by 1..4. */ +- if (GET_CODE (op) == ASHIFT ++ if (strip_shift ++ && GET_CODE (op) == ASHIFT + && CONST_INT_P (XEXP (op, 1)) + && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) <= 4) + op = XEXP (op, 0); +@@ -6028,6 +6320,39 @@ aarch64_shift_p (enum rtx_code code) + return code == ASHIFT || code == ASHIFTRT || code == LSHIFTRT; + } + ++ ++/* Return true iff X is a cheap shift without a sign extend. */ ++ ++static bool ++aarch64_cheap_mult_shift_p (rtx x) ++{ ++ rtx op0, op1; ++ ++ op0 = XEXP (x, 0); ++ op1 = XEXP (x, 1); ++ ++ if (!(aarch64_tune_params.extra_tuning_flags ++ & AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND)) ++ return false; ++ ++ if (GET_CODE (op0) == SIGN_EXTEND) ++ return false; ++ ++ if (GET_CODE (x) == ASHIFT && CONST_INT_P (op1) ++ && UINTVAL (op1) <= 4) ++ return true; ++ ++ if (GET_CODE (x) != MULT || !CONST_INT_P (op1)) ++ return false; ++ ++ HOST_WIDE_INT l2 = exact_log2 (INTVAL (op1)); ++ ++ if (l2 > 0 && l2 <= 4) ++ return true; ++ ++ return false; ++} ++ + /* Helper function for rtx cost calculation. Calculate the cost of + a MULT or ASHIFT, which may be part of a compound PLUS/MINUS rtx. + Return the calculated cost of the expression, recursing manually in to +@@ -6065,7 +6390,11 @@ aarch64_rtx_mult_cost (rtx x, enum rtx_code code, int outer, bool speed) + { + if (compound_p) + { +- if (REG_P (op1)) ++ /* If the shift is considered cheap, ++ then don't add any cost. */ ++ if (aarch64_cheap_mult_shift_p (x)) ++ ; ++ else if (REG_P (op1)) + /* ARITH + shift-by-register. */ + cost += extra_cost->alu.arith_shift_reg; + else if (is_extend) +@@ -6083,7 +6412,7 @@ aarch64_rtx_mult_cost (rtx x, enum rtx_code code, int outer, bool speed) + } + /* Strip extends as we will have costed them in the case above. */ + if (is_extend) +- op0 = aarch64_strip_extend (op0); ++ op0 = aarch64_strip_extend (op0, true); + + cost += rtx_cost (op0, VOIDmode, code, 0, speed); + +@@ -6674,6 +7003,25 @@ aarch64_rtx_costs (rtx x, machine_mode mode, int outer ATTRIBUTE_UNUSED, + return true; + + case CONST_DOUBLE: ++ ++ /* First determine number of instructions to do the move ++ as an integer constant. */ ++ if (!aarch64_float_const_representable_p (x) ++ && !aarch64_can_const_movi_rtx_p (x, mode) ++ && aarch64_float_const_rtx_p (x)) ++ { ++ unsigned HOST_WIDE_INT ival; ++ bool succeed = aarch64_reinterpret_float_as_int (x, &ival); ++ gcc_assert (succeed); ++ ++ machine_mode imode = mode == HFmode ? SImode ++ : int_mode_for_mode (mode); ++ int ncost = aarch64_internal_mov_immediate ++ (NULL_RTX, gen_int_mode (ival, imode), false, imode); ++ *cost += COSTS_N_INSNS (ncost); ++ return true; ++ } ++ + if (speed) + { + /* mov[df,sf]_aarch64. */ +@@ -6927,13 +7275,13 @@ cost_minus: + if (speed) + *cost += extra_cost->alu.extend_arith; + +- op1 = aarch64_strip_extend (op1); ++ op1 = aarch64_strip_extend (op1, true); + *cost += rtx_cost (op1, VOIDmode, + (enum rtx_code) GET_CODE (op1), 0, speed); + return true; + } + +- rtx new_op1 = aarch64_strip_extend (op1); ++ rtx new_op1 = aarch64_strip_extend (op1, false); + + /* Cost this as an FMA-alike operation. */ + if ((GET_CODE (new_op1) == MULT +@@ -7006,7 +7354,7 @@ cost_plus: + if (speed) + *cost += extra_cost->alu.extend_arith; + +- op0 = aarch64_strip_extend (op0); ++ op0 = aarch64_strip_extend (op0, true); + *cost += rtx_cost (op0, VOIDmode, + (enum rtx_code) GET_CODE (op0), 0, speed); + return true; +@@ -7014,7 +7362,7 @@ cost_plus: + + /* Strip any extend, leave shifts behind as we will + cost them through mult_cost. */ +- new_op0 = aarch64_strip_extend (op0); ++ new_op0 = aarch64_strip_extend (op0, false); + + if (GET_CODE (new_op0) == MULT + || aarch64_shift_p (GET_CODE (new_op0))) +@@ -7484,17 +7832,13 @@ cost_plus: + case UMOD: + if (speed) + { ++ /* Slighly prefer UMOD over SMOD. */ + if (VECTOR_MODE_P (mode)) + *cost += extra_cost->vect.alu; + else if (GET_MODE_CLASS (mode) == MODE_INT) + *cost += (extra_cost->mult[mode == DImode].add +- + extra_cost->mult[mode == DImode].idiv); +- else if (mode == DFmode) +- *cost += (extra_cost->fp[1].mult +- + extra_cost->fp[1].div); +- else if (mode == SFmode) +- *cost += (extra_cost->fp[0].mult +- + extra_cost->fp[0].div); ++ + extra_cost->mult[mode == DImode].idiv ++ + (code == MOD ? 1 : 0)); + } + return false; /* All arguments need to be in registers. */ + +@@ -7508,7 +7852,9 @@ cost_plus: + else if (GET_MODE_CLASS (mode) == MODE_INT) + /* There is no integer SQRT, so only DIV and UDIV can get + here. */ +- *cost += extra_cost->mult[mode == DImode].idiv; ++ *cost += (extra_cost->mult[mode == DImode].idiv ++ /* Slighly prefer UDIV over SDIV. */ ++ + (code == DIV ? 1 : 0)); + else + *cost += extra_cost->fp[mode == DFmode].div; + } +@@ -8670,13 +9016,39 @@ aarch64_override_options_internal (struct gcc_options *opts) + opts->x_param_values, + global_options_set.x_param_values); + +- /* Set the L1 cache line size. */ +- if (selected_cpu->tune->cache_line_size != 0) ++ /* Set up parameters to be used in prefetching algorithm. Do not ++ override the defaults unless we are tuning for a core we have ++ researched values for. */ ++ if (aarch64_tune_params.prefetch->num_slots > 0) ++ maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES, ++ aarch64_tune_params.prefetch->num_slots, ++ opts->x_param_values, ++ global_options_set.x_param_values); ++ if (aarch64_tune_params.prefetch->l1_cache_size >= 0) ++ maybe_set_param_value (PARAM_L1_CACHE_SIZE, ++ aarch64_tune_params.prefetch->l1_cache_size, ++ opts->x_param_values, ++ global_options_set.x_param_values); ++ if (aarch64_tune_params.prefetch->l1_cache_line_size >= 0) + maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE, +- selected_cpu->tune->cache_line_size, ++ aarch64_tune_params.prefetch->l1_cache_line_size, ++ opts->x_param_values, ++ global_options_set.x_param_values); ++ if (aarch64_tune_params.prefetch->l2_cache_size >= 0) ++ maybe_set_param_value (PARAM_L2_CACHE_SIZE, ++ aarch64_tune_params.prefetch->l2_cache_size, + opts->x_param_values, + global_options_set.x_param_values); + ++ /* Enable sw prefetching at specified optimization level for ++ CPUS that have prefetch. Lower optimization level threshold by 1 ++ when profiling is enabled. */ ++ if (opts->x_flag_prefetch_loop_arrays < 0 ++ && !opts->x_optimize_size ++ && aarch64_tune_params.prefetch->default_opt_level >= 0 ++ && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level) ++ opts->x_flag_prefetch_loop_arrays = 1; ++ + aarch64_override_options_after_change_1 (opts); + } + +@@ -9953,18 +10325,16 @@ aarch64_legitimate_pic_operand_p (rtx x) + /* Return true if X holds either a quarter-precision or + floating-point +0.0 constant. */ + static bool +-aarch64_valid_floating_const (machine_mode mode, rtx x) ++aarch64_valid_floating_const (rtx x) + { + if (!CONST_DOUBLE_P (x)) + return false; + +- if (aarch64_float_const_zero_rtx_p (x)) ++ /* This call determines which constants can be used in mov ++ as integer moves instead of constant loads. */ ++ if (aarch64_float_const_rtx_p (x)) + return true; + +- /* We only handle moving 0.0 to a TFmode register. */ +- if (!(mode == SFmode || mode == DFmode)) +- return false; +- + return aarch64_float_const_representable_p (x); + } + +@@ -9976,11 +10346,15 @@ aarch64_legitimate_constant_p (machine_mode mode, rtx x) + if (TARGET_SIMD && aarch64_vect_struct_mode_p (mode)) + return false; + +- /* This could probably go away because +- we now decompose CONST_INTs according to expand_mov_immediate. */ ++ /* For these cases we never want to use a literal load. ++ As such we have to prevent the compiler from forcing these ++ to memory. */ + if ((GET_CODE (x) == CONST_VECTOR + && aarch64_simd_valid_immediate (x, mode, false, NULL)) +- || CONST_INT_P (x) || aarch64_valid_floating_const (mode, x)) ++ || CONST_INT_P (x) ++ || aarch64_valid_floating_const (x) ++ || aarch64_can_const_movi_rtx_p (x, mode) ++ || aarch64_float_const_rtx_p (x)) + return !targetm.cannot_force_const_mem (mode, x); + + if (GET_CODE (x) == HIGH +@@ -11257,23 +11631,6 @@ aarch64_mask_from_zextract_ops (rtx width, rtx pos) + return GEN_INT (mask << UINTVAL (pos)); + } + +-bool +-aarch64_simd_imm_scalar_p (rtx x, machine_mode mode ATTRIBUTE_UNUSED) +-{ +- HOST_WIDE_INT imm = INTVAL (x); +- int i; +- +- for (i = 0; i < 8; i++) +- { +- unsigned int byte = imm & 0xff; +- if (byte != 0xff && byte != 0) +- return false; +- imm >>= 8; +- } +- +- return true; +-} +- + bool + aarch64_mov_operand_p (rtx x, machine_mode mode) + { +@@ -11620,6 +11977,57 @@ aarch64_expand_vector_init (rtx target, rtx vals) + return; + } + ++ enum insn_code icode = optab_handler (vec_set_optab, mode); ++ gcc_assert (icode != CODE_FOR_nothing); ++ ++ /* If there are only variable elements, try to optimize ++ the insertion using dup for the most common element ++ followed by insertions. */ ++ ++ /* The algorithm will fill matches[*][0] with the earliest matching element, ++ and matches[X][1] with the count of duplicate elements (if X is the ++ earliest element which has duplicates). */ ++ ++ if (n_var == n_elts && n_elts <= 16) ++ { ++ int matches[16][2] = {0}; ++ for (int i = 0; i < n_elts; i++) ++ { ++ for (int j = 0; j <= i; j++) ++ { ++ if (rtx_equal_p (XVECEXP (vals, 0, i), XVECEXP (vals, 0, j))) ++ { ++ matches[i][0] = j; ++ matches[j][1]++; ++ break; ++ } ++ } ++ } ++ int maxelement = 0; ++ int maxv = 0; ++ for (int i = 0; i < n_elts; i++) ++ if (matches[i][1] > maxv) ++ { ++ maxelement = i; ++ maxv = matches[i][1]; ++ } ++ ++ /* Create a duplicate of the most common element. */ ++ rtx x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, maxelement)); ++ aarch64_emit_move (target, gen_rtx_VEC_DUPLICATE (mode, x)); ++ ++ /* Insert the rest. */ ++ for (int i = 0; i < n_elts; i++) ++ { ++ rtx x = XVECEXP (vals, 0, i); ++ if (matches[i][0] == maxelement) ++ continue; ++ x = copy_to_mode_reg (inner_mode, x); ++ emit_insn (GEN_FCN (icode) (target, x, GEN_INT (i))); ++ } ++ return; ++ } ++ + /* Initialise a vector which is part-variable. We want to first try + to build those lanes which are constant in the most efficient way we + can. */ +@@ -11653,10 +12061,6 @@ aarch64_expand_vector_init (rtx target, rtx vals) + } + + /* Insert the variable lanes directly. */ +- +- enum insn_code icode = optab_handler (vec_set_optab, mode); +- gcc_assert (icode != CODE_FOR_nothing); +- + for (int i = 0; i < n_elts; i++) + { + rtx x = XVECEXP (vals, 0, i); +@@ -12022,6 +12426,17 @@ aarch64_split_compare_and_swap (rtx operands[]) + mode = GET_MODE (mem); + model = memmodel_from_int (INTVAL (model_rtx)); + ++ /* When OLDVAL is zero and we want the strong version we can emit a tighter ++ loop: ++ .label1: ++ LD[A]XR rval, [mem] ++ CBNZ rval, .label2 ++ ST[L]XR scratch, newval, [mem] ++ CBNZ scratch, .label1 ++ .label2: ++ CMP rval, 0. */ ++ bool strong_zero_p = !is_weak && oldval == const0_rtx; ++ + label1 = NULL; + if (!is_weak) + { +@@ -12038,11 +12453,21 @@ aarch64_split_compare_and_swap (rtx operands[]) + else + aarch64_emit_load_exclusive (mode, rval, mem, model_rtx); + +- 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)); ++ 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)); ++ } ++ 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)); ++ } + + aarch64_emit_store_exclusive (mode, scratch, mem, newval, model_rtx); + +@@ -12061,7 +12486,15 @@ aarch64_split_compare_and_swap (rtx operands[]) + } + + 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)); ++ } + /* Emit any final barrier needed for a __sync operation. */ + if (is_mm_sync (model)) + aarch64_emit_post_barrier (model); +@@ -12581,15 +13014,28 @@ aarch64_output_simd_mov_immediate (rtx const_vector, + } + + char* +-aarch64_output_scalar_simd_mov_immediate (rtx immediate, +- machine_mode mode) ++aarch64_output_scalar_simd_mov_immediate (rtx immediate, machine_mode mode) + { ++ ++ /* If a floating point number was passed and we desire to use it in an ++ integer mode do the conversion to integer. */ ++ if (CONST_DOUBLE_P (immediate) && GET_MODE_CLASS (mode) == MODE_INT) ++ { ++ unsigned HOST_WIDE_INT ival; ++ if (!aarch64_reinterpret_float_as_int (immediate, &ival)) ++ gcc_unreachable (); ++ immediate = gen_int_mode (ival, mode); ++ } ++ + machine_mode vmode; ++ /* use a 64 bit mode for everything except for DI/DF mode, where we use ++ a 128 bit vector mode. */ ++ int width = GET_MODE_BITSIZE (mode) == 64 ? 128 : 64; + + gcc_assert (!VECTOR_MODE_P (mode)); +- vmode = aarch64_simd_container_mode (mode, 64); ++ vmode = aarch64_simd_container_mode (mode, width); + rtx v_op = aarch64_simd_gen_const_vector_dup (vmode, INTVAL (immediate)); +- return aarch64_output_simd_mov_immediate (v_op, vmode, 64); ++ return aarch64_output_simd_mov_immediate (v_op, vmode, width); + } + + /* Split operands into moves from op[1] + op[2] into op[0]. */ +@@ -13954,13 +14400,66 @@ aarch_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr) + { + enum attr_type prev_type = get_attr_type (prev); + +- /* FIXME: this misses some which is considered simple arthematic +- instructions for ThunderX. Simple shifts are missed here. */ +- if (prev_type == TYPE_ALUS_SREG +- || prev_type == TYPE_ALUS_IMM +- || prev_type == TYPE_LOGICS_REG +- || prev_type == TYPE_LOGICS_IMM) +- return true; ++ unsigned int condreg1, condreg2; ++ rtx cc_reg_1; ++ aarch64_fixed_condition_code_regs (&condreg1, &condreg2); ++ cc_reg_1 = gen_rtx_REG (CCmode, condreg1); ++ ++ if (reg_referenced_p (cc_reg_1, PATTERN (curr)) ++ && prev ++ && modified_in_p (cc_reg_1, prev)) ++ { ++ /* FIXME: this misses some which is considered simple arthematic ++ instructions for ThunderX. Simple shifts are missed here. */ ++ if (prev_type == TYPE_ALUS_SREG ++ || prev_type == TYPE_ALUS_IMM ++ || prev_type == TYPE_LOGICS_REG ++ || prev_type == TYPE_LOGICS_IMM) ++ return true; ++ } ++ } ++ ++ if (aarch64_fusion_enabled_p (AARCH64_FUSE_ALU_BRANCH) ++ && any_condjump_p (curr)) ++ { ++ /* We're trying to match: ++ prev (alu_insn) == (set (r0) plus ((r0) (r1/imm))) ++ curr (cbz) == (set (pc) (if_then_else (eq/ne) (r0) ++ (const_int 0)) ++ (label_ref ("SYM")) ++ (pc)) */ ++ if (SET_DEST (curr_set) == (pc_rtx) ++ && GET_CODE (SET_SRC (curr_set)) == IF_THEN_ELSE ++ && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) ++ && REG_P (SET_DEST (prev_set)) ++ && REGNO (SET_DEST (prev_set)) ++ == REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0))) ++ { ++ /* Fuse ALU operations followed by conditional branch instruction. */ ++ switch (get_attr_type (prev)) ++ { ++ case TYPE_ALU_IMM: ++ case TYPE_ALU_SREG: ++ case TYPE_ADC_REG: ++ case TYPE_ADC_IMM: ++ case TYPE_ADCS_REG: ++ case TYPE_ADCS_IMM: ++ case TYPE_LOGIC_REG: ++ case TYPE_LOGIC_IMM: ++ case TYPE_CSEL: ++ case TYPE_ADR: ++ case TYPE_MOV_IMM: ++ case TYPE_SHIFT_REG: ++ case TYPE_SHIFT_IMM: ++ case TYPE_BFM: ++ case TYPE_RBIT: ++ case TYPE_REV: ++ case TYPE_EXTEND: ++ return true; ++ ++ default:; ++ } ++ } + } + + return false; +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h +@@ -98,14 +98,24 @@ + && (ALIGN) < BITS_PER_WORD) \ + ? BITS_PER_WORD : ALIGN) + +-#define DATA_ALIGNMENT(EXP, ALIGN) \ +- ((((ALIGN) < BITS_PER_WORD) \ +- && (TREE_CODE (EXP) == ARRAY_TYPE \ +- || TREE_CODE (EXP) == UNION_TYPE \ +- || TREE_CODE (EXP) == RECORD_TYPE)) \ +- ? BITS_PER_WORD : (ALIGN)) +- +-#define LOCAL_ALIGNMENT(EXP, ALIGN) DATA_ALIGNMENT(EXP, ALIGN) ++/* Align definitions of arrays, unions and structures so that ++ initializations and copies can be made more efficient. This is not ++ ABI-changing, so it only affects places where we can see the ++ definition. Increasing the alignment tends to introduce padding, ++ so don't do this when optimizing for size/conserving stack space. */ ++#define AARCH64_EXPAND_ALIGNMENT(COND, EXP, ALIGN) \ ++ (((COND) && ((ALIGN) < BITS_PER_WORD) \ ++ && (TREE_CODE (EXP) == ARRAY_TYPE \ ++ || TREE_CODE (EXP) == UNION_TYPE \ ++ || TREE_CODE (EXP) == RECORD_TYPE)) ? BITS_PER_WORD : (ALIGN)) ++ ++/* Align global data. */ ++#define DATA_ALIGNMENT(EXP, ALIGN) \ ++ AARCH64_EXPAND_ALIGNMENT (!optimize_size, EXP, ALIGN) ++ ++/* Similarly, make sure that objects on the stack are sensibly aligned. */ ++#define LOCAL_ALIGNMENT(EXP, ALIGN) \ ++ AARCH64_EXPAND_ALIGNMENT (!flag_conserve_stack, EXP, ALIGN) + + #define STRUCTURE_SIZE_BOUNDARY 8 + +@@ -134,12 +144,15 @@ extern unsigned aarch64_architecture_version; + #define AARCH64_FL_CRC (1 << 3) /* Has CRC. */ + /* ARMv8.1-A architecture extensions. */ + #define AARCH64_FL_LSE (1 << 4) /* Has Large System Extensions. */ +-#define AARCH64_FL_V8_1 (1 << 5) /* Has ARMv8.1-A extensions. */ ++#define AARCH64_FL_RDMA (1 << 5) /* Has Round Double Multiply Add. */ ++#define AARCH64_FL_V8_1 (1 << 6) /* Has ARMv8.1-A extensions. */ + /* ARMv8.2-A architecture extensions. */ +-#define AARCH64_FL_V8_2 (1 << 8) /* Has ARMv8.2-A features. */ ++#define AARCH64_FL_V8_2 (1 << 8) /* Has ARMv8.2-A features. */ + #define AARCH64_FL_F16 (1 << 9) /* Has ARMv8.2-A FP16 extensions. */ + /* ARMv8.3-A architecture extensions. */ +-#define AARCH64_FL_V8_3 (1 << 10) /* Has ARMv8.3-A features. */ ++#define AARCH64_FL_V8_3 (1 << 10) /* Has ARMv8.3-A features. */ ++#define AARCH64_FL_RCPC (1 << 11) /* Has support for RCpc model. */ ++#define AARCH64_FL_DOTPROD (1 << 12) /* Has ARMv8.2-A Dot Product ins. */ + + /* Has FP and SIMD. */ + #define AARCH64_FL_FPSIMD (AARCH64_FL_FP | AARCH64_FL_SIMD) +@@ -150,7 +163,8 @@ extern unsigned aarch64_architecture_version; + /* Architecture flags that effect instruction selection. */ + #define AARCH64_FL_FOR_ARCH8 (AARCH64_FL_FPSIMD) + #define AARCH64_FL_FOR_ARCH8_1 \ +- (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_CRC | AARCH64_FL_V8_1) ++ (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_CRC \ ++ | AARCH64_FL_RDMA | AARCH64_FL_V8_1) + #define AARCH64_FL_FOR_ARCH8_2 \ + (AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_V8_2) + #define AARCH64_FL_FOR_ARCH8_3 \ +@@ -163,10 +177,11 @@ extern unsigned aarch64_architecture_version; + #define AARCH64_ISA_FP (aarch64_isa_flags & AARCH64_FL_FP) + #define AARCH64_ISA_SIMD (aarch64_isa_flags & AARCH64_FL_SIMD) + #define AARCH64_ISA_LSE (aarch64_isa_flags & AARCH64_FL_LSE) +-#define AARCH64_ISA_RDMA (aarch64_isa_flags & AARCH64_FL_V8_1) ++#define AARCH64_ISA_RDMA (aarch64_isa_flags & AARCH64_FL_RDMA) + #define AARCH64_ISA_V8_2 (aarch64_isa_flags & AARCH64_FL_V8_2) + #define AARCH64_ISA_F16 (aarch64_isa_flags & AARCH64_FL_F16) + #define AARCH64_ISA_V8_3 (aarch64_isa_flags & AARCH64_FL_V8_3) ++#define AARCH64_ISA_DOTPROD (aarch64_isa_flags & AARCH64_FL_DOTPROD) + + /* Crypto is an optional extension to AdvSIMD. */ + #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO) +@@ -181,6 +196,9 @@ extern unsigned aarch64_architecture_version; + #define TARGET_FP_F16INST (TARGET_FLOAT && AARCH64_ISA_F16) + #define TARGET_SIMD_F16INST (TARGET_SIMD && AARCH64_ISA_F16) + ++/* Dot Product is an optional extension to AdvSIMD enabled through +dotprod. */ ++#define TARGET_DOTPROD (TARGET_SIMD && AARCH64_ISA_DOTPROD) ++ + /* ARMv8.3-A features. */ + #define TARGET_ARMV8_3 (AARCH64_ISA_V8_3) + +--- a/src/gcc/config/aarch64/aarch64.md ++++ b/src/gcc/config/aarch64/aarch64.md +@@ -181,6 +181,11 @@ + ;; will be disabled when !TARGET_FLOAT. + (define_attr "fp" "no,yes" (const_string "no")) + ++;; Attribute that specifies whether or not the instruction touches half ++;; precision fp registers. When this is set to yes for an alternative, ++;; that alternative will be disabled when !TARGET_FP_F16INST. ++(define_attr "fp16" "no,yes" (const_string "no")) ++ + ;; Attribute that specifies whether or not the instruction touches simd + ;; registers. When this is set to yes for an alternative, that alternative + ;; will be disabled when !TARGET_SIMD. +@@ -194,11 +199,14 @@ + ;; registers when -mgeneral-regs-only is specified. + (define_attr "enabled" "no,yes" + (cond [(ior +- (and (eq_attr "fp" "yes") +- (eq (symbol_ref "TARGET_FLOAT") (const_int 0))) +- (and (eq_attr "simd" "yes") +- (eq (symbol_ref "TARGET_SIMD") (const_int 0)))) +- (const_string "no") ++ (ior ++ (and (eq_attr "fp" "yes") ++ (eq (symbol_ref "TARGET_FLOAT") (const_int 0))) ++ (and (eq_attr "simd" "yes") ++ (eq (symbol_ref "TARGET_SIMD") (const_int 0)))) ++ (and (eq_attr "fp16" "yes") ++ (eq (symbol_ref "TARGET_FP_F16INST") (const_int 0)))) ++ (const_string "no") + ] (const_string "yes"))) + + ;; Attribute that specifies whether we are dealing with a branch to a +@@ -519,27 +527,31 @@ + ) + + (define_insn "prefetch" +- [(prefetch (match_operand:DI 0 "register_operand" "r") ++ [(prefetch (match_operand:DI 0 "aarch64_prefetch_operand" "Dp") + (match_operand:QI 1 "const_int_operand" "") + (match_operand:QI 2 "const_int_operand" ""))] + "" + { +- const char * pftype[2][4] = ++ const char * pftype[2][4] = + { +- {"prfm\\tPLDL1STRM, %a0", +- "prfm\\tPLDL3KEEP, %a0", +- "prfm\\tPLDL2KEEP, %a0", +- "prfm\\tPLDL1KEEP, %a0"}, +- {"prfm\\tPSTL1STRM, %a0", +- "prfm\\tPSTL3KEEP, %a0", +- "prfm\\tPSTL2KEEP, %a0", +- "prfm\\tPSTL1KEEP, %a0"}, ++ {"prfm\\tPLDL1STRM, %0", ++ "prfm\\tPLDL3KEEP, %0", ++ "prfm\\tPLDL2KEEP, %0", ++ "prfm\\tPLDL1KEEP, %0"}, ++ {"prfm\\tPSTL1STRM, %0", ++ "prfm\\tPSTL3KEEP, %0", ++ "prfm\\tPSTL2KEEP, %0", ++ "prfm\\tPSTL1KEEP, %0"}, + }; + + int locality = INTVAL (operands[2]); + + gcc_assert (IN_RANGE (locality, 0, 3)); + ++ /* PRFM accepts the same addresses as a 64-bit LDR so wrap ++ the address into a DImode MEM so that aarch64_print_operand knows ++ how to print it. */ ++ operands[0] = gen_rtx_MEM (DImode, operands[0]); + return pftype[INTVAL(operands[1])][locality]; + } + [(set_attr "type" "load1")] +@@ -713,12 +725,6 @@ + ;; Subroutine calls and sibcalls + ;; ------------------------------------------------------------------- + +-(define_expand "call_internal" +- [(parallel [(call (match_operand 0 "memory_operand" "") +- (match_operand 1 "general_operand" "")) +- (use (match_operand 2 "" "")) +- (clobber (reg:DI LR_REGNUM))])]) +- + (define_expand "call" + [(parallel [(call (match_operand 0 "memory_operand" "") + (match_operand 1 "general_operand" "")) +@@ -727,57 +733,22 @@ + "" + " + { +- rtx callee, pat; +- +- /* In an untyped call, we can get NULL for operand 2. */ +- if (operands[2] == NULL) +- operands[2] = const0_rtx; +- +- /* Decide if we should generate indirect calls by loading the +- 64-bit address of the callee into a register before performing +- the branch-and-link. */ +- callee = XEXP (operands[0], 0); +- if (GET_CODE (callee) == SYMBOL_REF +- ? (aarch64_is_long_call_p (callee) +- || aarch64_is_noplt_call_p (callee)) +- : !REG_P (callee)) +- XEXP (operands[0], 0) = force_reg (Pmode, callee); +- +- pat = gen_call_internal (operands[0], operands[1], operands[2]); +- aarch64_emit_call_insn (pat); ++ aarch64_expand_call (NULL_RTX, operands[0], false); + DONE; + }" + ) + +-(define_insn "*call_reg" +- [(call (mem:DI (match_operand:DI 0 "register_operand" "r")) ++(define_insn "*call_insn" ++ [(call (mem:DI (match_operand:DI 0 "aarch64_call_insn_operand" "r, Usf")) + (match_operand 1 "" "")) +- (use (match_operand 2 "" "")) + (clobber (reg:DI LR_REGNUM))] + "" +- "blr\\t%0" +- [(set_attr "type" "call")] +-) +- +-(define_insn "*call_symbol" +- [(call (mem:DI (match_operand:DI 0 "" "")) +- (match_operand 1 "" "")) +- (use (match_operand 2 "" "")) +- (clobber (reg:DI LR_REGNUM))] +- "GET_CODE (operands[0]) == SYMBOL_REF +- && !aarch64_is_long_call_p (operands[0]) +- && !aarch64_is_noplt_call_p (operands[0])" +- "bl\\t%a0" +- [(set_attr "type" "call")] ++ "@ ++ blr\\t%0 ++ bl\\t%a0" ++ [(set_attr "type" "call, call")] + ) + +-(define_expand "call_value_internal" +- [(parallel [(set (match_operand 0 "" "") +- (call (match_operand 1 "memory_operand" "") +- (match_operand 2 "general_operand" ""))) +- (use (match_operand 3 "" "")) +- (clobber (reg:DI LR_REGNUM))])]) +- + (define_expand "call_value" + [(parallel [(set (match_operand 0 "" "") + (call (match_operand 1 "memory_operand" "") +@@ -787,60 +758,23 @@ + "" + " + { +- rtx callee, pat; +- +- /* In an untyped call, we can get NULL for operand 3. */ +- if (operands[3] == NULL) +- operands[3] = const0_rtx; +- +- /* Decide if we should generate indirect calls by loading the +- 64-bit address of the callee into a register before performing +- the branch-and-link. */ +- callee = XEXP (operands[1], 0); +- if (GET_CODE (callee) == SYMBOL_REF +- ? (aarch64_is_long_call_p (callee) +- || aarch64_is_noplt_call_p (callee)) +- : !REG_P (callee)) +- XEXP (operands[1], 0) = force_reg (Pmode, callee); +- +- pat = gen_call_value_internal (operands[0], operands[1], operands[2], +- operands[3]); +- aarch64_emit_call_insn (pat); ++ aarch64_expand_call (operands[0], operands[1], false); + DONE; + }" + ) + +-(define_insn "*call_value_reg" ++(define_insn "*call_value_insn" + [(set (match_operand 0 "" "") +- (call (mem:DI (match_operand:DI 1 "register_operand" "r")) ++ (call (mem:DI (match_operand:DI 1 "aarch64_call_insn_operand" "r, Usf")) + (match_operand 2 "" ""))) +- (use (match_operand 3 "" "")) + (clobber (reg:DI LR_REGNUM))] + "" +- "blr\\t%1" +- [(set_attr "type" "call")] +- +-) +- +-(define_insn "*call_value_symbol" +- [(set (match_operand 0 "" "") +- (call (mem:DI (match_operand:DI 1 "" "")) +- (match_operand 2 "" ""))) +- (use (match_operand 3 "" "")) +- (clobber (reg:DI LR_REGNUM))] +- "GET_CODE (operands[1]) == SYMBOL_REF +- && !aarch64_is_long_call_p (operands[1]) +- && !aarch64_is_noplt_call_p (operands[1])" +- "bl\\t%a1" +- [(set_attr "type" "call")] ++ "@ ++ blr\\t%1 ++ bl\\t%a1" ++ [(set_attr "type" "call, call")] + ) + +-(define_expand "sibcall_internal" +- [(parallel [(call (match_operand 0 "memory_operand" "") +- (match_operand 1 "general_operand" "")) +- (return) +- (use (match_operand 2 "" ""))])]) +- + (define_expand "sibcall" + [(parallel [(call (match_operand 0 "memory_operand" "") + (match_operand 1 "general_operand" "")) +@@ -848,29 +782,11 @@ + (use (match_operand 2 "" ""))])] + "" + { +- rtx pat; +- rtx callee = XEXP (operands[0], 0); +- if (!REG_P (callee) +- && ((GET_CODE (callee) != SYMBOL_REF) +- || aarch64_is_noplt_call_p (callee))) +- XEXP (operands[0], 0) = force_reg (Pmode, callee); +- +- if (operands[2] == NULL_RTX) +- operands[2] = const0_rtx; +- +- pat = gen_sibcall_internal (operands[0], operands[1], operands[2]); +- aarch64_emit_call_insn (pat); ++ aarch64_expand_call (NULL_RTX, operands[0], true); + DONE; + } + ) + +-(define_expand "sibcall_value_internal" +- [(parallel [(set (match_operand 0 "" "") +- (call (match_operand 1 "memory_operand" "") +- (match_operand 2 "general_operand" ""))) +- (return) +- (use (match_operand 3 "" ""))])]) +- + (define_expand "sibcall_value" + [(parallel [(set (match_operand 0 "" "") + (call (match_operand 1 "memory_operand" "") +@@ -879,19 +795,7 @@ + (use (match_operand 3 "" ""))])] + "" + { +- rtx pat; +- rtx callee = XEXP (operands[1], 0); +- if (!REG_P (callee) +- && ((GET_CODE (callee) != SYMBOL_REF) +- || aarch64_is_noplt_call_p (callee))) +- XEXP (operands[1], 0) = force_reg (Pmode, callee); +- +- if (operands[3] == NULL_RTX) +- operands[3] = const0_rtx; +- +- pat = gen_sibcall_value_internal (operands[0], operands[1], operands[2], +- operands[3]); +- aarch64_emit_call_insn (pat); ++ aarch64_expand_call (operands[0], operands[1], true); + DONE; + } + ) +@@ -899,8 +803,7 @@ + (define_insn "*sibcall_insn" + [(call (mem:DI (match_operand:DI 0 "aarch64_call_insn_operand" "Ucs, Usf")) + (match_operand 1 "" "")) +- (return) +- (use (match_operand 2 "" ""))] ++ (return)] + "SIBLING_CALL_P (insn)" + "@ + br\\t%0 +@@ -913,8 +816,7 @@ + (call (mem:DI + (match_operand:DI 1 "aarch64_call_insn_operand" "Ucs, Usf")) + (match_operand 2 "" ""))) +- (return) +- (use (match_operand 3 "" ""))] ++ (return)] + "SIBLING_CALL_P (insn)" + "@ + br\\t%1 +@@ -1026,8 +928,8 @@ + ) + + (define_insn_and_split "*movsi_aarch64" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r ,*w, r,*w") +- (match_operand:SI 1 "aarch64_mov_operand" " r,r,k,M,n,m, m,rZ,*w,S,Ush,rZ,*w,*w"))] ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r ,*w, r,*w,w") ++ (match_operand:SI 1 "aarch64_mov_operand" " r,r,k,M,n,m, m,rZ,*w,Usa,Ush,rZ,w,*w,Ds"))] + "(register_operand (operands[0], SImode) + || aarch64_reg_or_zero (operands[1], SImode))" + "@ +@@ -1044,8 +946,9 @@ + adrp\\t%x0, %A1 + fmov\\t%s0, %w1 + fmov\\t%w0, %s1 +- fmov\\t%s0, %s1" +- "CONST_INT_P (operands[1]) && !aarch64_move_imm (INTVAL (operands[1]), SImode) ++ fmov\\t%s0, %s1 ++ * return aarch64_output_scalar_simd_mov_immediate (operands[1], SImode);" ++ "CONST_INT_P (operands[1]) && !aarch64_move_imm (INTVAL (operands[1]), SImode) + && REG_P (operands[0]) && GP_REGNUM_P (REGNO (operands[0]))" + [(const_int 0)] + "{ +@@ -1053,13 +956,14 @@ + DONE; + }" + [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\ +- adr,adr,f_mcr,f_mrc,fmov") +- (set_attr "fp" "*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes")] ++ adr,adr,f_mcr,f_mrc,fmov,neon_move") ++ (set_attr "fp" "*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*") ++ (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes")] + ) + + (define_insn_and_split "*movdi_aarch64" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,r,*w,m, m,r,r, *w, r,*w,w") +- (match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,n,m, m,rZ,*w,S,Ush,rZ,*w,*w,Dd"))] ++ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,r,r,*w,m, m,r,r, *w,r,*w,w") ++ (match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,M,n,m, m,rZ,*w,Usa,Ush,rZ,w,*w,Dd"))] + "(register_operand (operands[0], DImode) + || aarch64_reg_or_zero (operands[1], DImode))" + "@ +@@ -1067,6 +971,7 @@ + mov\\t%0, %x1 + mov\\t%x0, %1 + mov\\t%x0, %1 ++ mov\\t%w0, %1 + # + ldr\\t%x0, %1 + ldr\\t%d0, %1 +@@ -1077,7 +982,7 @@ + fmov\\t%d0, %x1 + fmov\\t%x0, %d1 + fmov\\t%d0, %d1 +- movi\\t%d0, %1" ++ * return aarch64_output_scalar_simd_mov_immediate (operands[1], DImode);" + "(CONST_INT_P (operands[1]) && !aarch64_move_imm (INTVAL (operands[1]), DImode)) + && REG_P (operands[0]) && GP_REGNUM_P (REGNO (operands[0]))" + [(const_int 0)] +@@ -1085,10 +990,10 @@ + aarch64_expand_mov_immediate (operands[0], operands[1]); + DONE; + }" +- [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\ +- adr,adr,f_mcr,f_mrc,fmov,neon_move") +- (set_attr "fp" "*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*") +- (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes")] ++ [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,mov_imm,load1,\ ++ load1,store1,store1,adr,adr,f_mcr,f_mrc,fmov,neon_move") ++ (set_attr "fp" "*,*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*") ++ (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes")] + ) + + (define_insn "insv_imm" +@@ -1123,7 +1028,7 @@ + # + # + # +- orr\\t%0.16b, %1.16b, %1.16b ++ mov\\t%0.16b, %1.16b + ldp\\t%0, %H0, %1 + stp\\t%1, %H1, %0 + stp\\txzr, xzr, %0 +@@ -1168,28 +1073,31 @@ + ) + + (define_insn "*movhf_aarch64" +- [(set (match_operand:HF 0 "nonimmediate_operand" "=w,w ,?r,w,w,m,r,m ,r") +- (match_operand:HF 1 "general_operand" "Y ,?rY, w,w,m,w,m,rY,r"))] ++ [(set (match_operand:HF 0 "nonimmediate_operand" "=w,w ,?r,w,w ,w ,w,m,r,m ,r") ++ (match_operand:HF 1 "general_operand" "Y ,?rY, w,w,Ufc,Uvi,m,w,m,rY,r"))] + "TARGET_FLOAT && (register_operand (operands[0], HFmode) + || aarch64_reg_or_fp_zero (operands[1], HFmode))" + "@ + movi\\t%0.4h, #0 +- mov\\t%0.h[0], %w1 ++ fmov\\t%h0, %w1 + umov\\t%w0, %1.h[0] + mov\\t%0.h[0], %1.h[0] ++ fmov\\t%h0, %1 ++ * return aarch64_output_scalar_simd_mov_immediate (operands[1], SImode); + ldr\\t%h0, %1 + str\\t%h1, %0 + ldrh\\t%w0, %1 + strh\\t%w1, %0 + mov\\t%w0, %w1" +- [(set_attr "type" "neon_move,neon_from_gp,neon_to_gp,neon_move,\ +- f_loads,f_stores,load1,store1,mov_reg") +- (set_attr "simd" "yes,yes,yes,yes,*,*,*,*,*")] ++ [(set_attr "type" "neon_move,f_mcr,neon_to_gp,neon_move,fconsts, \ ++ neon_move,f_loads,f_stores,load1,store1,mov_reg") ++ (set_attr "simd" "yes,*,yes,yes,*,yes,*,*,*,*,*") ++ (set_attr "fp16" "*,yes,*,*,yes,*,*,*,*,*,*")] + ) + + (define_insn "*movsf_aarch64" +- [(set (match_operand:SF 0 "nonimmediate_operand" "=w,w ,?r,w,w ,w,m,r,m ,r") +- (match_operand:SF 1 "general_operand" "Y ,?rY, w,w,Ufc,m,w,m,rY,r"))] ++ [(set (match_operand:SF 0 "nonimmediate_operand" "=w,w ,?r,w,w ,w ,w,m,r,m ,r,r") ++ (match_operand:SF 1 "general_operand" "Y ,?rY, w,w,Ufc,Uvi,m,w,m,rY,r,M"))] + "TARGET_FLOAT && (register_operand (operands[0], SFmode) + || aarch64_reg_or_fp_zero (operands[1], SFmode))" + "@ +@@ -1198,19 +1106,22 @@ + fmov\\t%w0, %s1 + fmov\\t%s0, %s1 + fmov\\t%s0, %1 ++ * return aarch64_output_scalar_simd_mov_immediate (operands[1], SImode); + ldr\\t%s0, %1 + str\\t%s1, %0 + ldr\\t%w0, %1 + str\\t%w1, %0 +- mov\\t%w0, %w1" +- [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconsts,\ +- f_loads,f_stores,load1,store1,mov_reg") +- (set_attr "simd" "yes,*,*,*,*,*,*,*,*,*")] ++ mov\\t%w0, %w1 ++ mov\\t%w0, %1" ++ [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconsts,neon_move,\ ++ f_loads,f_stores,load1,store1,mov_reg,\ ++ fconsts") ++ (set_attr "simd" "yes,*,*,*,*,yes,*,*,*,*,*,*")] + ) + + (define_insn "*movdf_aarch64" +- [(set (match_operand:DF 0 "nonimmediate_operand" "=w,w ,?r,w,w ,w,m,r,m ,r") +- (match_operand:DF 1 "general_operand" "Y ,?rY, w,w,Ufc,m,w,m,rY,r"))] ++ [(set (match_operand:DF 0 "nonimmediate_operand" "=w, w ,?r,w,w ,w ,w,m,r,m ,r,r") ++ (match_operand:DF 1 "general_operand" "Y , ?rY, w,w,Ufc,Uvi,m,w,m,rY,r,N"))] + "TARGET_FLOAT && (register_operand (operands[0], DFmode) + || aarch64_reg_or_fp_zero (operands[1], DFmode))" + "@ +@@ -1219,14 +1130,37 @@ + fmov\\t%x0, %d1 + fmov\\t%d0, %d1 + fmov\\t%d0, %1 ++ * return aarch64_output_scalar_simd_mov_immediate (operands[1], DImode); + ldr\\t%d0, %1 + str\\t%d1, %0 + ldr\\t%x0, %1 + str\\t%x1, %0 +- mov\\t%x0, %x1" +- [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconstd,\ +- f_loadd,f_stored,load1,store1,mov_reg") +- (set_attr "simd" "yes,*,*,*,*,*,*,*,*,*")] ++ mov\\t%x0, %x1 ++ mov\\t%x0, %1" ++ [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconstd,neon_move,\ ++ f_loadd,f_stored,load1,store1,mov_reg,\ ++ fconstd") ++ (set_attr "simd" "yes,*,*,*,*,yes,*,*,*,*,*,*")] ++) ++ ++(define_split ++ [(set (match_operand:GPF_HF 0 "nonimmediate_operand") ++ (match_operand:GPF_HF 1 "general_operand"))] ++ "can_create_pseudo_p () ++ && !aarch64_can_const_movi_rtx_p (operands[1], mode) ++ && !aarch64_float_const_representable_p (operands[1]) ++ && aarch64_float_const_rtx_p (operands[1])" ++ [(const_int 0)] ++ { ++ unsigned HOST_WIDE_INT ival; ++ if (!aarch64_reinterpret_float_as_int (operands[1], &ival)) ++ FAIL; ++ ++ rtx tmp = gen_reg_rtx (mode); ++ emit_move_insn (tmp, gen_int_mode (ival, mode)); ++ emit_move_insn (operands[0], gen_lowpart (mode, tmp)); ++ DONE; ++ } + ) + + (define_insn "*movtf_aarch64" +@@ -1237,7 +1171,7 @@ + "TARGET_FLOAT && (register_operand (operands[0], TFmode) + || aarch64_reg_or_fp_zero (operands[1], TFmode))" + "@ +- orr\\t%0.16b, %1.16b, %1.16b ++ mov\\t%0.16b, %1.16b + # + # + # +@@ -2340,6 +2274,55 @@ + [(set_attr "type" "alus_sreg")] + ) + ++(define_insn "sub3_compare1_imm" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC ++ (match_operand:GPI 1 "register_operand" "r") ++ (match_operand:GPI 3 "const_int_operand" "n"))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (plus:GPI (match_dup 1) ++ (match_operand:GPI 2 "aarch64_sub_immediate" "J")))] ++ "INTVAL (operands[3]) == -INTVAL (operands[2])" ++ "subs\\t%0, %1, #%n2" ++ [(set_attr "type" "alus_sreg")] ++) ++ ++(define_peephole2 ++ [(set (match_operand:GPI 0 "register_operand") ++ (minus:GPI (match_operand:GPI 1 "aarch64_reg_or_zero") ++ (match_operand:GPI 2 "aarch64_reg_or_zero"))) ++ (set (reg:CC CC_REGNUM) ++ (compare:CC ++ (match_dup 1) ++ (match_dup 2)))] ++ "!reg_overlap_mentioned_p (operands[0], operands[1]) ++ && !reg_overlap_mentioned_p (operands[0], operands[2])" ++ [(const_int 0)] ++ { ++ emit_insn (gen_sub3_compare1 (operands[0], operands[1], ++ operands[2])); ++ DONE; ++ } ++) ++ ++(define_peephole2 ++ [(set (match_operand:GPI 0 "register_operand") ++ (plus:GPI (match_operand:GPI 1 "register_operand") ++ (match_operand:GPI 2 "aarch64_sub_immediate"))) ++ (set (reg:CC CC_REGNUM) ++ (compare:CC ++ (match_dup 1) ++ (match_operand:GPI 3 "const_int_operand")))] ++ "!reg_overlap_mentioned_p (operands[0], operands[1]) ++ && INTVAL (operands[3]) == -INTVAL (operands[2])" ++ [(const_int 0)] ++ { ++ emit_insn (gen_sub3_compare1_imm (operands[0], operands[1], ++ operands[2], operands[3])); ++ DONE; ++ } ++) ++ + (define_insn "*sub__" + [(set (match_operand:GPI 0 "register_operand" "=r") + (minus:GPI (match_operand:GPI 3 "register_operand" "r") +@@ -3882,6 +3865,22 @@ + [(set_attr "type" "logics_reg,logics_imm")] + ) + ++(define_split ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (and:GPI (match_operand:GPI 0 "register_operand") ++ (match_operand:GPI 1 "aarch64_mov_imm_operand")) ++ (const_int 0))) ++ (clobber (match_operand:SI 2 "register_operand"))] ++ "" ++ [(set (match_dup 2) (match_dup 1)) ++ (set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (and:GPI (match_dup 0) ++ (match_dup 2)) ++ (const_int 0)))] ++) ++ + (define_insn "*and3nr_compare0_zextract" + [(set (reg:CC_NZ CC_REGNUM) + (compare:CC_NZ +@@ -3917,6 +3916,26 @@ + [(set_attr "type" "logics_shift_imm")] + ) + ++(define_split ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (and:GPI (SHIFT:GPI ++ (match_operand:GPI 0 "register_operand") ++ (match_operand:QI 1 "aarch64_shift_imm_")) ++ (match_operand:GPI 2 "aarch64_mov_imm_operand")) ++ (const_int 0))) ++ (clobber (match_operand:SI 3 "register_operand"))] ++ "" ++ [(set (match_dup 3) (match_dup 2)) ++ (set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (and:GPI (SHIFT:GPI ++ (match_dup 0) ++ (match_dup 1)) ++ (match_dup 3)) ++ (const_int 0)))] ++) ++ + ;; ------------------------------------------------------------------- + ;; Shifts + ;; ------------------------------------------------------------------- +@@ -4998,6 +5017,18 @@ + [(set_attr "type" "f_minmax")] + ) + ++(define_expand "lrint2" ++ [(match_operand:GPI 0 "register_operand") ++ (match_operand:GPF 1 "register_operand")] ++ "TARGET_FLOAT" ++{ ++ rtx cvt = gen_reg_rtx (mode); ++ emit_insn (gen_rint2 (cvt, operands[1])); ++ emit_insn (gen_lbtrunc2 (operands[0], cvt)); ++ DONE; ++} ++) ++ + ;; For copysign (x, y), we want to generate: + ;; + ;; LDR d2, #(1 << 63) +@@ -5031,14 +5062,16 @@ + (match_operand:SF 2 "register_operand")] + "TARGET_FLOAT && TARGET_SIMD" + { +- rtx mask = gen_reg_rtx (DImode); ++ rtx v_bitmask = gen_reg_rtx (V2SImode); + + /* Juggle modes to get us in to a vector mode for BSL. */ +- rtx op1 = lowpart_subreg (V2SFmode, operands[1], SFmode); ++ 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 (mask, GEN_INT (HOST_WIDE_INT_1U << 31)); +- emit_insn (gen_aarch64_simd_bslv2sf (tmp, mask, op2, op1)); ++ 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; + } +--- a/src/gcc/config/aarch64/arm_neon.h ++++ b/src/gcc/config/aarch64/arm_neon.h +@@ -12162,7 +12162,7 @@ vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) + + /* ARMv8.1-A instrinsics. */ + #pragma GCC push_options +-#pragma GCC target ("arch=armv8.1-a") ++#pragma GCC target ("+nothing+rdma") + + __extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +@@ -31541,6 +31541,99 @@ vminnmvq_f16 (float16x8_t __a) + + #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__)) ++vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b) ++{ ++ return __builtin_aarch64_udotv8qi_uuuu (__r, __a, __b); ++} ++ ++__extension__ extern __inline uint32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b) ++{ ++ return __builtin_aarch64_udotv16qi_uuuu (__r, __a, __b); ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b) ++{ ++ return __builtin_aarch64_sdotv8qi (__r, __a, __b); ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __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 uint32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_laneq_u32 (uint32x2_t __r, uint8x8_t __a, uint8x16_t __b, ++ const int __index) ++{ ++ return __builtin_aarch64_udot_laneqv8qi_uuuus (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline uint32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b, ++ const int __index) ++{ ++ return __builtin_aarch64_udot_lanev16qi_uuuus (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline uint32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_laneq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b, ++ const int __index) ++{ ++ return __builtin_aarch64_udot_laneqv16qi_uuuus (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index) ++{ ++ return __builtin_aarch64_sdot_lanev8qi (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_laneq_s32 (int32x2_t __r, int8x8_t __a, int8x16_t __b, const int __index) ++{ ++ return __builtin_aarch64_sdot_laneqv8qi (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index) ++{ ++ return __builtin_aarch64_sdot_lanev16qi (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index) ++{ ++ return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index); ++} ++#pragma GCC pop_options ++ + #undef __aarch64_vget_lane_any + + #undef __aarch64_vdup_lane_any +--- a/src/gcc/config/aarch64/atomics.md ++++ b/src/gcc/config/aarch64/atomics.md +@@ -25,7 +25,7 @@ + (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 "register_operand" "") ;; desired ++ (match_operand:ALLI 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 +@@ -45,7 +45,7 @@ + (set (match_dup 1) + (unspec_volatile:SHORT + [(match_operand:SI 2 "aarch64_plus_operand" "rI") ;; expected +- (match_operand:SHORT 3 "register_operand" "r") ;; desired ++ (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 +@@ -69,7 +69,7 @@ + (set (match_dup 1) + (unspec_volatile:GPI + [(match_operand:GPI 2 "aarch64_plus_operand" "rI") ;; expect +- (match_operand:GPI 3 "register_operand" "r") ;; desired ++ (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 +@@ -94,7 +94,7 @@ + (set (match_dup 1) + (unspec_volatile:SHORT + [(match_operand:SI 2 "aarch64_plus_operand" "rI") ;; expected +- (match_operand:SHORT 3 "register_operand" "r") ;; desired ++ (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 +@@ -119,7 +119,7 @@ + (set (match_dup 1) + (unspec_volatile:GPI + [(match_operand:GPI 2 "aarch64_plus_operand" "rI") ;; expect +- (match_operand:GPI 3 "register_operand" "r") ;; desired ++ (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 +@@ -534,7 +534,7 @@ + (unspec_volatile:SI [(const_int 0)] UNSPECV_SX)) + (set (match_operand:ALLI 1 "aarch64_sync_memory_operand" "=Q") + (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_SX))] + "" +@@ -616,7 +616,7 @@ + (set (match_dup 1) + (unspec_volatile:SHORT + [(match_dup 0) +- (match_operand:SHORT 2 "register_operand" "r") ;; value. ++ (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" +@@ -640,7 +640,7 @@ + (set (match_dup 1) + (unspec_volatile:GPI + [(match_dup 0) +- (match_operand:GPI 2 "register_operand" "r") ;; value. ++ (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" +--- a/src/gcc/config/aarch64/constraints.md ++++ b/src/gcc/config/aarch64/constraints.md +@@ -98,6 +98,14 @@ + (and (match_code "high") + (match_test "aarch64_valid_symref (XEXP (op, 0), GET_MODE (XEXP (op, 0)))"))) + ++(define_constraint "Usa" ++ "@internal ++ A constraint that matches an absolute symbolic address that can be ++ loaded by a single ADR." ++ (and (match_code "const,symbol_ref,label_ref") ++ (match_test "aarch64_symbolic_address_p (op)") ++ (match_test "aarch64_mov_operand_p (op, GET_MODE (op))"))) ++ + (define_constraint "Uss" + "@internal + A constraint that matches an immediate shift constant in SImode." +@@ -118,7 +126,8 @@ + (define_constraint "Usf" + "@internal Usf is a symbol reference under the context where plt stub allowed." + (and (match_code "symbol_ref") +- (match_test "!aarch64_is_noplt_call_p (op)"))) ++ (match_test "!(aarch64_is_noplt_call_p (op) ++ || aarch64_is_long_call_p (op))"))) + + (define_constraint "UsM" + "@internal +@@ -167,6 +176,12 @@ + (and (match_code "const_double") + (match_test "aarch64_float_const_representable_p (op)"))) + ++(define_constraint "Uvi" ++ "A floating point constant which can be used with a\ ++ MOVI immediate operation." ++ (and (match_code "const_double") ++ (match_test "aarch64_can_const_movi_rtx_p (op, GET_MODE (op))"))) ++ + (define_constraint "Dn" + "@internal + A constraint that matches vector of immediates." +@@ -211,6 +226,19 @@ + + (define_constraint "Dd" + "@internal +- A constraint that matches an immediate operand valid for AdvSIMD scalar." ++ A constraint that matches an integer immediate operand valid\ ++ for AdvSIMD scalar operations in DImode." + (and (match_code "const_int") +- (match_test "aarch64_simd_imm_scalar_p (op, GET_MODE (op))"))) ++ (match_test "aarch64_can_const_movi_rtx_p (op, DImode)"))) ++ ++(define_constraint "Ds" ++ "@internal ++ A constraint that matches an integer immediate operand valid\ ++ for AdvSIMD scalar operations in SImode." ++ (and (match_code "const_int") ++ (match_test "aarch64_can_const_movi_rtx_p (op, SImode)"))) ++ ++(define_address_constraint "Dp" ++ "@internal ++ An address valid for a prefetch instruction." ++ (match_test "aarch64_address_valid_for_prefetch_p (op, true)")) +--- a/src/gcc/config/aarch64/iterators.md ++++ b/src/gcc/config/aarch64/iterators.md +@@ -44,6 +44,9 @@ + ;; Iterator for all scalar floating point modes (HF, SF, DF) + (define_mode_iterator GPF_F16 [(HF "AARCH64_ISA_F16") SF DF]) + ++;; Iterator for all scalar floating point modes (HF, SF, DF) ++(define_mode_iterator GPF_HF [HF SF DF]) ++ + ;; Iterator for all scalar floating point modes (HF, SF, DF and TF) + (define_mode_iterator GPF_TF_F16 [HF SF DF TF]) + +@@ -351,6 +354,8 @@ + UNSPEC_SQRDMLSH ; Used in aarch64-simd.md. + UNSPEC_FMAXNM ; Used in aarch64-simd.md. + UNSPEC_FMINNM ; Used in aarch64-simd.md. ++ UNSPEC_SDOT ; Used in aarch64-simd.md. ++ UNSPEC_UDOT ; Used in aarch64-simd.md. + ]) + + ;; ------------------------------------------------------------------ +@@ -796,6 +801,10 @@ + (define_mode_attr vsi2qi [(V2SI "v8qi") (V4SI "v16qi")]) + (define_mode_attr VSI2QI [(V2SI "V8QI") (V4SI "V16QI")]) + ++ ++;; Register suffix for DOTPROD input types from the return type. ++(define_mode_attr Vdottype [(V2SI "8b") (V4SI "16b")]) ++ + ;; Sum of lengths of instructions needed to move vector registers of a mode. + (define_mode_attr insn_count [(OI "8") (CI "12") (XI "16")]) + +@@ -1025,6 +1034,7 @@ + UNSPEC_SHSUB UNSPEC_UHSUB + UNSPEC_SRHSUB UNSPEC_URHSUB]) + ++(define_int_iterator DOTPROD [UNSPEC_SDOT UNSPEC_UDOT]) + + (define_int_iterator ADDSUBHN [UNSPEC_ADDHN UNSPEC_RADDHN + UNSPEC_SUBHN UNSPEC_RSUBHN]) +@@ -1162,6 +1172,7 @@ + (UNSPEC_USHLL "u") (UNSPEC_SSHLL "s") + (UNSPEC_URSHL "ur") (UNSPEC_SRSHL "sr") + (UNSPEC_UQRSHL "u") (UNSPEC_SQRSHL "s") ++ (UNSPEC_SDOT "s") (UNSPEC_UDOT "u") + ]) + + (define_int_attr r [(UNSPEC_SQDMULH "") (UNSPEC_SQRDMULH "r") +--- a/src/gcc/config/aarch64/predicates.md ++++ b/src/gcc/config/aarch64/predicates.md +@@ -77,6 +77,10 @@ + (define_predicate "aarch64_fp_vec_pow2" + (match_test "aarch64_vec_fpconst_pow_of_2 (op) > 0")) + ++(define_predicate "aarch64_sub_immediate" ++ (and (match_code "const_int") ++ (match_test "aarch64_uimm12_shift (-INTVAL (op))"))) ++ + (define_predicate "aarch64_plus_immediate" + (and (match_code "const_int") + (ior (match_test "aarch64_uimm12_shift (INTVAL (op))") +@@ -106,6 +110,10 @@ + (ior (match_operand 0 "register_operand") + (match_operand 0 "aarch64_logical_immediate"))) + ++(define_predicate "aarch64_mov_imm_operand" ++ (and (match_code "const_int") ++ (match_test "aarch64_move_imm (INTVAL (op), mode)"))) ++ + (define_predicate "aarch64_logical_and_immediate" + (and (match_code "const_int") + (match_test "aarch64_and_bitmask_imm (INTVAL (op), mode)"))) +@@ -165,6 +173,9 @@ + (match_test "aarch64_legitimate_address_p (mode, XEXP (op, 0), PARALLEL, + 0)"))) + ++(define_predicate "aarch64_prefetch_operand" ++ (match_test "aarch64_address_valid_for_prefetch_p (op, false)")) ++ + (define_predicate "aarch64_valid_symref" + (match_code "const, symbol_ref, label_ref") + { +--- a/src/gcc/config/aarch64/thunderx2t99.md ++++ b/src/gcc/config/aarch64/thunderx2t99.md +@@ -441,3 +441,23 @@ + (and (eq_attr "tune" "thunderx2t99") + (eq_attr "type" "neon_store2_one_lane,neon_store2_one_lane_q")) + "thunderx2t99_ls01,thunderx2t99_f01") ++ ++;; Crypto extensions. ++ ++(define_insn_reservation "thunderx2t99_aes" 5 ++ (and (eq_attr "tune" "thunderx2t99") ++ (eq_attr "type" "crypto_aese,crypto_aesmc")) ++ "thunderx2t99_f1") ++ ++(define_insn_reservation "thunderx2t99_sha" 7 ++ (and (eq_attr "tune" "thunderx2t99") ++ (eq_attr "type" "crypto_sha1_fast,crypto_sha1_xor,crypto_sha1_slow,\ ++ crypto_sha256_fast,crypto_sha256_slow")) ++ "thunderx2t99_f1") ++ ++;; CRC extension. ++ ++(define_insn_reservation "thunderx2t99_crc" 4 ++ (and (eq_attr "tune" "thunderx2t99") ++ (eq_attr "type" "crc")) ++ "thunderx2t99_i1") +--- a/src/gcc/config/arm/aarch-common-protos.h ++++ b/src/gcc/config/arm/aarch-common-protos.h +@@ -25,12 +25,13 @@ + + extern int aarch_accumulator_forwarding (rtx_insn *, rtx_insn *); + extern int aarch_crypto_can_dual_issue (rtx_insn *, rtx_insn *); +-extern int aarch_forward_to_shift_is_not_shifted_reg (rtx_insn *, rtx_insn *); + extern bool aarch_rev16_p (rtx); + extern bool aarch_rev16_shleft_mask_imm_p (rtx, machine_mode); + extern bool aarch_rev16_shright_mask_imm_p (rtx, machine_mode); + extern int arm_early_load_addr_dep (rtx, rtx); ++extern int arm_early_load_addr_dep_ptr (rtx, rtx); + extern int arm_early_store_addr_dep (rtx, rtx); ++extern int arm_early_store_addr_dep_ptr (rtx, rtx); + extern int arm_mac_accumulator_is_mul_result (rtx, rtx); + extern int arm_mac_accumulator_is_result (rtx, rtx); + extern int arm_no_early_alu_shift_dep (rtx, rtx); +--- a/src/gcc/config/arm/aarch-common.c ++++ b/src/gcc/config/arm/aarch-common.c +@@ -241,6 +241,24 @@ arm_early_load_addr_dep (rtx producer, rtx consumer) + return reg_overlap_mentioned_p (value, addr); + } + ++/* Return nonzero if the CONSUMER instruction (a load) does need ++ a Pmode PRODUCER's value to calculate the address. */ ++ ++int ++arm_early_load_addr_dep_ptr (rtx producer, rtx consumer) ++{ ++ rtx value = arm_find_sub_rtx_with_code (PATTERN (producer), SET, false); ++ rtx addr = arm_find_sub_rtx_with_code (PATTERN (consumer), SET, false); ++ ++ if (!value || !addr || !MEM_P (SET_SRC (value))) ++ return 0; ++ ++ value = SET_DEST (value); ++ addr = SET_SRC (addr); ++ ++ return GET_MODE (value) == Pmode && reg_overlap_mentioned_p (value, addr); ++} ++ + /* Return nonzero if the CONSUMER instruction (an ALU op) does not + have an early register shift value or amount dependency on the + result of PRODUCER. */ +@@ -254,12 +272,7 @@ arm_no_early_alu_shift_dep (rtx producer, rtx consumer) + return 0; + + if ((early_op = arm_find_shift_sub_rtx (op))) +- { +- if (REG_P (early_op)) +- early_op = op; +- +- return !reg_overlap_mentioned_p (value, early_op); +- } ++ return !reg_overlap_mentioned_p (value, early_op); + + return 0; + } +@@ -336,6 +349,24 @@ arm_early_store_addr_dep (rtx producer, rtx consumer) + return !arm_no_early_store_addr_dep (producer, consumer); + } + ++/* Return nonzero if the CONSUMER instruction (a store) does need ++ a Pmode PRODUCER's value to calculate the address. */ ++ ++int ++arm_early_store_addr_dep_ptr (rtx producer, rtx consumer) ++{ ++ rtx value = arm_find_sub_rtx_with_code (PATTERN (producer), SET, false); ++ rtx addr = arm_find_sub_rtx_with_code (PATTERN (consumer), SET, false); ++ ++ if (!value || !addr || !MEM_P (SET_SRC (value))) ++ return 0; ++ ++ value = SET_DEST (value); ++ addr = SET_DEST (addr); ++ ++ return GET_MODE (value) == Pmode && reg_overlap_mentioned_p (value, addr); ++} ++ + /* Return non-zero iff the consumer (a multiply-accumulate or a + multiple-subtract instruction) has an accumulator dependency on the + result of the producer and no other dependency on that result. It +@@ -472,38 +503,6 @@ aarch_accumulator_forwarding (rtx_insn *producer, rtx_insn *consumer) + return (REGNO (dest) == REGNO (accumulator)); + } + +-/* Return nonzero if the CONSUMER instruction is some sort of +- arithmetic or logic + shift operation, and the register we are +- writing in PRODUCER is not used in a register shift by register +- operation. */ +- +-int +-aarch_forward_to_shift_is_not_shifted_reg (rtx_insn *producer, +- rtx_insn *consumer) +-{ +- rtx value, op; +- rtx early_op; +- +- if (!arm_get_set_operands (producer, consumer, &value, &op)) +- return 0; +- +- if ((early_op = arm_find_shift_sub_rtx (op))) +- { +- if (REG_P (early_op)) +- early_op = op; +- +- /* Any other canonicalisation of a shift is a shift-by-constant +- so we don't care. */ +- if (GET_CODE (early_op) == ASHIFT) +- return (!REG_P (XEXP (early_op, 0)) +- || !REG_P (XEXP (early_op, 1))); +- else +- return 1; +- } +- +- return 0; +-} +- + /* Return non-zero if the consumer (a multiply-accumulate instruction) + has an accumulator dependency on the result of the producer (a + multiplication instruction) and no other dependency on that result. */ +--- a/src/gcc/config/arm/aarch-cost-tables.h ++++ b/src/gcc/config/arm/aarch-cost-tables.h +@@ -154,7 +154,7 @@ const struct cpu_cost_table cortexa53_extra_costs = + COSTS_N_INSNS (1), /* extend. */ + COSTS_N_INSNS (1), /* add. */ + COSTS_N_INSNS (1), /* extend_add. */ +- COSTS_N_INSNS (7) /* idiv. */ ++ COSTS_N_INSNS (9) /* idiv. */ + }, + /* MULT DImode */ + { +--- a/src/gcc/config/arm/arm-builtins.c ++++ b/src/gcc/config/arm/arm-builtins.c +@@ -104,6 +104,13 @@ arm_ternop_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_none, qualifier_none, qualifier_none, qualifier_none }; + #define TERNOP_QUALIFIERS (arm_ternop_qualifiers) + ++/* unsigned T (unsigned T, unsigned T, unsigned T). */ ++static enum arm_type_qualifiers ++arm_unsigned_uternop_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned, ++ qualifier_unsigned }; ++#define UTERNOP_QUALIFIERS (arm_unsigned_uternop_qualifiers) ++ + /* T (T, immediate). */ + static enum arm_type_qualifiers + arm_binop_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS] +@@ -130,6 +137,13 @@ arm_mac_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] + qualifier_none, qualifier_lane_index }; + #define MAC_LANE_QUALIFIERS (arm_mac_lane_qualifiers) + ++/* unsigned T (unsigned T, unsigned T, unsigend T, lane index). */ ++static enum arm_type_qualifiers ++arm_umac_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned, ++ qualifier_unsigned, qualifier_lane_index }; ++#define UMAC_LANE_QUALIFIERS (arm_umac_lane_qualifiers) ++ + /* T (T, T, immediate). */ + static enum arm_type_qualifiers + arm_ternop_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS] +@@ -3060,15 +3074,15 @@ arm_expand_builtin (tree exp, + } + + for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++) +- if (d->code == (const enum arm_builtins) fcode) ++ if (d->code == (enum arm_builtins) fcode) + return arm_expand_binop_builtin (d->icode, exp, target); + + for (i = 0, d = bdesc_1arg; i < ARRAY_SIZE (bdesc_1arg); i++, d++) +- if (d->code == (const enum arm_builtins) fcode) ++ if (d->code == (enum arm_builtins) fcode) + return arm_expand_unop_builtin (d->icode, exp, target, 0); + + for (i = 0, d = bdesc_3arg; i < ARRAY_SIZE (bdesc_3arg); i++, d++) +- if (d->code == (const enum arm_builtins) fcode) ++ if (d->code == (enum arm_builtins) fcode) + return arm_expand_ternop_builtin (d->icode, exp, target); + + /* @@@ Should really do something sensible here. */ +--- a/src/gcc/config/arm/arm-c.c ++++ b/src/gcc/config/arm/arm-c.c +@@ -72,11 +72,11 @@ arm_cpu_builtins (struct cpp_reader* pfile) + + def_or_undef_macro (pfile, "__ARM_FEATURE_QRDMX", TARGET_NEON_RDMA); + +- if (TARGET_CRC32) +- builtin_define ("__ARM_FEATURE_CRC32"); +- ++ def_or_undef_macro (pfile, "__ARM_FEATURE_CRC32", TARGET_CRC32); ++ def_or_undef_macro (pfile, "__ARM_FEATURE_DOTPROD", TARGET_DOTPROD); + def_or_undef_macro (pfile, "__ARM_32BIT_STATE", TARGET_32BIT); + ++ cpp_undef (pfile, "__ARM_FEATURE_CMSE"); + if (arm_arch8 && !arm_arch_notm) + { + if (arm_arch_cmse && use_cmse) +--- a/src/gcc/config/arm/arm-cpu-cdata.h ++++ b/src/gcc/config/arm/arm-cpu-cdata.h +@@ -1005,6 +1005,20 @@ static const struct arm_arch_core_flag arm_arch_core_flags[] = + isa_nobit + }, + }, ++ { ++ "armv8.2-a+dotprod", ++ { ++ ISA_ARMv8_2a,isa_bit_dotprod, ++ isa_nobit ++ }, ++ }, ++ { ++ "armv8.2-a+fp16+dotprod", ++ { ++ ISA_ARMv8_2a,isa_bit_fp16,isa_bit_dotprod, ++ isa_nobit ++ }, ++ }, + { + "armv8-m.base", + { +--- a/src/gcc/config/arm/arm-cpu-data.h ++++ b/src/gcc/config/arm/arm-cpu-data.h +@@ -1535,6 +1535,26 @@ static const struct processors all_architectures[] = + }, + NULL + }, ++ { ++ "armv8.2-a+dotprod", TARGET_CPU_cortexa53, ++ (TF_CO_PROC), ++ "8A", BASE_ARCH_8A, ++ { ++ ISA_ARMv8_2a,isa_bit_dotprod, ++ isa_nobit ++ }, ++ NULL ++ }, ++ { ++ "armv8.2-a+fp16+dotprod", TARGET_CPU_cortexa53, ++ (TF_CO_PROC), ++ "8A", BASE_ARCH_8A, ++ { ++ ISA_ARMv8_2a,isa_bit_fp16,isa_bit_dotprod, ++ isa_nobit ++ }, ++ NULL ++ }, + { + "armv8-m.base", TARGET_CPU_cortexm23, + 0, +--- a/src/gcc/config/arm/arm-cpus.in ++++ b/src/gcc/config/arm/arm-cpus.in +@@ -267,6 +267,20 @@ begin arch armv8.2-a+fp16 + isa ARMv8_2a bit_fp16 + end arch armv8.2-a+fp16 + ++begin arch armv8.2-a+dotprod ++ tune for cortex-a53 ++ tune flags CO_PROC ++ base 8A ++ isa ARMv8_2a bit_dotprod ++end arch armv8.2-a+dotprod ++ ++begin arch armv8.2-a+fp16+dotprod ++ tune for cortex-a53 ++ tune flags CO_PROC ++ base 8A ++ isa ARMv8_2a bit_fp16 bit_dotprod ++end arch armv8.2-a+fp16+dotprod ++ + begin arch armv8-m.base + tune for cortex-m23 + base 8M_BASE +--- a/src/gcc/config/arm/arm-isa.h ++++ b/src/gcc/config/arm/arm-isa.h +@@ -66,6 +66,7 @@ enum isa_feature + isa_bit_fp_d32, /* 32 Double precision registers. */ + isa_bit_crypto, /* Crypto extension to ARMv8. */ + isa_bit_fp16, /* FP16 data processing (half-precision float). */ ++ isa_bit_dotprod, /* Dot Product instructions. */ + + /* ISA Quirks (errata?). Don't forget to add this to the list of + all quirks below. */ +@@ -128,7 +129,8 @@ enum isa_feature + #define ISA_ARMv8m_main ISA_ARMv7m, isa_bit_ARMv8, isa_bit_cmse + + /* List of all FPU bits to strip out if -mfpu is used to override the +- default. isa_bit_fp16 is deliberately missing from this list. */ ++ default. isa_bit_fp16 and isa_bit_dotprod are deliberately missing from ++ this list. */ + #define ISA_ALL_FPU isa_bit_VFPv2, isa_bit_VFPv3, isa_bit_VFPv4, \ + isa_bit_FPv5, isa_bit_FP_ARMv8, isa_bit_neon, isa_bit_fp16conv, \ + isa_bit_fp_dbl, isa_bit_fp_d32, isa_bit_crypto +@@ -144,6 +146,7 @@ enum isa_feature + #define ISA_FP_D32 ISA_FP_DBL, isa_bit_fp_d32 + #define ISA_NEON ISA_FP_D32, isa_bit_neon + #define ISA_CRYPTO ISA_NEON, isa_bit_crypto ++#define ISA_DOTPROD ISA_NEON, isa_bit_dotprod + + /* List of all quirk bits to strip out when comparing CPU features with + architectures. */ +--- a/src/gcc/config/arm/arm-tables.opt ++++ b/src/gcc/config/arm/arm-tables.opt +@@ -446,19 +446,25 @@ EnumValue + Enum(arm_arch) String(armv8.2-a+fp16) Value(30) + + EnumValue +-Enum(arm_arch) String(armv8-m.base) Value(31) ++Enum(arm_arch) String(armv8.2-a+dotprod) Value(31) + + EnumValue +-Enum(arm_arch) String(armv8-m.main) Value(32) ++Enum(arm_arch) String(armv8.2-a+fp16+dotprod) Value(32) + + EnumValue +-Enum(arm_arch) String(armv8-m.main+dsp) Value(33) ++Enum(arm_arch) String(armv8-m.base) Value(33) + + EnumValue +-Enum(arm_arch) String(iwmmxt) Value(34) ++Enum(arm_arch) String(armv8-m.main) Value(34) + + EnumValue +-Enum(arm_arch) String(iwmmxt2) Value(35) ++Enum(arm_arch) String(armv8-m.main+dsp) Value(35) ++ ++EnumValue ++Enum(arm_arch) String(iwmmxt) Value(36) ++ ++EnumValue ++Enum(arm_arch) String(iwmmxt2) Value(37) + + Enum + Name(arm_fpu) Type(enum fpu_type) +--- a/src/gcc/config/arm/arm.c ++++ b/src/gcc/config/arm/arm.c +@@ -85,6 +85,7 @@ static bool arm_const_not_ok_for_debug_p (rtx); + static int arm_needs_doubleword_align (machine_mode, const_tree); + static int arm_compute_static_chain_stack_bytes (void); + static arm_stack_offsets *arm_get_frame_offsets (void); ++static void arm_compute_frame_layout (void); + static void arm_add_gc_roots (void); + static int arm_gen_constant (enum rtx_code, machine_mode, rtx, + unsigned HOST_WIDE_INT, rtx, rtx, int, int); +@@ -680,6 +681,9 @@ static const struct attribute_spec arm_attribute_table[] = + #undef TARGET_SCALAR_MODE_SUPPORTED_P + #define TARGET_SCALAR_MODE_SUPPORTED_P arm_scalar_mode_supported_p + ++#undef TARGET_COMPUTE_FRAME_LAYOUT ++#define TARGET_COMPUTE_FRAME_LAYOUT arm_compute_frame_layout ++ + #undef TARGET_FRAME_POINTER_REQUIRED + #define TARGET_FRAME_POINTER_REQUIRED arm_frame_pointer_required + +@@ -4009,6 +4013,10 @@ use_simple_return_p (void) + { + arm_stack_offsets *offsets; + ++ /* Note this function can be called before or after reload. */ ++ if (!reload_completed) ++ arm_compute_frame_layout (); ++ + offsets = arm_get_frame_offsets (); + return offsets->outgoing_args != 0; + } +@@ -7858,6 +7866,8 @@ arm_legitimate_index_p (machine_mode mode, rtx index, RTX_CODE outer, + { + HOST_WIDE_INT val = INTVAL (index); + ++ /* Assume we emit ldrd or 2x ldr if !TARGET_LDRD. ++ If vldr is selected it uses arm_coproc_mem_operand. */ + if (TARGET_LDRD) + return val > -256 && val < 256; + else +@@ -7985,11 +7995,13 @@ thumb2_legitimate_index_p (machine_mode mode, rtx index, int strict_p) + if (code == CONST_INT) + { + HOST_WIDE_INT val = INTVAL (index); +- /* ??? Can we assume ldrd for thumb2? */ +- /* Thumb-2 ldrd only has reg+const addressing modes. */ +- /* ldrd supports offsets of +-1020. +- However the ldr fallback does not. */ +- return val > -256 && val < 256 && (val & 3) == 0; ++ /* Thumb-2 ldrd only has reg+const addressing modes. ++ Assume we emit ldrd or 2x ldr if !TARGET_LDRD. ++ If vldr is selected it uses arm_coproc_mem_operand. */ ++ if (TARGET_LDRD) ++ return IN_RANGE (val, -1020, 1020) && (val & 3) == 0; ++ else ++ return IN_RANGE (val, -255, 4095 - 4); + } + else + return 0; +@@ -9285,6 +9297,10 @@ arm_rtx_costs_internal (rtx x, enum rtx_code code, enum rtx_code outer_code, + *cost += COSTS_N_INSNS (speed_p ? extra_cost->mult[0].idiv : 0); + else + *cost = LIBCALL_COST (2); ++ ++ /* Make the cost of sdiv more expensive so when both sdiv and udiv are ++ possible udiv is prefered. */ ++ *cost += (code == DIV ? COSTS_N_INSNS (1) : 0); + return false; /* All arguments must be in registers. */ + + case MOD: +@@ -9307,7 +9323,9 @@ arm_rtx_costs_internal (rtx x, enum rtx_code code, enum rtx_code outer_code, + + /* Fall-through. */ + case UMOD: +- *cost = LIBCALL_COST (2); ++ /* Make the cost of sdiv more expensive so when both sdiv and udiv are ++ possible udiv is prefered. */ ++ *cost = LIBCALL_COST (2) + (code == MOD ? COSTS_N_INSNS (1) : 0); + return false; /* All arguments must be in registers. */ + + case ROTATE: +@@ -13548,10 +13566,7 @@ gen_ldm_seq (rtx *operands, int nops, bool sort_regs) + emit_insn (gen_addsi3 (newbase, base_reg_rtx, GEN_INT (offset))); + offset = 0; + if (!TARGET_THUMB1) +- { +- base_reg = regs[0]; +- base_reg_rtx = newbase; +- } ++ base_reg_rtx = newbase; + } + + for (i = 0; i < nops; i++) +@@ -14075,7 +14090,6 @@ arm_gen_movmemqi (rtx *operands) + { + HOST_WIDE_INT in_words_to_go, out_words_to_go, last_bytes; + HOST_WIDE_INT srcoffset, dstoffset; +- int i; + rtx src, dst, srcbase, dstbase; + rtx part_bytes_reg = NULL; + rtx mem; +@@ -14105,7 +14119,7 @@ arm_gen_movmemqi (rtx *operands) + if (out_words_to_go != in_words_to_go && ((in_words_to_go - 1) & 3) != 0) + part_bytes_reg = gen_rtx_REG (SImode, (in_words_to_go - 1) & 3); + +- for (i = 0; in_words_to_go >= 2; i+=4) ++ while (in_words_to_go >= 2) + { + if (in_words_to_go > 4) + emit_insn (arm_gen_load_multiple (arm_regs_in_sequence, 4, src, +@@ -16874,9 +16888,10 @@ compute_not_to_clear_mask (tree arg_type, rtx arg_rtx, int regno, + return not_to_clear_mask; + } + +-/* Saves callee saved registers, clears callee saved registers and caller saved +- registers not used to pass arguments before a cmse_nonsecure_call. And +- restores the callee saved registers after. */ ++/* Clears caller saved registers not used to pass arguments before a ++ cmse_nonsecure_call. Saving, clearing and restoring of callee saved ++ registers is done in __gnu_cmse_nonsecure_call libcall. ++ See libgcc/config/arm/cmse_nonsecure_call.S. */ + + static void + cmse_nonsecure_call_clear_caller_saved (void) +@@ -19116,7 +19131,7 @@ arm_compute_static_chain_stack_bytes (void) + + /* Compute a bit mask of which registers need to be + saved on the stack for the current function. +- This is used by arm_get_frame_offsets, which may add extra registers. */ ++ This is used by arm_compute_frame_layout, which may add extra registers. */ + + static unsigned long + arm_compute_save_reg_mask (void) +@@ -20755,12 +20770,25 @@ any_sibcall_could_use_r3 (void) + alignment. */ + + ++/* Return cached stack offsets. */ ++ ++static arm_stack_offsets * ++arm_get_frame_offsets (void) ++{ ++ struct arm_stack_offsets *offsets; ++ ++ offsets = &cfun->machine->stack_offsets; ++ ++ return offsets; ++} ++ ++ + /* Calculate stack offsets. These are used to calculate register elimination + offsets and in prologue/epilogue code. Also calculates which registers + should be saved. */ + +-static arm_stack_offsets * +-arm_get_frame_offsets (void) ++static void ++arm_compute_frame_layout (void) + { + struct arm_stack_offsets *offsets; + unsigned long func_type; +@@ -20771,9 +20799,6 @@ arm_get_frame_offsets (void) + + offsets = &cfun->machine->stack_offsets; + +- if (reload_completed) +- return offsets; +- + /* Initially this is the size of the local variables. It will translated + into an offset once we have determined the size of preceding data. */ + frame_size = ROUND_UP_WORD (get_frame_size ()); +@@ -20838,7 +20863,7 @@ arm_get_frame_offsets (void) + { + offsets->outgoing_args = offsets->soft_frame; + offsets->locals_base = offsets->soft_frame; +- return offsets; ++ return; + } + + /* Ensure SFP has the correct alignment. */ +@@ -20914,8 +20939,6 @@ arm_get_frame_offsets (void) + offsets->outgoing_args += 4; + gcc_assert (!(offsets->outgoing_args & 7)); + } +- +- return offsets; + } + + +@@ -21554,7 +21577,7 @@ arm_expand_prologue (void) + { + /* If no coprocessor registers are being pushed and we don't have + to worry about a frame pointer then push extra registers to +- create the stack frame. This is done is a way that does not ++ create the stack frame. This is done in a way that does not + alter the frame layout, so is independent of the epilogue. */ + int n; + int frame; +@@ -21682,8 +21705,8 @@ arm_expand_prologue (void) + will prevent the scheduler from moving stores to the frame + before the stack adjustment. */ + if (frame_pointer_needed) +- insn = emit_insn (gen_stack_tie (stack_pointer_rtx, +- hard_frame_pointer_rtx)); ++ emit_insn (gen_stack_tie (stack_pointer_rtx, ++ hard_frame_pointer_rtx)); + } + + +@@ -23768,7 +23791,6 @@ thumb_pop (FILE *f, unsigned long mask) + { + int regno; + int lo_mask = mask & 0xFF; +- int pushed_words = 0; + + gcc_assert (mask); + +@@ -23791,8 +23813,6 @@ thumb_pop (FILE *f, unsigned long mask) + + if ((lo_mask & ~1) != 0) + fprintf (f, ", "); +- +- pushed_words++; + } + } + +@@ -24067,9 +24087,6 @@ thumb_exit (FILE *f, int reg_containing_return_addr) + move_to = number_of_first_bit_set (regs_to_pop); + + asm_fprintf (f, "\tmov\t%r, %r\n", move_to, popped_into); +- +- regs_to_pop &= ~(1 << move_to); +- + --pops_needed; + } + +@@ -28266,17 +28283,32 @@ arm_expand_compare_and_swap (rtx operands[]) + gcc_unreachable (); + } + +- switch (mode) ++ if (TARGET_THUMB1) + { +- case QImode: gen = gen_atomic_compare_and_swapqi_1; break; +- case HImode: gen = gen_atomic_compare_and_swaphi_1; break; +- case SImode: gen = gen_atomic_compare_and_swapsi_1; break; +- case DImode: gen = gen_atomic_compare_and_swapdi_1; break; +- default: +- gcc_unreachable (); ++ switch (mode) ++ { ++ case QImode: gen = gen_atomic_compare_and_swapt1qi_1; break; ++ case HImode: gen = gen_atomic_compare_and_swapt1hi_1; break; ++ case SImode: gen = gen_atomic_compare_and_swapt1si_1; break; ++ case DImode: gen = gen_atomic_compare_and_swapt1di_1; break; ++ default: ++ gcc_unreachable (); ++ } ++ } ++ else ++ { ++ switch (mode) ++ { ++ case QImode: gen = gen_atomic_compare_and_swap32qi_1; break; ++ case HImode: gen = gen_atomic_compare_and_swap32hi_1; break; ++ case SImode: gen = gen_atomic_compare_and_swap32si_1; break; ++ case DImode: gen = gen_atomic_compare_and_swap32di_1; break; ++ default: ++ gcc_unreachable (); ++ } + } + +- bdst = TARGET_THUMB1 ? bval : gen_rtx_REG (CCmode, CC_REGNUM); ++ bdst = TARGET_THUMB1 ? bval : gen_rtx_REG (CC_Zmode, CC_REGNUM); + emit_insn (gen (bdst, rval, mem, oldval, newval, is_weak, mod_s, mod_f)); + + if (mode == QImode || mode == HImode) +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h +@@ -209,6 +209,12 @@ extern tree arm_fp16_type_node; + /* FPU supports ARMv8.1 Adv.SIMD extensions. */ + #define TARGET_NEON_RDMA (TARGET_NEON && arm_arch8_1) + ++/* Supports the Dot Product AdvSIMD extensions. */ ++#define TARGET_DOTPROD (TARGET_NEON \ ++ && bitmap_bit_p (arm_active_target.isa, \ ++ isa_bit_dotprod) \ ++ && arm_arch8_2) ++ + /* FPU supports the floating point FP16 instructions for ARMv8.2 and later. */ + #define TARGET_VFP_FP16INST \ + (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 && arm_fp16_inst) +@@ -682,7 +688,7 @@ extern int arm_arch_cmse; + /* Standard register usage. */ + + /* Register allocation in ARM Procedure Call Standard +- (S - saved over call). ++ (S - saved over call, F - Frame-related). + + r0 * argument word/integer result + r1-r3 argument word +--- a/src/gcc/config/arm/arm.md ++++ b/src/gcc/config/arm/arm.md +@@ -457,14 +457,13 @@ + ) + + (define_insn_and_split "*arm_adddi3" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,&r,&r,&r,&r") +- (plus:DI (match_operand:DI 1 "s_register_operand" "%0, 0, r, 0, r") +- (match_operand:DI 2 "arm_adddi_operand" "r, 0, r, Dd, Dd"))) ++ [(set (match_operand:DI 0 "arm_general_register_operand" "=&r,&r,&r,&r,&r") ++ (plus:DI (match_operand:DI 1 "arm_general_register_operand" "%0, 0, r, 0, r") ++ (match_operand:DI 2 "arm_general_adddi_operand" "r, 0, r, Dd, Dd"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT && !TARGET_NEON" + "#" +- "TARGET_32BIT && reload_completed +- && ! (TARGET_NEON && IS_VFP_REGNUM (REGNO (operands[0])))" ++ "TARGET_32BIT && ((!TARGET_NEON && !TARGET_IWMMXT) || reload_completed)" + [(parallel [(set (reg:CC_C CC_REGNUM) + (compare:CC_C (plus:SI (match_dup 1) (match_dup 2)) + (match_dup 1))) +@@ -1263,13 +1262,13 @@ + ) + + (define_insn_and_split "*arm_subdi3" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,&r,&r") +- (minus:DI (match_operand:DI 1 "s_register_operand" "0,r,0") +- (match_operand:DI 2 "s_register_operand" "r,0,0"))) ++ [(set (match_operand:DI 0 "arm_general_register_operand" "=&r,&r,&r") ++ (minus:DI (match_operand:DI 1 "arm_general_register_operand" "0,r,0") ++ (match_operand:DI 2 "arm_general_register_operand" "r,0,0"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT && !TARGET_NEON" + "#" ; "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2" +- "&& reload_completed" ++ "&& (!TARGET_IWMMXT || reload_completed)" + [(parallel [(set (reg:CC CC_REGNUM) + (compare:CC (match_dup 1) (match_dup 2))) + (set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))]) +@@ -2255,7 +2254,24 @@ + (and:DI (match_operand:DI 1 "s_register_operand" "") + (match_operand:DI 2 "neon_inv_logic_op2" "")))] + "TARGET_32BIT" +- "" ++ " ++ if (!TARGET_NEON && !TARGET_IWMMXT) ++ { ++ rtx low = simplify_gen_binary (AND, SImode, ++ gen_lowpart (SImode, operands[1]), ++ gen_lowpart (SImode, operands[2])); ++ rtx high = simplify_gen_binary (AND, SImode, ++ gen_highpart (SImode, operands[1]), ++ gen_highpart_mode (SImode, DImode, ++ operands[2])); ++ ++ emit_insn (gen_rtx_SET (gen_lowpart (SImode, operands[0]), low)); ++ emit_insn (gen_rtx_SET (gen_highpart (SImode, operands[0]), high)); ++ ++ DONE; ++ } ++ /* Otherwise expand pattern as above. */ ++ " + ) + + (define_insn_and_split "*anddi3_insn" +@@ -3128,7 +3144,24 @@ + (ior:DI (match_operand:DI 1 "s_register_operand" "") + (match_operand:DI 2 "neon_logic_op2" "")))] + "TARGET_32BIT" +- "" ++ " ++ if (!TARGET_NEON && !TARGET_IWMMXT) ++ { ++ rtx low = simplify_gen_binary (IOR, SImode, ++ gen_lowpart (SImode, operands[1]), ++ gen_lowpart (SImode, operands[2])); ++ rtx high = simplify_gen_binary (IOR, SImode, ++ gen_highpart (SImode, operands[1]), ++ gen_highpart_mode (SImode, DImode, ++ operands[2])); ++ ++ emit_insn (gen_rtx_SET (gen_lowpart (SImode, operands[0]), low)); ++ emit_insn (gen_rtx_SET (gen_highpart (SImode, operands[0]), high)); ++ ++ DONE; ++ } ++ /* Otherwise expand pattern as above. */ ++ " + ) + + (define_insn_and_split "*iordi3_insn" +@@ -3316,6 +3349,22 @@ + no NEON instructions that take an immediate. */ + if (TARGET_IWMMXT && !REG_P (operands[2])) + operands[2] = force_reg (DImode, operands[2]); ++ if (!TARGET_NEON && !TARGET_IWMMXT) ++ { ++ rtx low = simplify_gen_binary (XOR, SImode, ++ gen_lowpart (SImode, operands[1]), ++ gen_lowpart (SImode, operands[2])); ++ rtx high = simplify_gen_binary (XOR, SImode, ++ gen_highpart (SImode, operands[1]), ++ gen_highpart_mode (SImode, DImode, ++ operands[2])); ++ ++ emit_insn (gen_rtx_SET (gen_lowpart (SImode, operands[0]), low)); ++ emit_insn (gen_rtx_SET (gen_highpart (SImode, operands[0]), high)); ++ ++ DONE; ++ } ++ /* Otherwise expand pattern as above. */ + } + ) + +@@ -5024,7 +5073,31 @@ + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "") + +-(define_insn_and_split "one_cmpldi2" ++(define_expand "one_cmpldi2" ++ [(set (match_operand:DI 0 "s_register_operand" "") ++ (not:DI (match_operand:DI 1 "s_register_operand" "")))] ++ "TARGET_32BIT" ++ " ++ if (!TARGET_NEON && !TARGET_IWMMXT) ++ { ++ rtx low = simplify_gen_unary (NOT, SImode, ++ gen_lowpart (SImode, operands[1]), ++ SImode); ++ rtx high = simplify_gen_unary (NOT, SImode, ++ gen_highpart_mode (SImode, DImode, ++ operands[1]), ++ SImode); ++ ++ emit_insn (gen_rtx_SET (gen_lowpart (SImode, operands[0]), low)); ++ emit_insn (gen_rtx_SET (gen_highpart (SImode, operands[0]), high)); ++ ++ DONE; ++ } ++ /* Otherwise expand pattern as above. */ ++ " ++) ++ ++(define_insn_and_split "*one_cmpldi2_insn" + [(set (match_operand:DI 0 "s_register_operand" "=w,&r,&r,?w") + (not:DI (match_operand:DI 1 "s_register_operand" " w, 0, r, w")))] + "TARGET_32BIT" +--- a/src/gcc/config/arm/arm_neon.h ++++ b/src/gcc/config/arm/arm_neon.h +@@ -17069,14 +17069,22 @@ __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vadd_f16 (float16x4_t __a, float16x4_t __b) + { ++#ifdef __FAST_MATH__ ++ return __a + __b; ++#else + return __builtin_neon_vaddv4hf (__a, __b); ++#endif + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vaddq_f16 (float16x8_t __a, float16x8_t __b) + { ++#ifdef __FAST_MATH__ ++ return __a + __b; ++#else + return __builtin_neon_vaddv8hf (__a, __b); ++#endif + } + + __extension__ extern __inline uint16x4_t +@@ -17587,7 +17595,11 @@ __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vmul_f16 (float16x4_t __a, float16x4_t __b) + { ++#ifdef __FAST_MATH__ ++ return __a * __b; ++#else + return __builtin_neon_vmulfv4hf (__a, __b); ++#endif + } + + __extension__ extern __inline float16x4_t +@@ -17608,7 +17620,11 @@ __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vmulq_f16 (float16x8_t __a, float16x8_t __b) + { ++#ifdef __FAST_MATH__ ++ return __a * __b; ++#else + return __builtin_neon_vmulfv8hf (__a, __b); ++#endif + } + + __extension__ extern __inline float16x8_t +@@ -17804,14 +17820,22 @@ __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vsub_f16 (float16x4_t __a, float16x4_t __b) + { ++#ifdef __FAST_MATH__ ++ return __a - __b; ++#else + return __builtin_neon_vsubv4hf (__a, __b); ++#endif + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vsubq_f16 (float16x8_t __a, float16x8_t __b) + { ++#ifdef __FAST_MATH__ ++ return __a - __b; ++#else + return __builtin_neon_vsubv8hf (__a, __b); ++#endif + } + + #endif /* __ARM_FEATURE_VECTOR_FP16_ARITHMETIC. */ +@@ -18010,6 +18034,69 @@ vzipq_f16 (float16x8_t __a, float16x8_t __b) + + #endif + ++/* AdvSIMD Dot Product intrinsics. */ ++ ++#ifdef __ARM_FEATURE_DOTPROD ++ ++__extension__ extern __inline uint32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b) ++{ ++ return __builtin_neon_udotv8qi_uuuu (__r, __a, __b); ++} ++ ++__extension__ extern __inline uint32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b) ++{ ++ return __builtin_neon_udotv16qi_uuuu (__r, __a, __b); ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b) ++{ ++ return __builtin_neon_sdotv8qi (__r, __a, __b); ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b) ++{ ++ return __builtin_neon_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_neon_udot_lanev8qi_uuuus (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline uint32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b, ++ const int __index) ++{ ++ return __builtin_neon_udot_lanev16qi_uuuus (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index) ++{ ++ return __builtin_neon_sdot_lanev8qi (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index) ++{ ++ return __builtin_neon_sdot_lanev16qi (__r, __a, __b, __index); ++} ++ ++#endif /* __ARM_FEATURE_DOTPROD */ ++ + #ifdef __cplusplus + } + #endif +--- a/src/gcc/config/arm/arm_neon_builtins.def ++++ b/src/gcc/config/arm/arm_neon_builtins.def +@@ -331,3 +331,7 @@ VAR11 (STORE1, vst4, + v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf) + VAR9 (STORE1LANE, vst4_lane, + v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf) ++VAR2 (TERNOP, sdot, v8qi, v16qi) ++VAR2 (UTERNOP, udot, v8qi, v16qi) ++VAR2 (MAC_LANE, sdot_lane, v8qi, v16qi) ++VAR2 (UMAC_LANE, udot_lane, v8qi, v16qi) +--- a/src/gcc/config/arm/cortex-a53.md ++++ b/src/gcc/config/arm/cortex-a53.md +@@ -211,7 +211,7 @@ + + (define_bypass 1 "cortex_a53_alu*" + "cortex_a53_alu_shift*" +- "aarch_forward_to_shift_is_not_shifted_reg") ++ "arm_no_early_alu_shift_dep") + + (define_bypass 2 "cortex_a53_alu*" + "cortex_a53_alu_*,cortex_a53_shift*") +@@ -254,6 +254,16 @@ + "cortex_a53_store*" + "arm_no_early_store_addr_dep") + ++;; Model a bypass for load to load/store address. ++ ++(define_bypass 3 "cortex_a53_load1" ++ "cortex_a53_load*" ++ "arm_early_load_addr_dep_ptr") ++ ++(define_bypass 3 "cortex_a53_load1" ++ "cortex_a53_store*" ++ "arm_early_store_addr_dep_ptr") ++ + ;; Model a GP->FP register move as similar to stores. + + (define_bypass 0 "cortex_a53_alu*,cortex_a53_shift*" +@@ -501,19 +511,19 @@ + ;; Floating-point arithmetic. + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +-(define_insn_reservation "cortex_a53_fpalu" 5 ++(define_insn_reservation "cortex_a53_fpalu" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fmov, + f_cvt, fcmps, fcmpd, fccmps, fccmpd, fcsel, + f_rints, f_rintd, f_minmaxs, f_minmaxd")) + "cortex_a53_slot_any,cortex_a53_fp_alu") + +-(define_insn_reservation "cortex_a53_fconst" 3 ++(define_insn_reservation "cortex_a53_fconst" 2 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "fconsts,fconstd")) + "cortex_a53_slot_any,cortex_a53_fp_alu") + +-(define_insn_reservation "cortex_a53_fpmul" 5 ++(define_insn_reservation "cortex_a53_fpmul" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "fmuls,fmuld")) + "cortex_a53_slot_any,cortex_a53_fp_mul") +@@ -564,7 +574,7 @@ + ;; Floating-point load/store. + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +-(define_insn_reservation "cortex_a53_f_load_64" 4 ++(define_insn_reservation "cortex_a53_f_load_64" 3 + (and (eq_attr "tune" "cortexa53") + (ior (eq_attr "type" "f_loads,f_loadd") + (eq_attr "cortex_a53_advsimd_type" +@@ -572,7 +582,7 @@ + "cortex_a53_slot_any+cortex_a53_ls_agen, + cortex_a53_load") + +-(define_insn_reservation "cortex_a53_f_load_many" 5 ++(define_insn_reservation "cortex_a53_f_load_many" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "cortex_a53_advsimd_type" + "advsimd_load_128,advsimd_load_lots")) +@@ -606,22 +616,22 @@ + ;; or a 128-bit operation in which case we require in our model that we + ;; issue from slot 0. + +-(define_insn_reservation "cortex_a53_advsimd_alu" 5 ++(define_insn_reservation "cortex_a53_advsimd_alu" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "cortex_a53_advsimd_type" "advsimd_alu")) + "cortex_a53_slot_any,cortex_a53_fp_alu") + +-(define_insn_reservation "cortex_a53_advsimd_alu_q" 5 ++(define_insn_reservation "cortex_a53_advsimd_alu_q" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "cortex_a53_advsimd_type" "advsimd_alu_q")) + "cortex_a53_slot0,cortex_a53_fp_alu_q") + +-(define_insn_reservation "cortex_a53_advsimd_mul" 5 ++(define_insn_reservation "cortex_a53_advsimd_mul" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "cortex_a53_advsimd_type" "advsimd_mul")) + "cortex_a53_slot_any,cortex_a53_fp_mul") + +-(define_insn_reservation "cortex_a53_advsimd_mul_q" 5 ++(define_insn_reservation "cortex_a53_advsimd_mul_q" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "cortex_a53_advsimd_type" "advsimd_mul_q")) + "cortex_a53_slot0,cortex_a53_fp_mul_q") +@@ -700,20 +710,18 @@ + ;; multiply-accumulate operations as a bypass reducing the latency + ;; of producing instructions to near zero. + +-(define_bypass 1 "cortex_a53_fp*, ++(define_bypass 1 "cortex_a53_fpalu, ++ cortex_a53_fpmul, + cortex_a53_r2f, ++ cortex_a53_r2f_cvt, ++ cortex_a53_fconst, + cortex_a53_f_load*" + "cortex_a53_fpmac" + "aarch_accumulator_forwarding") + +-;; Model a bypass from the result of an FP operation to a use. +- +-(define_bypass 4 "cortex_a53_fpalu, +- cortex_a53_fpmul" +- "cortex_a53_fpalu, +- cortex_a53_fpmul, +- cortex_a53_fpmac, +- cortex_a53_advsimd_div*") ++(define_bypass 4 "cortex_a53_fpmac" ++ "cortex_a53_fpmac" ++ "aarch_accumulator_forwarding") + + ;; We want AESE and AESMC to end up consecutive to one another. + +--- a/src/gcc/config/arm/iterators.md ++++ b/src/gcc/config/arm/iterators.md +@@ -45,6 +45,9 @@ + ;; A list of the 32bit and 64bit integer modes + (define_mode_iterator SIDI [SI DI]) + ++;; A list of atomic compare and swap success return modes ++(define_mode_iterator CCSI [(CC_Z "TARGET_32BIT") (SI "TARGET_THUMB1")]) ++ + ;; A list of modes which the VFP unit can handle + (define_mode_iterator SDF [(SF "") (DF "TARGET_VFP_DOUBLE")]) + +@@ -411,10 +414,16 @@ + + (define_int_iterator VFM_LANE_AS [UNSPEC_VFMA_LANE UNSPEC_VFMS_LANE]) + ++(define_int_iterator DOTPROD [UNSPEC_DOT_S UNSPEC_DOT_U]) ++ + ;;---------------------------------------------------------------------------- + ;; Mode attributes + ;;---------------------------------------------------------------------------- + ++;; Determine name of atomic compare and swap from success result mode. This ++;; distinguishes between 16-bit Thumb and 32-bit Thumb/ARM. ++(define_mode_attr arch [(CC_Z "32") (SI "t1")]) ++ + ;; Determine element size suffix from vector mode. + (define_mode_attr MMX_char [(V8QI "b") (V4HI "h") (V2SI "w") (DI "d")]) + +@@ -709,6 +718,9 @@ + + (define_mode_attr pf [(V8QI "p") (V16QI "p") (V2SF "f") (V4SF "f")]) + ++(define_mode_attr VSI2QI [(V2SI "V8QI") (V4SI "V16QI")]) ++(define_mode_attr vsi2qi [(V2SI "v8qi") (V4SI "v16qi")]) ++ + ;;---------------------------------------------------------------------------- + ;; Code attributes + ;;---------------------------------------------------------------------------- +@@ -805,6 +817,7 @@ + (UNSPEC_VSRA_S_N "s") (UNSPEC_VSRA_U_N "u") + (UNSPEC_VRSRA_S_N "s") (UNSPEC_VRSRA_U_N "u") + (UNSPEC_VCVTH_S "s") (UNSPEC_VCVTH_U "u") ++ (UNSPEC_DOT_S "s") (UNSPEC_DOT_U "u") + ]) + + (define_int_attr vcvth_op +@@ -992,3 +1005,6 @@ + + (define_int_attr mrrc [(VUNSPEC_MRRC "mrrc") (VUNSPEC_MRRC2 "mrrc2")]) + (define_int_attr MRRC [(VUNSPEC_MRRC "MRRC") (VUNSPEC_MRRC2 "MRRC2")]) ++ ++(define_int_attr opsuffix [(UNSPEC_DOT_S "s8") ++ (UNSPEC_DOT_U "u8")]) +--- a/src/gcc/config/arm/neon.md ++++ b/src/gcc/config/arm/neon.md +@@ -505,6 +505,23 @@ + (const_string "neon_add")))] + ) + ++;; As with SFmode, full support for HFmode vector arithmetic is only available ++;; when flag-unsafe-math-optimizations is enabled. ++ ++(define_insn "add3" ++ [(set ++ (match_operand:VH 0 "s_register_operand" "=w") ++ (plus:VH ++ (match_operand:VH 1 "s_register_operand" "w") ++ (match_operand:VH 2 "s_register_operand" "w")))] ++ "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations" ++ "vadd.\t%0, %1, %2" ++ [(set (attr "type") ++ (if_then_else (match_test "") ++ (const_string "neon_fp_addsub_s") ++ (const_string "neon_add")))] ++) ++ + (define_insn "add3_fp16" + [(set + (match_operand:VH 0 "s_register_operand" "=w") +@@ -557,6 +574,17 @@ + (const_string "neon_sub")))] + ) + ++(define_insn "sub3" ++ [(set ++ (match_operand:VH 0 "s_register_operand" "=w") ++ (minus:VH ++ (match_operand:VH 1 "s_register_operand" "w") ++ (match_operand:VH 2 "s_register_operand" "w")))] ++ "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations" ++ "vsub.\t%0, %1, %2" ++ [(set_attr "type" "neon_sub")] ++) ++ + (define_insn "sub3_fp16" + [(set + (match_operand:VH 0 "s_register_operand" "=w") +@@ -650,7 +678,7 @@ + (match_operand:VCVTF 2 "register_operand" "w") + (match_operand:VCVTF 3 "register_operand" "0")))] + "TARGET_NEON && TARGET_FMA && flag_unsafe_math_optimizations" +- "vfma%?.\\t%0, %1, %2" ++ "vfma.\\t%0, %1, %2" + [(set_attr "type" "neon_fp_mla_s")] + ) + +@@ -660,12 +688,21 @@ + (match_operand:VCVTF 2 "register_operand" "w") + (match_operand:VCVTF 3 "register_operand" "0")))] + "TARGET_NEON && TARGET_FMA" +- "vfma%?.\\t%0, %1, %2" ++ "vfma.\\t%0, %1, %2" + [(set_attr "type" "neon_fp_mla_s")] + ) + +-;; There is limited support for unsafe-math optimizations using the NEON FP16 +-;; arithmetic instructions, so only the intrinsic is currently supported. ++(define_insn "fma4" ++ [(set (match_operand:VH 0 "register_operand" "=w") ++ (fma:VH ++ (match_operand:VH 1 "register_operand" "w") ++ (match_operand:VH 2 "register_operand" "w") ++ (match_operand:VH 3 "register_operand" "0")))] ++ "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations" ++ "vfma.\\t%0, %1, %2" ++ [(set_attr "type" "neon_fp_mla_s")] ++) ++ + (define_insn "fma4_intrinsic" + [(set (match_operand:VH 0 "register_operand" "=w") + (fma:VH +@@ -683,7 +720,7 @@ + (match_operand:VCVTF 2 "register_operand" "w") + (match_operand:VCVTF 3 "register_operand" "0")))] + "TARGET_NEON && TARGET_FMA && flag_unsafe_math_optimizations" +- "vfms%?.\\t%0, %1, %2" ++ "vfms.\\t%0, %1, %2" + [(set_attr "type" "neon_fp_mla_s")] + ) + +@@ -694,7 +731,7 @@ + (match_operand:VCVTF 2 "register_operand" "w") + (match_operand:VCVTF 3 "register_operand" "0")))] + "TARGET_NEON && TARGET_FMA" +- "vfms%?.\\t%0, %1, %2" ++ "vfms.\\t%0, %1, %2" + [(set_attr "type" "neon_fp_mla_s")] + ) + +@@ -715,7 +752,7 @@ + "s_register_operand" "w")] + NEON_VRINT))] + "TARGET_NEON && TARGET_FPU_ARMV8" +- "vrint%?.f32\\t%0, %1" ++ "vrint.f32\\t%0, %1" + [(set_attr "type" "neon_fp_round_")] + ) + +@@ -2175,6 +2212,17 @@ + (const_string "neon_mul_")))] + ) + ++(define_insn "mul3" ++ [(set ++ (match_operand:VH 0 "s_register_operand" "=w") ++ (mult:VH ++ (match_operand:VH 1 "s_register_operand" "w") ++ (match_operand:VH 2 "s_register_operand" "w")))] ++ "TARGET_NEON_FP16INST && flag_unsafe_math_optimizations" ++ "vmul.f16\t%0, %1, %2" ++ [(set_attr "type" "neon_mul_")] ++) ++ + (define_insn "neon_vmulf" + [(set + (match_operand:VH 0 "s_register_operand" "=w") +@@ -2996,6 +3044,76 @@ + DONE; + }) + ++;; These instructions map to the __builtins for the Dot Product operations. ++(define_insn "neon_dot" ++ [(set (match_operand:VCVTI 0 "register_operand" "=w") ++ (plus:VCVTI (match_operand:VCVTI 1 "register_operand" "0") ++ (unspec:VCVTI [(match_operand: 2 ++ "register_operand" "w") ++ (match_operand: 3 ++ "register_operand" "w")] ++ DOTPROD)))] ++ "TARGET_DOTPROD" ++ "vdot.\\t%0, %2, %3" ++ [(set_attr "type" "neon_dot")] ++) ++ ++;; These instructions map to the __builtins for the Dot Product ++;; indexed operations. ++(define_insn "neon_dot_lane" ++ [(set (match_operand:VCVTI 0 "register_operand" "=w") ++ (plus:VCVTI (match_operand:VCVTI 1 "register_operand" "0") ++ (unspec:VCVTI [(match_operand: 2 ++ "register_operand" "w") ++ (match_operand:V8QI 3 "register_operand" "t") ++ (match_operand:SI 4 "immediate_operand" "i")] ++ DOTPROD)))] ++ "TARGET_DOTPROD" ++ { ++ operands[4] ++ = GEN_INT (NEON_ENDIAN_LANE_N (V8QImode, INTVAL (operands[4]))); ++ return "vdot.\\t%0, %2, %P3[%c4]"; ++ } ++ [(set_attr "type" "neon_dot")] ++) ++ ++;; These expands map to the Dot Product optab the vectorizer checks for. ++;; The auto-vectorizer expects a dot product builtin that also does an ++;; accumulation into the provided register. ++;; Given the following pattern ++;; ++;; for (i=0; idot_prod" ++ [(set (match_operand:VCVTI 0 "register_operand") ++ (plus:VCVTI (unspec:VCVTI [(match_operand: 1 ++ "register_operand") ++ (match_operand: 2 ++ "register_operand")] ++ DOTPROD) ++ (match_operand:VCVTI 3 "register_operand")))] ++ "TARGET_DOTPROD" ++{ ++ emit_insn ( ++ gen_neon_dot (operands[3], operands[3], operands[1], ++ operands[2])); ++ emit_insn (gen_rtx_SET (operands[0], operands[3])); ++ DONE; ++}) ++ + (define_expand "neon_copysignf" + [(match_operand:VCVTF 0 "register_operand") + (match_operand:VCVTF 1 "register_operand") +--- a/src/gcc/config/arm/predicates.md ++++ b/src/gcc/config/arm/predicates.md +@@ -82,6 +82,11 @@ + || REGNO (op) >= FIRST_PSEUDO_REGISTER)); + }) + ++(define_predicate "arm_general_adddi_operand" ++ (ior (match_operand 0 "arm_general_register_operand") ++ (and (match_code "const_int") ++ (match_test "const_ok_for_dimode_op (INTVAL (op), PLUS)")))) ++ + (define_predicate "vfp_register_operand" + (match_code "reg,subreg") + { +--- a/src/gcc/config/arm/sync.md ++++ b/src/gcc/config/arm/sync.md +@@ -191,9 +191,9 @@ + + ;; Constraints of this pattern must be at least as strict as those of the + ;; cbranchsi operations in thumb1.md and aim to be as permissive. +-(define_insn_and_split "atomic_compare_and_swap_1" +- [(set (match_operand 0 "cc_register_operand" "=&c,&l,&l,&l") ;; bool out +- (unspec_volatile:CC_Z [(const_int 0)] VUNSPEC_ATOMIC_CAS)) ++(define_insn_and_split "atomic_compare_and_swap_1" ++ [(set (match_operand:CCSI 0 "cc_register_operand" "=&c,&l,&l,&l") ;; bool out ++ (unspec_volatile:CCSI [(const_int 0)] VUNSPEC_ATOMIC_CAS)) + (set (match_operand:SI 1 "s_register_operand" "=&r,&l,&0,&l*h") ;; val out + (zero_extend:SI + (match_operand:NARROW 2 "mem_noofs_operand" "+Ua,Ua,Ua,Ua"))) ;; memory +@@ -223,9 +223,9 @@ + + ;; Constraints of this pattern must be at least as strict as those of the + ;; cbranchsi operations in thumb1.md and aim to be as permissive. +-(define_insn_and_split "atomic_compare_and_swap_1" +- [(set (match_operand 0 "cc_register_operand" "=&c,&l,&l,&l") ;; bool out +- (unspec_volatile:CC_Z [(const_int 0)] VUNSPEC_ATOMIC_CAS)) ++(define_insn_and_split "atomic_compare_and_swap_1" ++ [(set (match_operand:CCSI 0 "cc_register_operand" "=&c,&l,&l,&l") ;; bool out ++ (unspec_volatile:CCSI [(const_int 0)] VUNSPEC_ATOMIC_CAS)) + (set (match_operand:SIDI 1 "s_register_operand" "=&r,&l,&0,&l*h") ;; val out + (match_operand:SIDI 2 "mem_noofs_operand" "+Ua,Ua,Ua,Ua")) ;; memory + (set (match_dup 2) +--- a/src/gcc/config/arm/t-aprofile ++++ b/src/gcc/config/arm/t-aprofile +@@ -24,30 +24,13 @@ + # have their default values during the configure step. We enforce + # this during the top-level configury. + +-MULTILIB_OPTIONS = +-MULTILIB_DIRNAMES = +-MULTILIB_EXCEPTIONS = +-MULTILIB_MATCHES = +-MULTILIB_REUSE = ++# Arch and FPU variants to build libraries with + +-# We have the following hierachy: +-# ISA: A32 (.) or T32 (thumb) +-# Architecture: ARMv7-A (v7-a), ARMv7VE (v7ve), or ARMv8-A (v8-a). +-# FPU: VFPv3-D16 (fpv3), NEONv1 (simdv1), VFPv4-D16 (fpv4), +-# NEON-VFPV4 (simdvfpv4), NEON for ARMv8 (simdv8), or None (.). +-# Float-abi: Soft (.), softfp (softfp), or hard (hardfp). ++MULTI_ARCH_OPTS_A = march=armv7-a/march=armv7ve/march=armv8-a ++MULTI_ARCH_DIRS_A = v7-a v7ve v8-a + +-MULTILIB_OPTIONS += mthumb +-MULTILIB_DIRNAMES += thumb +- +-MULTILIB_OPTIONS += march=armv7-a/march=armv7ve/march=armv8-a +-MULTILIB_DIRNAMES += v7-a v7ve v8-a +- +-MULTILIB_OPTIONS += mfpu=vfpv3-d16/mfpu=neon/mfpu=vfpv4-d16/mfpu=neon-vfpv4/mfpu=neon-fp-armv8 +-MULTILIB_DIRNAMES += fpv3 simdv1 fpv4 simdvfpv4 simdv8 +- +-MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard +-MULTILIB_DIRNAMES += softfp hard ++MULTI_FPU_OPTS_A = mfpu=vfpv3-d16/mfpu=neon/mfpu=vfpv4-d16/mfpu=neon-vfpv4/mfpu=neon-fp-armv8 ++MULTI_FPU_DIRS_A = fpv3 simdv1 fpv4 simdvfpv4 simdv8 + + + # Option combinations to build library with +@@ -71,7 +54,11 @@ MULTILIB_REQUIRED += *march=armv8-a + MULTILIB_REQUIRED += *march=armv8-a/mfpu=neon-fp-armv8/mfloat-abi=* + + ++# Matches ++ + # CPU Matches ++MULTILIB_MATCHES += march?armv7-a=mcpu?marvell-pj4 ++MULTILIB_MATCHES += march?armv7-a=mcpu?generic-armv7-a + MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 + MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 + MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 +--- /dev/null ++++ b/src/gcc/config/arm/t-multilib +@@ -0,0 +1,69 @@ ++# Copyright (C) 2016 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 ++# . ++ ++# This is a target makefile fragment that attempts to get ++# multilibs built for the range of CPU's, FPU's and ABI's that ++# are relevant for the ARM architecture. It should not be used in ++# conjunction with another make file fragment and assumes --with-arch, ++# --with-cpu, --with-fpu, --with-float, --with-mode have their default ++# values during the configure step. We enforce this during the ++# top-level configury. ++ ++MULTILIB_OPTIONS = ++MULTILIB_DIRNAMES = ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = ++MULTILIB_REUSE = ++ ++comma := , ++tm_multilib_list := $(subst $(comma), ,$(TM_MULTILIB_CONFIG)) ++ ++HAS_APROFILE := $(filter aprofile,$(tm_multilib_list)) ++HAS_RMPROFILE := $(filter rmprofile,$(tm_multilib_list)) ++ ++ifneq (,$(HAS_APROFILE)) ++include $(srcdir)/config/arm/t-aprofile ++endif ++ifneq (,$(HAS_RMPROFILE)) ++include $(srcdir)/config/arm/t-rmprofile ++endif ++SEP := $(and $(HAS_APROFILE),$(HAS_RMPROFILE),/) ++ ++ ++# We have the following hierachy: ++# ISA: A32 (.) or T16/T32 (thumb) ++# Architecture: ARMv6-M (v6-m), ARMv7-M (v7-m), ARMv7E-M (v7e-m), ++# ARMv7 (v7-ar), ARMv7-A (v7-a), ARMv7VE (v7ve), ++# ARMv8-M Baseline (v8-m.base), ARMv8-M Mainline (v8-m.main) ++# or ARMv8-A (v8-a). ++# FPU: VFPv3-D16 (fpv3), NEONv1 (simdv1), FPV4-SP-D16 (fpv4-sp), ++# VFPv4-D16 (fpv4), NEON-VFPV4 (simdvfpv4), FPV5-SP-D16 (fpv5-sp), ++# VFPv5-D16 (fpv5), NEON for ARMv8 (simdv8), or None (.). ++# Float-abi: Soft (.), softfp (softfp), or hard (hard). ++ ++MULTILIB_OPTIONS += mthumb ++MULTILIB_DIRNAMES += thumb ++ ++MULTILIB_OPTIONS += $(MULTI_ARCH_OPTS_A)$(SEP)$(MULTI_ARCH_OPTS_RM) ++MULTILIB_DIRNAMES += $(MULTI_ARCH_DIRS_A) $(MULTI_ARCH_DIRS_RM) ++ ++MULTILIB_OPTIONS += $(MULTI_FPU_OPTS_A)$(SEP)$(MULTI_FPU_OPTS_RM) ++MULTILIB_DIRNAMES += $(MULTI_FPU_DIRS_A) $(MULTI_FPU_DIRS_RM) ++ ++MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES += softfp hard +--- a/src/gcc/config/arm/t-rmprofile ++++ b/src/gcc/config/arm/t-rmprofile +@@ -24,33 +24,14 @@ + # values during the configure step. We enforce this during the + # top-level configury. + +-MULTILIB_OPTIONS = +-MULTILIB_DIRNAMES = +-MULTILIB_EXCEPTIONS = +-MULTILIB_MATCHES = +-MULTILIB_REUSE = + +-# We have the following hierachy: +-# ISA: A32 (.) or T16/T32 (thumb). +-# Architecture: ARMv6S-M (v6-m), ARMv7-M (v7-m), ARMv7E-M (v7e-m), +-# ARMv8-M Baseline (v8-m.base) or ARMv8-M Mainline (v8-m.main). +-# FPU: VFPv3-D16 (fpv3), FPV4-SP-D16 (fpv4-sp), FPV5-SP-D16 (fpv5-sp), +-# VFPv5-D16 (fpv5), or None (.). +-# Float-abi: Soft (.), softfp (softfp), or hard (hardfp). ++# Arch and FPU variants to build libraries with + +-# Options to build libraries with ++MULTI_ARCH_OPTS_RM = march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7/march=armv8-m.base/march=armv8-m.main ++MULTI_ARCH_DIRS_RM = v6-m v7-m v7e-m v7-ar v8-m.base v8-m.main + +-MULTILIB_OPTIONS += mthumb +-MULTILIB_DIRNAMES += thumb +- +-MULTILIB_OPTIONS += march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7/march=armv8-m.base/march=armv8-m.main +-MULTILIB_DIRNAMES += v6-m v7-m v7e-m v7-ar v8-m.base v8-m.main +- +-MULTILIB_OPTIONS += mfpu=vfpv3-d16/mfpu=fpv4-sp-d16/mfpu=fpv5-sp-d16/mfpu=fpv5-d16 +-MULTILIB_DIRNAMES += fpv3 fpv4-sp fpv5-sp fpv5 +- +-MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard +-MULTILIB_DIRNAMES += softfp hard ++MULTI_FPU_OPTS_RM = mfpu=vfpv3-d16/mfpu=fpv4-sp-d16/mfpu=fpv5-sp-d16/mfpu=fpv5-d16 ++MULTI_FPU_DIRS_RM = fpv3 fpv4-sp fpv5-sp fpv5 + + + # Option combinations to build library with +--- a/src/gcc/config/arm/types.md ++++ b/src/gcc/config/arm/types.md +@@ -316,6 +316,8 @@ + ; neon_cls_q + ; neon_cnt + ; neon_cnt_q ++; neon_dot ++; neon_dot_q + ; neon_ext + ; neon_ext_q + ; neon_rbit +@@ -763,6 +765,8 @@ + \ + neon_abs,\ + neon_abs_q,\ ++ neon_dot,\ ++ neon_dot_q,\ + neon_neg,\ + neon_neg_q,\ + neon_qneg,\ +@@ -1108,8 +1112,8 @@ + neon_sub, neon_sub_q, neon_sub_widen, neon_sub_long, neon_qsub,\ + neon_qsub_q, neon_sub_halve, neon_sub_halve_q,\ + neon_sub_halve_narrow_q,\ +- neon_abs, neon_abs_q, neon_neg, neon_neg_q, neon_qneg,\ +- neon_qneg_q, neon_qabs, neon_qabs_q, neon_abd, neon_abd_q,\ ++ neon_abs, neon_abs_q, neon_dot, neon_dot_q, neon_neg, neon_neg_q,\ ++ neon_qneg, neon_qneg_q, neon_qabs, neon_qabs_q, neon_abd, neon_abd_q,\ + neon_abd_long, neon_minmax, neon_minmax_q, neon_compare,\ + neon_compare_q, neon_compare_zero, neon_compare_zero_q,\ + neon_arith_acc, neon_arith_acc_q, neon_reduc_add,\ +--- a/src/gcc/config/arm/unspecs.md ++++ b/src/gcc/config/arm/unspecs.md +@@ -410,4 +410,6 @@ + UNSPEC_VRNDN + UNSPEC_VRNDP + UNSPEC_VRNDX ++ UNSPEC_DOT_S ++ UNSPEC_DOT_U + ]) +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -30236,6 +30236,15 @@ ix86_macro_fusion_pair_p (rtx_insn *condgen, rtx_insn *condjmp) + if (!any_condjump_p (condjmp)) + return false; + ++ unsigned int condreg1, condreg2; ++ rtx cc_reg_1; ++ ix86_fixed_condition_code_regs (&condreg1, &condreg2); ++ cc_reg_1 = gen_rtx_REG (CCmode, condreg1); ++ if (!reg_referenced_p (cc_reg_1, PATTERN (condjmp)) ++ || !condgen ++ || !modified_in_p (cc_reg_1, condgen)) ++ return false; ++ + if (get_attr_type (condgen) != TYPE_TEST + && get_attr_type (condgen) != TYPE_ICMP + && get_attr_type (condgen) != TYPE_INCDEC +--- a/src/gcc/configure ++++ b/src/gcc/configure +@@ -1717,7 +1717,8 @@ Optional Packages: + --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 +@@ -7637,7 +7638,7 @@ if test "${with_pkgversion+set}" = set; then : + *) PKGVERSION="($withval) " ;; + esac + else +- PKGVERSION="(GCC) " ++ PKGVERSION="(Linaro GCC `cat $srcdir/LINARO-VERSION`) " + + fi + +@@ -18433,7 +18434,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 18436 "configure" ++#line 18437 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -18539,7 +18540,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 18542 "configure" ++#line 18543 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -929,7 +929,7 @@ AC_ARG_WITH(specs, + ) + 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 +--- a/src/gcc/cppbuiltin.c ++++ b/src/gcc/cppbuiltin.c +@@ -53,18 +53,41 @@ parse_basever (int *major, int *minor, int *patchlevel) + *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); +--- a/src/gcc/dbgcnt.def ++++ b/src/gcc/dbgcnt.def +@@ -174,6 +174,7 @@ DEBUG_COUNTER (merged_ipa_icf) + DEBUG_COUNTER (postreload_cse) + DEBUG_COUNTER (pre) + DEBUG_COUNTER (pre_insn) ++DEBUG_COUNTER (prefetch) + DEBUG_COUNTER (registered_jump_thread) + DEBUG_COUNTER (sched2_func) + DEBUG_COUNTER (sched_block) +--- a/src/gcc/emit-rtl.h ++++ b/src/gcc/emit-rtl.h +@@ -267,7 +267,7 @@ struct GTY(()) rtl_data { + + /* Nonzero if function being compiled doesn't contain any calls + (ignoring the prologue and epilogue). This is set prior to +- local register allocation and is valid for the remaining ++ register allocation in IRA and is valid for the remaining + compiler passes. */ + bool is_leaf; + +--- a/src/gcc/expr.c ++++ b/src/gcc/expr.c +@@ -8904,6 +8904,15 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, + end_sequence (); + unsigned uns_cost = seq_cost (uns_insns, speed_p); + unsigned sgn_cost = seq_cost (sgn_insns, speed_p); ++ ++ /* If costs are the same then use as tie breaker the other ++ other factor. */ ++ if (uns_cost == sgn_cost) ++ { ++ uns_cost = seq_cost (uns_insns, !speed_p); ++ sgn_cost = seq_cost (sgn_insns, !speed_p); ++ } ++ + if (uns_cost < sgn_cost || (uns_cost == sgn_cost && unsignedp)) + { + emit_insn (uns_insns); +@@ -9823,7 +9832,7 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, + if (targetm.gen_ccmp_first) + { + gcc_checking_assert (targetm.gen_ccmp_next != NULL); +- r = expand_ccmp_expr (g); ++ r = expand_ccmp_expr (g, mode); + if (r) + break; + } +--- a/src/gcc/generic-match-head.c ++++ b/src/gcc/generic-match-head.c +@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3. If not see + #include "dumpfile.h" + #include "case-cfn-macros.h" + #include "gimplify.h" ++#include "optabs-tree.h" + + + /* Routine to determine if the types T1 and T2 are effectively +--- a/src/gcc/gimple-fold.c ++++ b/src/gcc/gimple-fold.c +@@ -3252,6 +3252,28 @@ gimple_fold_builtin_acc_on_device (gimple_stmt_iterator *gsi, tree arg0) + return true; + } + ++/* Fold realloc (0, n) -> malloc (n). */ ++ ++static bool ++gimple_fold_builtin_realloc (gimple_stmt_iterator *gsi) ++{ ++ gimple *stmt = gsi_stmt (*gsi); ++ tree arg = gimple_call_arg (stmt, 0); ++ tree size = gimple_call_arg (stmt, 1); ++ ++ if (operand_equal_p (arg, null_pointer_node, 0)) ++ { ++ tree fn_malloc = builtin_decl_implicit (BUILT_IN_MALLOC); ++ if (fn_malloc) ++ { ++ gcall *repl = gimple_build_call (fn_malloc, 1, size); ++ replace_call_with_call_and_fold (gsi, repl); ++ return true; ++ } ++ } ++ return false; ++} ++ + /* Fold the non-target builtin at *GSI and return whether any simplification + was made. */ + +@@ -3410,6 +3432,9 @@ gimple_fold_builtin (gimple_stmt_iterator *gsi) + case BUILT_IN_ACC_ON_DEVICE: + return gimple_fold_builtin_acc_on_device (gsi, + gimple_call_arg (stmt, 0)); ++ case BUILT_IN_REALLOC: ++ return gimple_fold_builtin_realloc (gsi); ++ + default:; + } + +--- a/src/gcc/gimple-match-head.c ++++ b/src/gcc/gimple-match-head.c +@@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. If not see + #include "internal-fn.h" + #include "case-cfn-macros.h" + #include "gimplify.h" ++#include "optabs-tree.h" + + + /* Forward declarations of the private auto-generated matchers. +--- a/src/gcc/lra-constraints.c ++++ b/src/gcc/lra-constraints.c +@@ -5416,6 +5416,29 @@ choose_split_class (enum reg_class allocno_class, + #endif + } + ++/* Copy any equivalence information from ORIGINAL_REGNO to NEW_REGNO. ++ It only makes sense to call this function if NEW_REGNO is always ++ equal to ORIGINAL_REGNO. */ ++ ++static void ++lra_copy_reg_equiv (unsigned int new_regno, unsigned int original_regno) ++{ ++ if (!ira_reg_equiv[original_regno].defined_p) ++ return; ++ ++ ira_expand_reg_equiv (); ++ ira_reg_equiv[new_regno].defined_p = true; ++ if (ira_reg_equiv[original_regno].memory) ++ ira_reg_equiv[new_regno].memory ++ = copy_rtx (ira_reg_equiv[original_regno].memory); ++ if (ira_reg_equiv[original_regno].constant) ++ ira_reg_equiv[new_regno].constant ++ = copy_rtx (ira_reg_equiv[original_regno].constant); ++ if (ira_reg_equiv[original_regno].invariant) ++ ira_reg_equiv[new_regno].invariant ++ = copy_rtx (ira_reg_equiv[original_regno].invariant); ++} ++ + /* Do split transformations for insn INSN, which defines or uses + ORIGINAL_REGNO. NEXT_USAGE_INSNS specifies which instruction in + the EBB next uses ORIGINAL_REGNO; it has the same form as the +@@ -5537,6 +5560,7 @@ split_reg (bool before_p, int original_regno, rtx_insn *insn, + new_reg = lra_create_new_reg (mode, original_reg, rclass, "split"); + reg_renumber[REGNO (new_reg)] = hard_regno; + } ++ int new_regno = REGNO (new_reg); + save = emit_spill_move (true, new_reg, original_reg); + if (NEXT_INSN (save) != NULL_RTX && !call_save_p) + { +@@ -5545,7 +5569,7 @@ split_reg (bool before_p, int original_regno, rtx_insn *insn, + fprintf + (lra_dump_file, + " Rejecting split %d->%d resulting in > 2 save insns:\n", +- original_regno, REGNO (new_reg)); ++ original_regno, new_regno); + dump_rtl_slim (lra_dump_file, save, NULL, -1, 0); + fprintf (lra_dump_file, + " ))))))))))))))))))))))))))))))))))))))))))))))))\n"); +@@ -5560,18 +5584,24 @@ split_reg (bool before_p, int original_regno, rtx_insn *insn, + fprintf (lra_dump_file, + " Rejecting split %d->%d " + "resulting in > 2 restore insns:\n", +- original_regno, REGNO (new_reg)); ++ original_regno, new_regno); + dump_rtl_slim (lra_dump_file, restore, NULL, -1, 0); + fprintf (lra_dump_file, + " ))))))))))))))))))))))))))))))))))))))))))))))))\n"); + } + return false; + } ++ /* Transfer equivalence information to the spill register, so that ++ if we fail to allocate the spill register, we have the option of ++ rematerializing the original value instead of spilling to the stack. */ ++ if (!HARD_REGISTER_NUM_P (original_regno) ++ && mode == PSEUDO_REGNO_MODE (original_regno)) ++ lra_copy_reg_equiv (new_regno, original_regno); + after_p = usage_insns[original_regno].after_p; +- lra_reg_info[REGNO (new_reg)].restore_rtx = regno_reg_rtx[original_regno]; +- bitmap_set_bit (&check_only_regs, REGNO (new_reg)); ++ lra_reg_info[new_regno].restore_rtx = regno_reg_rtx[original_regno]; ++ bitmap_set_bit (&check_only_regs, new_regno); + bitmap_set_bit (&check_only_regs, original_regno); +- bitmap_set_bit (&lra_split_regs, REGNO (new_reg)); ++ bitmap_set_bit (&lra_split_regs, new_regno); + for (;;) + { + if (GET_CODE (next_usage_insns) != INSN_LIST) +@@ -5587,7 +5617,7 @@ split_reg (bool before_p, int original_regno, rtx_insn *insn, + if (lra_dump_file != NULL) + { + fprintf (lra_dump_file, " Split reuse change %d->%d:\n", +- original_regno, REGNO (new_reg)); ++ original_regno, new_regno); + dump_insn_slim (lra_dump_file, as_a (usage_insn)); + } + } +--- a/src/gcc/lra-eliminations.c ++++ b/src/gcc/lra-eliminations.c +@@ -1196,6 +1196,8 @@ update_reg_eliminate (bitmap insns_with_changed_offsets) + struct lra_elim_table *ep, *ep1; + HARD_REG_SET temp_hard_reg_set; + ++ targetm.compute_frame_layout (); ++ + /* Clear self elimination offsets. */ + for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) + self_elim_offsets[ep->from] = 0; +--- a/src/gcc/lto/lto-partition.c ++++ b/src/gcc/lto/lto-partition.c +@@ -132,7 +132,7 @@ add_symbol_to_partition_1 (ltrans_partition part, symtab_node *node) + + /* Be sure that we never try to duplicate partitioned symbol + or add external symbol. */ +- gcc_assert (c != SYMBOL_EXTERNAL ++ gcc_assert ((c != SYMBOL_EXTERNAL || node->alias) + && (c == SYMBOL_DUPLICATE || !symbol_partitioned_p (node))); + + part->symbols++; +--- a/src/gcc/lto/lto-symtab.c ++++ b/src/gcc/lto/lto-symtab.c +@@ -998,6 +998,42 @@ lto_symtab_merge_symbols (void) + if (tgt) + node->resolve_alias (tgt, true); + } ++ /* If the symbol was preempted outside IR, see if we want to get rid ++ of the definition. */ ++ if (node->analyzed ++ && !DECL_EXTERNAL (node->decl) ++ && (node->resolution == LDPR_PREEMPTED_REG ++ || node->resolution == LDPR_RESOLVED_IR ++ || node->resolution == LDPR_RESOLVED_EXEC ++ || node->resolution == LDPR_RESOLVED_DYN)) ++ { ++ DECL_EXTERNAL (node->decl) = 1; ++ /* If alias to local symbol was preempted by external definition, ++ we know it is not pointing to the local symbol. Remove it. */ ++ if (node->alias ++ && !node->weakref ++ && !node->transparent_alias ++ && node->get_alias_target ()->binds_to_current_def_p ()) ++ { ++ node->alias = false; ++ node->remove_all_references (); ++ node->definition = false; ++ node->analyzed = false; ++ node->cpp_implicit_alias = false; ++ } ++ else if (!node->alias ++ && node->definition ++ && node->get_availability () <= AVAIL_INTERPOSABLE) ++ { ++ if ((cnode = dyn_cast (node)) != NULL) ++ cnode->reset (); ++ else ++ { ++ node->analyzed = node->definition = false; ++ node->remove_all_references (); ++ } ++ } ++ } + + if (!(cnode = dyn_cast (node)) + || !cnode->clone_of +--- a/src/gcc/match.pd ++++ b/src/gcc/match.pd +@@ -147,6 +147,18 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (op @0 integer_onep) + (non_lvalue @0))) + ++/* (A / (1 << B)) -> (A >> B). ++ Only for unsigned A. For signed A, this would not preserve rounding ++ toward zero. ++ For example: (-1 / ( 1 << B)) != -1 >> B. */ ++(simplify ++ (trunc_div @0 (lshift integer_onep@1 @2)) ++ (if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (@0)) ++ && (!VECTOR_TYPE_P (type) ++ || target_supports_op_p (type, RSHIFT_EXPR, optab_vector) ++ || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))) ++ (rshift @0 @2))) ++ + /* Preserve explicit divisions by 0: the C++ front-end wants to detect + undefined behavior in constexpr evaluation, and assuming that the division + traps enables better optimizations than these anyway. */ +--- a/src/gcc/optabs-tree.c ++++ b/src/gcc/optabs-tree.c +@@ -376,3 +376,18 @@ init_tree_optimization_optabs (tree optnode) + ggc_free (tmp_optabs); + } + } ++ ++/* Return TRUE if the target has support for vector right shift of an ++ operand of type TYPE. If OT_TYPE is OPTAB_DEFAULT, check for existence ++ of a shift by either a scalar or a vector. Otherwise, check only ++ for a shift that matches OT_TYPE. */ ++ ++bool ++target_supports_op_p (tree type, enum tree_code code, ++ enum optab_subtype ot_subtype) ++{ ++ optab ot = optab_for_tree_code (code, type, ot_subtype); ++ return (ot != unknown_optab ++ && optab_handler (ot, TYPE_MODE (type)) != CODE_FOR_nothing); ++} ++ +--- a/src/gcc/optabs-tree.h ++++ b/src/gcc/optabs-tree.h +@@ -41,5 +41,7 @@ bool supportable_convert_operation (enum tree_code, tree, tree, tree *, + bool expand_vec_cmp_expr_p (tree, tree, enum tree_code); + bool expand_vec_cond_expr_p (tree, tree, enum tree_code); + void init_tree_optimization_optabs (tree); ++bool target_supports_op_p (tree, enum tree_code, ++ enum optab_subtype = optab_default); + + #endif +--- a/src/gcc/reload1.c ++++ b/src/gcc/reload1.c +@@ -3821,6 +3821,7 @@ verify_initial_elim_offsets (void) + if (!num_eliminable) + return true; + ++ targetm.compute_frame_layout (); + for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) + { + INITIAL_ELIMINATION_OFFSET (ep->from, ep->to, t); +@@ -3838,6 +3839,7 @@ set_initial_elim_offsets (void) + { + struct elim_table *ep = reg_eliminate; + ++ targetm.compute_frame_layout (); + for (; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++) + { + INITIAL_ELIMINATION_OFFSET (ep->from, ep->to, ep->initial_offset); +--- a/src/gcc/sched-deps.c ++++ b/src/gcc/sched-deps.c +@@ -2834,18 +2834,23 @@ static void + sched_macro_fuse_insns (rtx_insn *insn) + { + rtx_insn *prev; +- ++ prev = prev_nonnote_nondebug_insn (insn); ++ if (!prev) ++ return; ++ + if (any_condjump_p (insn)) + { + unsigned int condreg1, condreg2; + rtx cc_reg_1; + targetm.fixed_condition_code_regs (&condreg1, &condreg2); + cc_reg_1 = gen_rtx_REG (CCmode, condreg1); +- prev = prev_nonnote_nondebug_insn (insn); +- if (!reg_referenced_p (cc_reg_1, PATTERN (insn)) +- || !prev +- || !modified_in_p (cc_reg_1, prev)) +- return; ++ if (reg_referenced_p (cc_reg_1, PATTERN (insn)) ++ && modified_in_p (cc_reg_1, prev)) ++ { ++ if (targetm.sched.macro_fusion_pair_p (prev, insn)) ++ SCHED_GROUP_P (insn) = 1; ++ return; ++ } + } + else + { +--- a/src/gcc/simplify-rtx.c ++++ b/src/gcc/simplify-rtx.c +@@ -3346,19 +3346,21 @@ simplify_binary_operation_1 (enum rtx_code code, machine_mode mode, + && UINTVAL (trueop0) == GET_MODE_MASK (mode) + && ! side_effects_p (op1)) + return op0; ++ ++ canonicalize_shift: + /* Given: + scalar modes M1, M2 + scalar constants c1, c2 + size (M2) > size (M1) + c1 == size (M2) - size (M1) + optimize: +- (ashiftrt:M1 (subreg:M1 (lshiftrt:M2 (reg:M2) (const_int )) ++ ([a|l]shiftrt:M1 (subreg:M1 (lshiftrt:M2 (reg:M2) (const_int )) + ) + (const_int )) + to: +- (subreg:M1 (ashiftrt:M2 (reg:M2) (const_int )) ++ (subreg:M1 ([a|l]shiftrt:M2 (reg:M2) (const_int )) + ). */ +- if (code == ASHIFTRT ++ if ((code == ASHIFTRT || code == LSHIFTRT) + && !VECTOR_MODE_P (mode) + && SUBREG_P (op0) + && CONST_INT_P (op1) +@@ -3375,13 +3377,13 @@ simplify_binary_operation_1 (enum rtx_code code, machine_mode mode, + rtx tmp = GEN_INT (INTVAL (XEXP (SUBREG_REG (op0), 1)) + + INTVAL (op1)); + machine_mode inner_mode = GET_MODE (SUBREG_REG (op0)); +- tmp = simplify_gen_binary (ASHIFTRT, ++ tmp = simplify_gen_binary (code, + GET_MODE (SUBREG_REG (op0)), + XEXP (SUBREG_REG (op0), 0), + tmp); + return lowpart_subreg (mode, tmp, inner_mode); + } +- canonicalize_shift: ++ + if (SHIFT_COUNT_TRUNCATED && CONST_INT_P (op1)) + { + val = INTVAL (op1) & (GET_MODE_PRECISION (mode) - 1); +--- a/src/gcc/target.def ++++ b/src/gcc/target.def +@@ -5395,6 +5395,18 @@ five otherwise. This is best for most machines.", + unsigned int, (void), + default_case_values_threshold) + ++/* Optional callback to advise the target to compute the frame layout. */ ++DEFHOOK ++(compute_frame_layout, ++ "This target hook is called once each time the frame layout needs to be\n\ ++recalculated. The calculations can be cached by the target and can then\n\ ++be used by @code{INITIAL_ELIMINATION_OFFSET} instead of re-computing the\n\ ++layout on every invocation of that hook. This is particularly useful\n\ ++for targets that have an expensive frame layout function. Implementing\n\ ++this callback is optional.", ++ void, (void), ++ hook_void_void) ++ + /* Return true if a function must have and use a frame pointer. */ + DEFHOOK + (frame_pointer_required, +--- a/src/gcc/testsuite/g++.dg/other/i386-9.C ++++ b/src/gcc/testsuite/g++.dg/other/i386-9.C +@@ -2,6 +2,7 @@ + // Testcase by Zdenek Sojka + + // { dg-do run { target i?86-*-* x86_64-*-* } } ++/* { dg-require-stack-check "" } */ + // { dg-options "-Os -mpreferred-stack-boundary=5 -fstack-check -fno-omit-frame-pointer" } + + int main() +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c +@@ -0,0 +1,4 @@ ++/* { dg-require-effective-target untyped_assembly } */ ++/* { dg-require-stack-check "" } */ ++/* { dg-additional-options "-fstack-check" } */ ++#include "20031023-1.c" +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr78622.c ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr78622.c +@@ -1,6 +1,7 @@ + /* PR middle-end/78622 - [7 Regression] -Wformat-overflow/-fprintf-return-value + incorrect with overflow/wrapping + { dg-skip-if "Requires %hhd format" { hppa*-*-hpux* } { "*" } { "" } } ++ { dg-require-effective-target c99_runtime } + { dg-additional-options "-Wformat-overflow=2" } */ + + __attribute__((noinline, noclone)) int +--- a/src/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c ++++ b/src/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c +@@ -1,3 +1,4 @@ ++/* { dg-require-stack-check "generic" } */ + /* { dg-options "-O -fstack-check=generic -ftree-pre -fgraphite-identity" } */ + /* nvptx doesn't expose a stack. */ + /* { dg-skip-if "" { nvptx-*-* } { "*" } { "" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/lsr-div1.c +@@ -0,0 +1,57 @@ ++/* Test division by const int generates only one shift. */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fdump-rtl-combine-all" } */ ++/* { dg-options "-O2 -fdump-rtl-combine-all -mtune=cortex-a53" { target aarch64*-*-* } } */ ++/* { dg-require-effective-target int32plus } */ ++ ++extern void abort (void); ++ ++#define NOINLINE __attribute__((noinline)) ++ ++static NOINLINE int ++f1 (unsigned int n) ++{ ++ return n % 0x33; ++} ++ ++static NOINLINE int ++f2 (unsigned int n) ++{ ++ return n % 0x12; ++} ++ ++int ++main () ++{ ++ int a = 0xaaaaaaaa; ++ int b = 0x55555555; ++ int c; ++ c = f1 (a); ++ if (c != 0x11) ++ abort (); ++ c = f1 (b); ++ if (c != 0x22) ++ abort (); ++ c = f2 (a); ++ if (c != 0xE) ++ abort (); ++ c = f2 (b); ++ if (c != 0x7) ++ abort (); ++ return 0; ++} ++ ++/* Following replacement pattern of intger division by constant, GCC is expected ++ to generate UMULL and (x)SHIFTRT. This test checks that considering division ++ by const 0x33, gcc generates a single LSHIFTRT by 37, instead of ++ two - LSHIFTRT by 32 and LSHIFTRT by 5. */ ++ ++/* { dg-final { scan-rtl-dump "\\(set \\(subreg:DI \\(reg:SI" "combine" { target aarch64*-*-* } } } */ ++/* { dg-final { scan-rtl-dump "\\(lshiftrt:DI \\(reg:DI" "combine" { target aarch64*-*-* } } } */ ++/* { dg-final { scan-rtl-dump "\\(const_int 37 " "combine" { target aarch64*-*-* } } } */ ++ ++/* Similarly, considering division by const 0x12, gcc generates a ++ single LSHIFTRT by 34, instead of two - LSHIFTRT by 32 and LSHIFTRT by 2. */ ++ ++/* { dg-final { scan-rtl-dump "\\(const_int 34 " "combine" { target aarch64*-*-* } } } */ ++ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/lto/pr69866_0.c +@@ -0,0 +1,13 @@ ++/* { dg-lto-do link } */ ++ ++int _umh(int i) ++{ ++ return i+1; ++} ++ ++int weaks(int i) __attribute__((weak, alias("_umh"))); ++ ++int main() ++{ ++ return weaks(10); ++} +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/lto/pr69866_1.c +@@ -0,0 +1,6 @@ ++/* { dg-options { -fno-lto } } */ ++ ++int weaks(int i) ++{ ++ return i+1; ++} +--- a/src/gcc/testsuite/gcc.dg/pr47443.c ++++ b/src/gcc/testsuite/gcc.dg/pr47443.c +@@ -1,5 +1,6 @@ + /* PR tree-optimization/47443 */ + /* { dg-do compile } */ ++/* { dg-require-stack-check "generic" } */ + /* { dg-options "-O -fstack-check=generic" } */ + + static inline int bar (char *c, int i) +--- a/src/gcc/testsuite/gcc.dg/pr48134.c ++++ b/src/gcc/testsuite/gcc.dg/pr48134.c +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-require-stack-check "specific" } */ + /* { dg-options "-O2 -fstack-check=specific -fno-tree-dse -fno-tree-fre -fno-tree-loop-optimize -g" } */ + + struct S +--- a/src/gcc/testsuite/gcc.dg/pr70017.c ++++ b/src/gcc/testsuite/gcc.dg/pr70017.c +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-require-stack-check "generic" } */ + /* { dg-options "-fstack-check=generic" } */ + + /* Check that the expected warning is issued for large frames. */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-37.c +@@ -0,0 +1,25 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O -fdump-tree-forwprop1-raw" } */ ++ ++unsigned int ++f1 (unsigned int a, unsigned int b) ++{ ++ unsigned int x = 1U << b; ++ return a / x; ++} ++ ++unsigned long ++f2 (unsigned long a, int b) ++{ ++ unsigned long x = 1UL << b; ++ return a / x; ++} ++ ++unsigned long long ++f3 (unsigned long long a, int b) ++{ ++ unsigned long long x = 1ULL << b; ++ return a / x; ++} ++ ++/* { dg-final { scan-tree-dump-not "trunc_div_expr" "forwprop1" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr79697.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-gimple -fdump-tree-cddce-details -fdump-tree-optimized" } */ ++ ++void f(void) ++{ ++ __builtin_strdup ("abc"); ++} ++ ++void g(void) ++{ ++ __builtin_strndup ("abc", 3); ++} ++ ++void h(void) ++{ ++ __builtin_realloc (0, 10); ++} ++ ++/* { dg-final { scan-tree-dump "Deleting : __builtin_strdup" "cddce1" } } */ ++/* { dg-final { scan-tree-dump "Deleting : __builtin_strndup" "cddce1" } } */ ++/* { dg-final { scan-tree-dump "__builtin_malloc" "gimple" } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c +@@ -1,4 +1,7 @@ + /* { dg-require-effective-target vect_int } */ ++/* { dg-require-effective-target arm_v8_2a_dotprod_neon_hw { target { aarch64*-*-* || arm*-*-* } } } */ ++/* { dg-additional-options "-march=armv8.2-a+dotprod" { target { aarch64*-*-* } } } */ ++/* { dg-add-options arm_v8_2a_dotprod_neon } */ + + #include + #include "tree-vect.h" +--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c +@@ -1,4 +1,7 @@ + /* { dg-require-effective-target vect_int } */ ++/* { dg-require-effective-target arm_v8_2a_dotprod_neon_hw { target { aarch64*-*-* || arm*-*-* } } } */ ++/* { dg-additional-options "-march=armv8.2-a+dotprod" { target { aarch64*-*-* } } } */ ++/* { dg-add-options arm_v8_2a_dotprod_neon } */ + + #include + #include "tree-vect.h" +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-compile.c +@@ -0,0 +1,73 @@ ++/* { dg-do compile { target { aarch64*-*-* } } } */ ++/* { dg-additional-options "-O3 -march=armv8.2-a+dotprod" } */ ++ ++#include ++ ++/* Unsigned Dot Product instructions. */ ++ ++uint32x2_t ufoo (uint32x2_t r, uint8x8_t x, uint8x8_t y) ++{ ++ return vdot_u32 (r, x, y); ++} ++ ++uint32x4_t ufooq (uint32x4_t r, uint8x16_t x, uint8x16_t y) ++{ ++ return vdotq_u32 (r, x, y); ++} ++ ++uint32x2_t ufoo_lane (uint32x2_t r, uint8x8_t x, uint8x8_t y) ++{ ++ return vdot_lane_u32 (r, x, y, 0); ++} ++ ++uint32x2_t ufoo_laneq (uint32x2_t r, uint8x8_t x, uint8x16_t y) ++{ ++ return vdot_laneq_u32 (r, x, y, 0); ++} ++ ++uint32x4_t ufooq_lane (uint32x4_t r, uint8x16_t x, uint8x8_t y) ++{ ++ return vdotq_lane_u32 (r, x, y, 0); ++} ++ ++uint32x4_t ufooq_laneq (uint32x4_t r, uint8x16_t x, uint8x16_t y) ++{ ++ return vdotq_laneq_u32 (r, x, y, 0); ++} ++ ++/* Signed Dot Product instructions. */ ++ ++int32x2_t sfoo (int32x2_t r, int8x8_t x, int8x8_t y) ++{ ++ return vdot_s32 (r, x, y); ++} ++ ++int32x4_t sfooq (int32x4_t r, int8x16_t x, int8x16_t y) ++{ ++ return vdotq_s32 (r, x, y); ++} ++ ++int32x2_t sfoo_lane (int32x2_t r, int8x8_t x, int8x8_t y) ++{ ++ return vdot_lane_s32 (r, x, y, 0); ++} ++ ++int32x2_t sfoo_laneq (int32x2_t r, int8x8_t x, int8x16_t y) ++{ ++ return vdot_laneq_s32 (r, x, y, 0); ++} ++ ++int32x4_t sfooq_lane (int32x4_t r, int8x16_t x, int8x8_t y) ++{ ++ return vdotq_lane_s32 (r, x, y, 0); ++} ++ ++int32x4_t sfooq_laneq (int32x4_t r, int8x16_t x, int8x16_t y) ++{ ++ return vdotq_laneq_s32 (r, x, y, 0); ++} ++ ++/* { dg-final { scan-assembler-times {[us]dot\tv[0-9]+\.2s, v[0-9]+\.8b, v[0-9]+\.8b} 2 } } */ ++/* { dg-final { scan-assembler-times {[us]dot\tv[0-9]+\.2s, v[0-9]+\.8b, v[0-9]+\.4b\[[0-9]+\]} 4 } } */ ++/* { dg-final { scan-assembler-times {[us]dot\tv[0-9]+\.4s, v[0-9]+\.16b, v[0-9]+\.16b} 2 } } */ ++/* { dg-final { scan-assembler-times {[us]dot\tv[0-9]+\.4s, v[0-9]+\.16b, v[0-9]+\.4b\[[0-9]+\]} 4 } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-exec.c +@@ -0,0 +1,81 @@ ++/* { dg-skip-if "can't compile on arm." { arm*-*-* } } */ ++/* { dg-do run { target { aarch64*-*-* } } } */ ++/* { dg-additional-options "-O3 -march=armv8.2-a+dotprod" } */ ++/* { dg-require-effective-target arm_v8_2a_dotprod_neon_hw } */ ++ ++#include ++ ++extern void abort(); ++ ++#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ ++# define ORDER(x, y) y ++#else ++# define ORDER(x, y) x - y ++#endif ++ ++#define P(n1,n2) n1,n1,n1,n1,n2,n2,n2,n2 ++#define ARR(nm, p, ty, ...) ty nm##_##p = { __VA_ARGS__ } ++#define TEST(t1, t2, t3, f, r1, r2, n1, n2) \ ++ ARR(f, x, t1, r1); \ ++ ARR(f, y, t2, r2); \ ++ t3 f##_##r = {0}; \ ++ f##_##r = f (f##_##r, f##_##x, f##_##y); \ ++ if (f##_##r[0] != n1 || f##_##r[1] != n2) \ ++ abort (); ++ ++#define TEST_LANE(t1, t2, t3, f, r1, r2, n1, n2, n3, n4) \ ++ ARR(f, x, t1, r1); \ ++ ARR(f, y, t2, r2); \ ++ t3 f##_##rx = {0}; \ ++ f##_##rx = f (f##_##rx, f##_##x, f##_##y, ORDER (1, 0)); \ ++ if (f##_##rx[0] != n1 || f##_##rx[1] != n2) \ ++ abort (); \ ++ t3 f##_##rx1 = {0}; \ ++ f##_##rx1 = f (f##_##rx1, f##_##x, f##_##y, ORDER (1, 1)); \ ++ if (f##_##rx1[0] != n3 || f##_##rx1[1] != n4) \ ++ abort (); ++ ++#define Px(n1,n2,n3,n4) P(n1,n2),P(n3,n4) ++#define TEST_LANEQ(t1, t2, t3, f, r1, r2, n1, n2, n3, n4, n5, n6, n7, n8) \ ++ ARR(f, x, t1, r1); \ ++ ARR(f, y, t2, r2); \ ++ t3 f##_##rx = {0}; \ ++ f##_##rx = f (f##_##rx, f##_##x, f##_##y, ORDER (3, 0)); \ ++ if (f##_##rx[0] != n1 || f##_##rx[1] != n2) \ ++ abort (); \ ++ t3 f##_##rx1 = {0}; \ ++ f##_##rx1 = f (f##_##rx1, f##_##x, f##_##y, ORDER (3, 1)); \ ++ if (f##_##rx1[0] != n3 || f##_##rx1[1] != n4) \ ++ abort (); \ ++ t3 f##_##rx2 = {0}; \ ++ f##_##rx2 = f (f##_##rx2, f##_##x, f##_##y, ORDER (3, 2)); \ ++ if (f##_##rx2[0] != n5 || f##_##rx2[1] != n6) \ ++ abort (); \ ++ t3 f##_##rx3 = {0}; \ ++ f##_##rx3 = f (f##_##rx3, f##_##x, f##_##y, ORDER (3, 3)); \ ++ if (f##_##rx3[0] != n7 || f##_##rx3[1] != n8) \ ++ abort (); ++ ++int ++main() ++{ ++ TEST (uint8x8_t, uint8x8_t, uint32x2_t, vdot_u32, P(1,2), P(2,3), 8, 24); ++ TEST (int8x8_t, int8x8_t, int32x2_t, vdot_s32, P(1,2), P(-2,-3), -8, -24); ++ ++ TEST (uint8x16_t, uint8x16_t, uint32x4_t, vdotq_u32, P(1,2), P(2,3), 8, 24); ++ TEST (int8x16_t, int8x16_t, int32x4_t, vdotq_s32, P(1,2), P(-2,-3), -8, -24); ++ ++ TEST_LANE (uint8x8_t, uint8x8_t, uint32x2_t, vdot_lane_u32, P(1,2), P(2,3), 8, 16, 12, 24); ++ TEST_LANE (int8x8_t, int8x8_t, int32x2_t, vdot_lane_s32, P(1,2), P(-2,-3), -8, -16, -12, -24); ++ ++ TEST_LANE (uint8x16_t, uint8x8_t, uint32x4_t, vdotq_lane_u32, P(1,2), P(2,3), 8, 16, 12, 24); ++ TEST_LANE (int8x16_t, int8x8_t, int32x4_t, vdotq_lane_s32, P(1,2), P(-2,-3), -8, -16, -12, -24); ++ ++ TEST_LANEQ (uint8x8_t, uint8x16_t, uint32x2_t, vdot_laneq_u32, P(1,2), Px(2,3,1,4), 8, 16, 12, 24, 4, 8, 16, 32); ++ TEST_LANEQ (int8x8_t, int8x16_t, int32x2_t, vdot_laneq_s32, P(1,2), Px(-2,-3,-1,-4), -8, -16, -12, -24, -4, -8, -16, -32); ++ ++ TEST_LANEQ (uint8x16_t, uint8x16_t, uint32x4_t, vdotq_laneq_u32, Px(1,2,2,1), Px(2,3,1,4), 8, 16, 12, 24, 4, 8, 16, 32); ++ TEST_LANEQ (int8x16_t, int8x16_t, int32x4_t, vdotq_laneq_s32, Px(1,2,2,1), Px(-2,-3,-1,-4), -8, -16, -12, -24, -4, -8, -16, -32); ++ ++ return 0; ++} +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vect-dot-qi.h +@@ -0,0 +1,15 @@ ++TYPE char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); ++TYPE char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); ++ ++__attribute__ ((noinline)) int ++foo1(int len) { ++ int i; ++ TYPE int result = 0; ++ TYPE short prod; ++ ++ for (i=0; i ++ ++float16_t f0(void) ++{ ++ float16_t x = 0.0f; ++ return x; ++} ++ ++float16_t fn1(void) ++{ ++ float16_t x = -0.0f; ++ return x; ++} ++ ++float16_t f1(void) ++{ ++ float16_t x = 256.0f; ++ return x; ++} ++ ++float16_t f2(void) ++{ ++ float16_t x = 123256.0f; ++ return x; ++} ++ ++float16_t f3(void) ++{ ++ float16_t x = 17.0; ++ return x; ++} ++ ++/* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.4h, ?#0" 1 } } */ ++/* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.2s, 0x80, lsl 8" 1 } } */ ++/* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.2s, 0x5c, lsl 8" 1 } } */ ++/* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.2s, 0x7c, lsl 8" 1 } } */ ++ ++/* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 19520" 1 } } */ ++/* { dg-final { scan-assembler-times "fmov\th\[0-9\], w\[0-9\]+" 1 } } */ ++ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/flt_mov_immediate_1.c +@@ -0,0 +1,52 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++float f0(void) ++{ ++ float x = 0.0f; ++ return x; ++} ++ ++float fn1(void) ++{ ++ float x = -0.0f; ++ return x; ++} ++ ++float f1(void) ++{ ++ float x = 256.0f; ++ return x; ++} ++ ++float f2(void) ++{ ++ float x = 123256.0f; ++ return x; ++} ++ ++float f3(void) ++{ ++ float x = 2.0f; ++ return x; ++} ++ ++float f4(void) ++{ ++ float x = -20000.1; ++ return x; ++} ++ ++ ++/* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.2s, ?#0" 1 } } */ ++/* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.2s, 0x80, lsl 24" 1 } } */ ++/* { dg-final { scan-assembler-times "movi\tv\[0-9\]+\\\.2s, 0x80, lsl 24" 1 } } */ ++ ++/* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 48128" 1 } } */ ++/* { dg-final { scan-assembler-times "movk\tw\[0-9\]+, 0x47f0, lsl 16" 1 } } */ ++ ++/* { dg-final { scan-assembler-times "fmov\ts\[0-9\]+, 2\\\.0e\\\+0" 1 } } */ ++ ++/* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 16435" 1 } } */ ++/* { dg-final { scan-assembler-times "movk\tw\[0-9\]+, 0xc69c, lsl 16" 1 } } */ ++ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/hfmode_ins_1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++/* Check that we can perform this in a single INS without doing any DUPs. */ ++ ++#include ++ ++float16x8_t ++foo (float16x8_t a, float16x8_t b) ++{ ++ return vsetq_lane_f16 (vgetq_lane_f16 (b, 2), a, 3); ++} ++ ++float16x4_t ++bar (float16x4_t a, float16x4_t b) ++{ ++ return vset_lane_f16 (vget_lane_f16 (b, 2), a, 3); ++} ++ ++/* { dg-final { scan-assembler-times "ins\\t" 2 } } */ ++/* { dg-final { scan-assembler-not "dup\\t" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/inline-lrint_1.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-O3 -fno-math-errno" } */ ++ ++#include "lrint-matherr.h" ++ ++TEST (dld, double, long, ) ++TEST (flf, float , long, ) ++ ++TEST (did, double, int, ) ++TEST (fif, float , int, ) ++ ++TEST (dlld, double, long long, l) ++TEST (fllf, float , long long, l) ++ ++/* { dg-final { scan-assembler-times "frintx\t\[d,s\]\[0-9\]+, \[d,s\]\[0-9\]+" 6 } } */ ++/* { dg-final { scan-assembler-times "fcvtzs\tx\[0-9\]+, \[d,s\]\[0-9\]+" 6 } } */ ++/* { dg-final { scan-assembler-not "bl" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target ilp32 } */ ++/* { dg-options "-O3 -fno-math-errno" } */ ++ ++#include "lrint-matherr.h" ++ ++TEST (dld, double, long, ) ++TEST (flf, float , long, ) ++ ++TEST (did, double, int, ) ++TEST (fif, float , int, ) ++ ++TEST (dlld, double, long long, l) ++TEST (fllf, float , long long, l) ++ ++/* { dg-final { scan-assembler-times "frintx\t\[d,s\]\[0-9\]+, \[d,s\]\[0-9\]+" 6 } } */ ++/* { dg-final { scan-assembler-times "fcvtzs\t\[w,x\]\[0-9\]+, \[d,s\]\[0-9\]+" 6 } } */ ++/* { dg-final { scan-assembler-not "bl" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c +@@ -0,0 +1,59 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-O3" } */ ++ ++long long f1(void) ++{ ++ return 0xffff6666; ++} ++ ++int f3(void) ++{ ++ return 0xffff6666; ++} ++ ++ ++long f2(void) ++{ ++ return 0x11110000ffff6666; ++} ++ ++long f4(void) ++{ ++ return 0x11110001ffff6666; ++} ++ ++long f5(void) ++{ ++ return 0x111100001ff6666; ++} ++ ++long f6(void) ++{ ++ return 0x00001111ffff6666; ++} ++ ++long f7(void) ++{ ++ return 0x000011116666ffff; ++} ++ ++long f8(void) ++{ ++ return 0x0f0011116666ffff; ++} ++ ++/* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, -39322" 1 } } */ ++/* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 4294927974" 3 } } */ ++/* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 1718026239" 1 } } */ ++/* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, -2576941057" 1 } } */ ++/* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, -39322" 1 } } */ ++/* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, 26214" 1 } } */ ++/* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0xf00, lsl 48" 1 } } */ ++/* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1111, lsl 48" 2 } } */ ++/* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1000, lsl 32" 1 } } */ ++/* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1111, lsl 32" 3 } } */ ++/* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x111, lsl 48" 1 } } */ ++/* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1ff, lsl 16" 1 } } */ ++/* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1, lsl 32" 1 } } */ ++ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/lrint-matherr.h +@@ -0,0 +1,5 @@ ++#define TEST(name, float_type, int_type, pref) void f_##name (float_type x) \ ++{ \ ++ volatile float_type a = __builtin_rint (x); \ ++ volatile int_type b = __builtin_l##pref##rint (x); \ ++} +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_1.c +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-O3" } */ ++ ++#include "lrint-matherr.h" ++ ++TEST (dld, double, long, ) ++TEST (flf, float , long, ) ++ ++TEST (did, double, int, ) ++TEST (fif, float , int, ) ++ ++TEST (dlld, double, long long, l) ++TEST (fllf, float , long long, l) ++ ++/* { dg-final { scan-assembler-times "frintx\t\[d,s\]\[0-9\]+, \[d,s\]\[0-9\]+" 6 } } */ ++/* { dg-final { scan-assembler-times "bl\tlrint" 4 } } */ ++/* { dg-final { scan-assembler-times "bl\tllrint" 2 } } */ ++/* { dg-final { scan-assembler-not "fcvtzs" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_2.c +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target ilp32 } */ ++/* { dg-options "-O3" } */ ++ ++#include "lrint-matherr.h" ++ ++TEST (dld, double, long, ) ++TEST (flf, float , long, ) ++ ++TEST (did, double, int, ) ++TEST (fif, float , int, ) ++ ++TEST (dlld, double, long long, l) ++TEST (fllf, float , long long, l) ++ ++/* { dg-final { scan-assembler-times "frintx\t\[d,s\]\[0-9\]+, \[d,s\]\[0-9\]+" 6 } } */ ++/* { dg-final { scan-assembler-times "bl\tlrint" 4 } } */ ++/* { dg-final { scan-assembler-times "bl\tllrint" 2 } } */ ++/* { dg-final { scan-assembler-not "fcvtzs" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/pr63304_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr63304_1.c +@@ -4,10 +4,10 @@ + #pragma GCC target ("+nothing+simd, cmodel=small") + + int +-cal (float a) ++cal (double a) + { +- float b = 1.2; +- float c = 2.2; ++ double b = 3.2; ++ double c = 2.2; + if ((a + b) != c) + return 0; + else +@@ -19,11 +19,11 @@ cal (float a) + #pragma GCC target ("cmodel=large") + + int +-cal2 (float a) ++cal2 (double a) + { + +- float b = 1.2; +- float c = 2.2; ++ double b = 3.2; ++ double c = 2.2; + if ((a + b) != c) + return 0; + else +@@ -33,11 +33,11 @@ cal2 (float a) + #pragma GCC pop_options + + int +-cal3 (float a) ++cal3 (double a) + { + +- float b = 1.2; +- float c = 2.2; ++ double b = 3.2; ++ double c = 2.2; + if ((a + b) != c) + return 0; + else +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/prfm_imm_offset_1.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++/* Check that we can generate the immediate-offset addressing ++ mode for PRFM. */ ++ ++#define ARRSIZE 65 ++int *bad_addr[ARRSIZE]; ++ ++void ++prefetch_for_read (void) ++{ ++ int i; ++ for (i = 0; i < ARRSIZE; i++) ++ __builtin_prefetch (bad_addr[i] + 2, 0, 0); ++} ++ ++/* { dg-final { scan-assembler-times "prfm.*\\\[x\[0-9\]+, 8\\\]" 1 } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/sdiv_costs_1.c +@@ -0,0 +1,38 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++/* Both sdiv and udiv can be used here, so prefer udiv. */ ++int f1 (unsigned char *p) ++{ ++ return 100 / p[1]; ++} ++ ++int f2 (unsigned char *p, unsigned short x) ++{ ++ return x / p[0]; ++} ++ ++int f3 (unsigned char *p, int x) ++{ ++ x &= 0x7fffffff; ++ return x / p[0]; ++} ++ ++int f5 (unsigned char *p, unsigned short x) ++{ ++ return x % p[0]; ++} ++ ++/* This should only generate signed divisions. */ ++int f4 (unsigned char *p) ++{ ++ return -100 / p[1]; ++} ++ ++int f6 (unsigned char *p, short x) ++{ ++ return x % p[0]; ++} ++ ++/* { dg-final { scan-assembler-times "udiv\tw\[0-9\]+, w\[0-9\]+" 4 } } */ ++/* { dg-final { scan-assembler-times "sdiv\tw\[0-9\]+, w\[0-9\]+" 2 } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vmla_elem_1.c +@@ -0,0 +1,67 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++typedef short int __attribute__ ((vector_size (16))) v8hi; ++ ++v8hi ++mla8hi (v8hi v0, v8hi v1, short int v2) ++{ ++ /* { dg-final { scan-assembler "mla\\tv\[0-9\]\+\\.8h, v\[0-9\]\+\\.8h, v\[0-9\]\+\\.h\\\[0\\\]" } } */ ++ return v0 + v1 * v2; ++} ++ ++ ++v8hi ++mls8hi (v8hi v0, v8hi v1, short int v2) ++{ ++ /* { dg-final { scan-assembler "mls\\tv\[0-9\]\+\\.8h, v\[0-9\]\+\\.8h, v\[0-9\]\+\\.h\\\[0\\\]" } } */ ++ return v0 - v1 * v2; ++} ++ ++typedef short int __attribute__ ((vector_size (8))) v4hi; ++ ++v4hi ++mla4hi (v4hi v0, v4hi v1, short int v2) ++{ ++ /* { dg-final { scan-assembler "mla\\tv\[0-9\]\+\\.4h, v\[0-9\]\+\\.4h, v\[0-9\]\+\\.h\\\[0\\\]" } } */ ++ return v0 + v1 * v2; ++} ++ ++v4hi ++mls4hi (v4hi v0, v4hi v1, short int v2) ++{ ++ /* { dg-final { scan-assembler "mls\\tv\[0-9\]\+\\.4h, v\[0-9\]\+\\.4h, v\[0-9\]\+\\.h\\\[0\\\]" } } */ ++ return v0 - v1 * v2; ++} ++ ++typedef int __attribute__ ((vector_size (16))) v4si; ++ ++v4si ++mla4si (v4si v0, v4si v1, int v2) ++{ ++ /* { dg-final { scan-assembler "mla\\tv\[0-9\]\+\\.4s, v\[0-9\]\+\\.4s, v\[0-9\]\+\\.s\\\[0\\\]" } } */ ++ return v0 + v1 * v2; ++} ++ ++v4si ++mls4si (v4si v0, v4si v1, int v2) ++{ ++ /* { dg-final { scan-assembler "mls\\tv\[0-9\]\+\\.4s, v\[0-9\]\+\\.4s, v\[0-9\]\+\\.s\\\[0\\\]" } } */ ++ return v0 - v1 * v2; ++} ++ ++typedef int __attribute__((vector_size (8))) v2si; ++ ++v2si ++mla2si (v2si v0, v2si v1, int v2) ++{ ++ /* { dg-final { scan-assembler "mla\\tv\[0-9\]\+\\.2s, v\[0-9\]\+\\.2s, v\[0-9\]\+\\.s\\\[0\\\]" } } */ ++ return v0 + v1 * v2; ++} ++ ++v2si ++mls2si (v2si v0, v2si v1, int v2) ++{ ++ /* { dg-final { scan-assembler "mls\\tv\[0-9\]\+\\.2s, v\[0-9\]\+\\.2s, v\[0-9\]\+\\.s\\\[0\\\]" } } */ ++ return v0 - v1 * v2; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/spellcheck_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/spellcheck_1.c +@@ -3,7 +3,7 @@ + __attribute__((target ("arch=armv8-a-typo"))) void + foo () + { ++ /* { dg-message "valid arguments are: \[^\n\r]*; did you mean 'armv8-a'?" "" { target *-*-* } .-1 } */ ++ /* { dg-error "unknown value 'armv8-a-typo' for 'arch' target attribute" "" { target *-*-* } .-2 } */ ++ /* { dg-error "target attribute 'arch=armv8-a-typo' is invalid" "" { target *-*-* } .-3 } */ + } +-/* { dg-message "valid arguments are: \[^\n\r]*; did you mean 'armv8-a'?" "" { target *-*-* } 5 } */ +-/* { dg-error "unknown value 'armv8-a-typo' for 'arch' target attribute" "" { target *-*-* } 5 } */ +-/* { dg-error "target attribute 'arch=armv8-a-typo' is invalid" "" { target *-*-* } 5 } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/spellcheck_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/spellcheck_2.c +@@ -3,7 +3,7 @@ + __attribute__((target ("cpu=cortex-a57-typo"))) void + foo () + { ++ /* { dg-message "valid arguments are: \[^\n\r]*; did you mean 'cortex-a57?" "" { target *-*-* } .-1 } */ ++ /* { dg-error "unknown value 'cortex-a57-typo' for 'cpu' target attribute" "" { target *-*-* } .-2 } */ ++ /* { dg-error "target attribute 'cpu=cortex-a57-typo' is invalid" "" { target *-*-* } .-3 } */ + } +-/* { dg-message "valid arguments are: \[^\n\r]*; did you mean 'cortex-a57?" "" { target *-*-* } 5 } */ +-/* { dg-error "unknown value 'cortex-a57-typo' for 'cpu' target attribute" "" { target *-*-* } 5 } */ +-/* { dg-error "target attribute 'cpu=cortex-a57-typo' is invalid" "" { target *-*-* } 5 } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/spellcheck_3.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/spellcheck_3.c +@@ -3,7 +3,7 @@ + __attribute__((target ("tune=cortex-a57-typo"))) void + foo () + { ++ /* { dg-message "valid arguments are: \[^\n\r]*; did you mean 'cortex-a57?" "" { target *-*-* } .-1 } */ ++ /* { dg-error "unknown value 'cortex-a57-typo' for 'tune' target attribute" "" { target *-*-* } .-2 } */ ++ /* { dg-error "target attribute 'tune=cortex-a57-typo' is invalid" "" { target *-*-* } .-3 } */ + } +-/* { dg-message "valid arguments are: \[^\n\r]*; did you mean 'cortex-a57?" "" { target *-*-* } 5 } */ +-/* { dg-error "unknown value 'cortex-a57-typo' for 'tune' target attribute" "" { target *-*-* } 5 } */ +-/* { dg-error "target attribute 'tune=cortex-a57-typo' is invalid" "" { target *-*-* } 5 } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/spill_1.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef int v4si __attribute__ ((vector_size (16))); ++ ++void bar (void); ++void ++foo (void) ++{ ++ v4si x = { 1, 1, 1, 1 }; ++ asm ("# %0" :: "w" (x)); ++ bar (); ++ asm ("# %0" :: "w" (x)); ++} ++ ++/* { dg-final { scan-assembler-times {\tmovi\tv[0-9]+\.4s,} 2 } } */ ++/* { dg-final { scan-assembler-not {\tldr\t} } } */ ++/* { dg-final { scan-assembler-not {\tstr\t} } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/stack-checking.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/stack-checking.c +@@ -1,4 +1,5 @@ + /* { dg-do run { target { *-*-linux* } } } */ ++/* { dg-require-stack-check "" } */ + /* { dg-options "-fstack-check" } */ + + int main(void) +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/store_lane0_str_1.c +@@ -0,0 +1,54 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef int v2si __attribute__ ((vector_size (8))); ++typedef float v2sf __attribute__ ((vector_size (8))); ++typedef short v4hi __attribute__ ((vector_size (8))); ++typedef __fp16 v4hf __attribute__ ((vector_size (8))); ++typedef char v8qi __attribute__ ((vector_size (8))); ++ ++typedef int v4si __attribute__ ((vector_size (16))); ++typedef float v4sf __attribute__ ((vector_size (16))); ++typedef short v8hi __attribute__ ((vector_size (16))); ++typedef __fp16 v8hf __attribute__ ((vector_size (16))); ++typedef char v16qi __attribute__ ((vector_size (16))); ++typedef long long v2di __attribute__ ((vector_size (16))); ++typedef double v2df __attribute__ ((vector_size (16))); ++ ++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++#define LANE(N) (N - 1) ++#else ++#define LANE(N) 0 ++#endif ++ ++#define FUNC(T, E, N) \ ++void \ ++store_lane_##T (T x, E *y) \ ++{ \ ++ y[0] = x[N - 1 - LANE (N)]; \ ++ y[3] = x[LANE (N)]; \ ++} ++ ++FUNC (v2si, int, 2) ++FUNC (v2sf, float, 2) ++FUNC (v4hi, short, 4) ++FUNC (v4hf, __fp16, 4) ++FUNC (v8qi, char, 8) ++ ++FUNC (v4si, int, 4) ++FUNC (v4sf, float, 4) ++FUNC (v8hi, short, 8) ++FUNC (v8hf, __fp16, 8) ++FUNC (v16qi, char, 16) ++FUNC (v2di, long long, 2) ++FUNC (v2df, double, 2) ++ ++/* When storing lane zero of a vector we can use the scalar STR instruction ++ that supports more addressing modes. */ ++ ++/* { dg-final { scan-assembler-times "str\ts\[0-9\]+" 4 } } */ ++/* { dg-final { scan-assembler-times "str\tb\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-times "str\th\[0-9\]+" 4 } } */ ++/* { dg-final { scan-assembler-times "str\td\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-not "umov" } } */ ++/* { dg-final { scan-assembler-not "dup" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/subs_compare_1.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (int a, int b) ++{ ++ int x = a - b; ++ if (a <= b) ++ return x; ++ else ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "subs\\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" 1 } } */ ++/* { dg-final { scan-assembler-not "cmp\\tw\[0-9\]+, w\[0-9\]+" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/subs_compare_2.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++foo (int a, int b) ++{ ++ int x = a - 4; ++ if (a < 4) ++ return x; ++ else ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "subs\\tw\[0-9\]+, w\[0-9\]+, #4" 1 } } */ ++/* { dg-final { scan-assembler-not "cmp\\tw\[0-9\]+, w\[0-9\]+" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/tst_imm_split_1.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++f (unsigned char *p) ++{ ++ return p[0] == 50 || p[0] == 52; ++} ++ ++int ++g (unsigned char *p) ++{ ++ return (p[0] >> 4 & 0xfd) == 0; ++} ++ ++/* { dg-final { scan-assembler-not "and\\t\[xw\]\[0-9\]+, \[xw\]\[0-9\]+.*" } } */ ++/* { dg-final { scan-assembler "tst\\t\[xw\]\[0-9\]+, \[xw\]\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "tst\\t\[xw\]\[0-9\]+, \[xw\]\[0-9\]+, lsr 4" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-init-1.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++#define vector __attribute__((vector_size(16))) ++ ++vector float combine (float a, float b, float c, float d) ++{ ++ return (vector float) { a, b, c, d }; ++} ++ ++/* { dg-final { scan-assembler-not "movi\t" } } */ ++/* { dg-final { scan-assembler-not "orr\t" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-init-2.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++#define vector __attribute__((vector_size(16))) ++ ++vector float combine (float a, float b, float d) ++{ ++ return (vector float) { a, b, a, d }; ++} ++ ++/* { dg-final { scan-assembler-not "movi\t" } } */ ++/* { dg-final { scan-assembler-not "orr\t" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-init-3.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++#define vector __attribute__((vector_size(16))) ++ ++vector float combine (float a, float b) ++{ ++ return (vector float) { a, b, a, b }; ++} ++ ++/* { dg-final { scan-assembler-not "movi\t" } } */ ++/* { dg-final { scan-assembler-not "orr\t" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-init-4.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++#define vector __attribute__((vector_size(16))) ++ ++vector float combine (float a, float b) ++{ ++ return (vector float) { a, b, b, a }; ++} ++ ++/* { dg-final { scan-assembler-not "movi\t" } } */ ++/* { dg-final { scan-assembler-not "orr\t" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-init-5.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++#define vector __attribute__((vector_size(16))) ++ ++vector float combine (float a, float b) ++{ ++ return (vector float) { a, b, a, a }; ++} ++ ++/* { dg-final { scan-assembler-not "movi\t" } } */ ++/* { dg-final { scan-assembler-not "orr\t" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c +@@ -3,7 +3,8 @@ + /* { dg-options "-O2 -ffast-math" } */ + /* { dg-add-options arm_v8_2a_fp16_neon } */ + +-/* Test instructions generated for half-precision arithmetic. */ ++/* Test instructions generated for half-precision arithmetic with ++ unsafe-math-optimizations enabled. */ + + typedef __fp16 float16_t; + typedef __simd64_float16_t float16x4_t; +@@ -90,9 +91,18 @@ TEST_CMP (greaterthanqual, >=, int16x8_t, float16x8_t) + /* { dg-final { scan-assembler-times {vneg\.f16\tq[0-9]+, q[0-9]+} 1 } } */ + /* { dg-final { scan-assembler-times {vabs\.f16\ts[0-9]+, s[0-9]+} 2 } } */ + +-/* { dg-final { scan-assembler-times {vadd\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ +-/* { dg-final { scan-assembler-times {vsub\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ +-/* { dg-final { scan-assembler-times {vmul\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ ++/* { dg-final { scan-assembler-times {vadd\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vadd\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vadd\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++/* { dg-final { scan-assembler-times {vsub\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vsub\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vsub\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++/* { dg-final { scan-assembler-times {vmul\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ + /* { dg-final { scan-assembler-times {vdiv\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ + /* { dg-final { scan-assembler-times {vcmp\.f32\ts[0-9]+, s[0-9]+} 26 } } */ + /* { dg-final { scan-assembler-times {vcmpe\.f32\ts[0-9]+, s[0-9]+} 52 } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c +@@ -0,0 +1,109 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_2a_fp16_neon_ok } */ ++/* { dg-options "-O2 -fno-fast-math" } */ ++/* { dg-add-options arm_v8_2a_fp16_neon } */ ++ ++/* Test instructions generated for half-precision arithmetic without ++ unsafe-math-optimizations. */ ++ ++typedef __fp16 float16_t; ++typedef __simd64_float16_t float16x4_t; ++typedef __simd128_float16_t float16x8_t; ++ ++typedef short int16x4_t __attribute__ ((vector_size (8))); ++typedef short int int16x8_t __attribute__ ((vector_size (16))); ++ ++float16_t ++fp16_abs (float16_t a) ++{ ++ return (a < 0) ? -a : a; ++} ++ ++#define TEST_UNOP(NAME, OPERATOR, TY) \ ++ TY test_##NAME##_##TY (TY a) \ ++ { \ ++ return OPERATOR (a); \ ++ } ++ ++#define TEST_BINOP(NAME, OPERATOR, TY) \ ++ TY test_##NAME##_##TY (TY a, TY b) \ ++ { \ ++ return a OPERATOR b; \ ++ } ++ ++#define TEST_CMP(NAME, OPERATOR, RTY, TY) \ ++ RTY test_##NAME##_##TY (TY a, TY b) \ ++ { \ ++ return a OPERATOR b; \ ++ } ++ ++/* Scalars. */ ++ ++TEST_UNOP (neg, -, float16_t) ++TEST_UNOP (abs, fp16_abs, float16_t) ++ ++TEST_BINOP (add, +, float16_t) ++TEST_BINOP (sub, -, float16_t) ++TEST_BINOP (mult, *, float16_t) ++TEST_BINOP (div, /, float16_t) ++ ++TEST_CMP (equal, ==, int, float16_t) ++TEST_CMP (unequal, !=, int, float16_t) ++TEST_CMP (lessthan, <, int, float16_t) ++TEST_CMP (greaterthan, >, int, float16_t) ++TEST_CMP (lessthanequal, <=, int, float16_t) ++TEST_CMP (greaterthanqual, >=, int, float16_t) ++ ++/* Vectors of size 4. */ ++ ++TEST_UNOP (neg, -, float16x4_t) ++ ++TEST_BINOP (add, +, float16x4_t) ++TEST_BINOP (sub, -, float16x4_t) ++TEST_BINOP (mult, *, float16x4_t) ++TEST_BINOP (div, /, float16x4_t) ++ ++TEST_CMP (equal, ==, int16x4_t, float16x4_t) ++TEST_CMP (unequal, !=, int16x4_t, float16x4_t) ++TEST_CMP (lessthan, <, int16x4_t, float16x4_t) ++TEST_CMP (greaterthan, >, int16x4_t, float16x4_t) ++TEST_CMP (lessthanequal, <=, int16x4_t, float16x4_t) ++TEST_CMP (greaterthanqual, >=, int16x4_t, float16x4_t) ++ ++/* Vectors of size 8. */ ++ ++TEST_UNOP (neg, -, float16x8_t) ++ ++TEST_BINOP (add, +, float16x8_t) ++TEST_BINOP (sub, -, float16x8_t) ++TEST_BINOP (mult, *, float16x8_t) ++TEST_BINOP (div, /, float16x8_t) ++ ++TEST_CMP (equal, ==, int16x8_t, float16x8_t) ++TEST_CMP (unequal, !=, int16x8_t, float16x8_t) ++TEST_CMP (lessthan, <, int16x8_t, float16x8_t) ++TEST_CMP (greaterthan, >, int16x8_t, float16x8_t) ++TEST_CMP (lessthanequal, <=, int16x8_t, float16x8_t) ++TEST_CMP (greaterthanqual, >=, int16x8_t, float16x8_t) ++ ++/* { dg-final { scan-assembler-times {vneg\.f16\ts[0-9]+, s[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vneg\.f16\td[0-9]+, d[0-9]+} 1 } } */ ++/* { dg-final { scan-assembler-times {vneg\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++/* { dg-final { scan-assembler-times {vadd\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ ++/* { dg-final { scan-assembler-times {vsub\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ ++/* { dg-final { scan-assembler-times {vmul\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ ++/* { dg-final { scan-assembler-times {vdiv\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 13 } } */ ++/* { dg-final { scan-assembler-times {vcmp\.f32\ts[0-9]+, s[0-9]+} 26 } } */ ++ ++/* { dg-final { scan-assembler-times {vcmpe\.f32\ts[0-9]+, s[0-9]+} 52 } } */ ++/* { dg-final { scan-assembler-times {vcmpe\.f32\ts[0-9]+, #0} 2 } } */ ++ ++/* { dg-final { scan-assembler-not {vabs\.f16} } } */ ++ ++/* { dg-final { scan-assembler-not {vadd\.f32} } } */ ++/* { dg-final { scan-assembler-not {vsub\.f32} } } */ ++/* { dg-final { scan-assembler-not {vmul\.f32} } } */ ++/* { dg-final { scan-assembler-not {vdiv\.f32} } } */ ++/* { dg-final { scan-assembler-not {vcmp\.f16} } } */ ++/* { dg-final { scan-assembler-not {vcmpe\.f16} } } */ +--- a/src/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c +@@ -137,7 +137,7 @@ + } + + VCMP1_TEST (vceqz) +-/* { dg-final { scan-assembler-times {vceq\.f16\td[0-9]+, d[0-0]+, #0} 1 } } */ ++/* { dg-final { scan-assembler-times {vceq\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */ + /* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */ + + VCMP1_TEST (vcgtz) +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c +@@ -0,0 +1,491 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_2a_fp16_neon_ok } */ ++/* { dg-options "-O2 -ffast-math" } */ ++/* { dg-add-options arm_v8_2a_fp16_neon } */ ++ ++/* Test instructions generated for the FP16 vector intrinsics with ++ -ffast-math */ ++ ++#include ++ ++#define MSTRCAT(L, str) L##str ++ ++#define UNOP_TEST(insn) \ ++ float16x4_t \ ++ MSTRCAT (test_##insn, _16x4) (float16x4_t a) \ ++ { \ ++ return MSTRCAT (insn, _f16) (a); \ ++ } \ ++ float16x8_t \ ++ MSTRCAT (test_##insn, _16x8) (float16x8_t a) \ ++ { \ ++ return MSTRCAT (insn, q_f16) (a); \ ++ } ++ ++#define BINOP_TEST(insn) \ ++ float16x4_t \ ++ MSTRCAT (test_##insn, _16x4) (float16x4_t a, float16x4_t b) \ ++ { \ ++ return MSTRCAT (insn, _f16) (a, b); \ ++ } \ ++ float16x8_t \ ++ MSTRCAT (test_##insn, _16x8) (float16x8_t a, float16x8_t b) \ ++ { \ ++ return MSTRCAT (insn, q_f16) (a, b); \ ++ } ++ ++#define BINOP_LANE_TEST(insn, I) \ ++ float16x4_t \ ++ MSTRCAT (test_##insn##_lane, _16x4) (float16x4_t a, float16x4_t b) \ ++ { \ ++ return MSTRCAT (insn, _lane_f16) (a, b, I); \ ++ } \ ++ float16x8_t \ ++ MSTRCAT (test_##insn##_lane, _16x8) (float16x8_t a, float16x4_t b) \ ++ { \ ++ return MSTRCAT (insn, q_lane_f16) (a, b, I); \ ++ } ++ ++#define BINOP_LANEQ_TEST(insn, I) \ ++ float16x4_t \ ++ MSTRCAT (test_##insn##_laneq, _16x4) (float16x4_t a, float16x8_t b) \ ++ { \ ++ return MSTRCAT (insn, _laneq_f16) (a, b, I); \ ++ } \ ++ float16x8_t \ ++ MSTRCAT (test_##insn##_laneq, _16x8) (float16x8_t a, float16x8_t b) \ ++ { \ ++ return MSTRCAT (insn, q_laneq_f16) (a, b, I); \ ++ } \ ++ ++#define BINOP_N_TEST(insn) \ ++ float16x4_t \ ++ MSTRCAT (test_##insn##_n, _16x4) (float16x4_t a, float16_t b) \ ++ { \ ++ return MSTRCAT (insn, _n_f16) (a, b); \ ++ } \ ++ float16x8_t \ ++ MSTRCAT (test_##insn##_n, _16x8) (float16x8_t a, float16_t b) \ ++ { \ ++ return MSTRCAT (insn, q_n_f16) (a, b); \ ++ } ++ ++#define TERNOP_TEST(insn) \ ++ float16_t \ ++ MSTRCAT (test_##insn, _16) (float16_t a, float16_t b, float16_t c) \ ++ { \ ++ return MSTRCAT (insn, h_f16) (a, b, c); \ ++ } \ ++ float16x4_t \ ++ MSTRCAT (test_##insn, _16x4) (float16x4_t a, float16x4_t b, \ ++ float16x4_t c) \ ++ { \ ++ return MSTRCAT (insn, _f16) (a, b, c); \ ++ } \ ++ float16x8_t \ ++ MSTRCAT (test_##insn, _16x8) (float16x8_t a, float16x8_t b, \ ++ float16x8_t c) \ ++ { \ ++ return MSTRCAT (insn, q_f16) (a, b, c); \ ++ } ++ ++#define VCMP1_TEST(insn) \ ++ uint16x4_t \ ++ MSTRCAT (test_##insn, _16x4) (float16x4_t a) \ ++ { \ ++ return MSTRCAT (insn, _f16) (a); \ ++ } \ ++ uint16x8_t \ ++ MSTRCAT (test_##insn, _16x8) (float16x8_t a) \ ++ { \ ++ return MSTRCAT (insn, q_f16) (a); \ ++ } ++ ++#define VCMP2_TEST(insn) \ ++ uint16x4_t \ ++ MSTRCAT (test_##insn, _16x4) (float16x4_t a, float16x4_t b) \ ++ { \ ++ return MSTRCAT (insn, _f16) (a, b); \ ++ } \ ++ uint16x8_t \ ++ MSTRCAT (test_##insn, _16x8) (float16x8_t a, float16x8_t b) \ ++ { \ ++ return MSTRCAT (insn, q_f16) (a, b); \ ++ } ++ ++#define VCVT_TEST(insn, TY, TO, FR) \ ++ MSTRCAT (TO, 16x4_t) \ ++ MSTRCAT (test_##insn, TY) (MSTRCAT (FR, 16x4_t) a) \ ++ { \ ++ return MSTRCAT (insn, TY) (a); \ ++ } \ ++ MSTRCAT (TO, 16x8_t) \ ++ MSTRCAT (test_##insn##_q, TY) (MSTRCAT (FR, 16x8_t) a) \ ++ { \ ++ return MSTRCAT (insn, q##TY) (a); \ ++ } ++ ++#define VCVT_N_TEST(insn, TY, TO, FR) \ ++ MSTRCAT (TO, 16x4_t) \ ++ MSTRCAT (test_##insn##_n, TY) (MSTRCAT (FR, 16x4_t) a) \ ++ { \ ++ return MSTRCAT (insn, _n##TY) (a, 1); \ ++ } \ ++ MSTRCAT (TO, 16x8_t) \ ++ MSTRCAT (test_##insn##_n_q, TY) (MSTRCAT (FR, 16x8_t) a) \ ++ { \ ++ return MSTRCAT (insn, q_n##TY) (a, 1); \ ++ } ++ ++VCMP1_TEST (vceqz) ++/* { dg-final { scan-assembler-times {vceq\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */ ++/* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */ ++ ++VCMP1_TEST (vcgtz) ++/* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */ ++/* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */ ++ ++VCMP1_TEST (vcgez) ++/* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */ ++/* { dg-final { scan-assembler-times {vcge\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */ ++ ++VCMP1_TEST (vcltz) ++/* { dg-final { scan-assembler-times {vclt.f16\td[0-9]+, d[0-9]+, #0} 1 } } */ ++/* { dg-final { scan-assembler-times {vclt.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */ ++ ++VCMP1_TEST (vclez) ++/* { dg-final { scan-assembler-times {vcle\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */ ++/* { dg-final { scan-assembler-times {vcle\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */ ++ ++VCVT_TEST (vcvt, _f16_s16, float, int) ++VCVT_N_TEST (vcvt, _f16_s16, float, int) ++/* { dg-final { scan-assembler-times {vcvt\.f16\.s16\td[0-9]+, d[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.f16\.s16\tq[0-9]+, q[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.f16\.s16\td[0-9]+, d[0-9]+, #1} 1 } } ++ { dg-final { scan-assembler-times {vcvt\.f16\.s16\tq[0-9]+, q[0-9]+, #1} 1 } } */ ++ ++VCVT_TEST (vcvt, _f16_u16, float, uint) ++VCVT_N_TEST (vcvt, _f16_u16, float, uint) ++/* { dg-final { scan-assembler-times {vcvt\.f16\.u16\td[0-9]+, d[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.f16\.u16\tq[0-9]+, q[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.f16\.u16\td[0-9]+, d[0-9]+, #1} 1 } } ++ { dg-final { scan-assembler-times {vcvt\.f16\.u16\tq[0-9]+, q[0-9]+, #1} 1 } } */ ++ ++VCVT_TEST (vcvt, _s16_f16, int, float) ++VCVT_N_TEST (vcvt, _s16_f16, int, float) ++/* { dg-final { scan-assembler-times {vcvt\.s16\.f16\td[0-9]+, d[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.s16\.f16\tq[0-9]+, q[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.s16\.f16\td[0-9]+, d[0-9]+, #1} 1 } } ++ { dg-final { scan-assembler-times {vcvt\.s16\.f16\tq[0-9]+, q[0-9]+, #1} 1 } } */ ++ ++VCVT_TEST (vcvt, _u16_f16, uint, float) ++VCVT_N_TEST (vcvt, _u16_f16, uint, float) ++/* { dg-final { scan-assembler-times {vcvt\.u16\.f16\td[0-9]+, d[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.u16\.f16\tq[0-9]+, q[0-9]+} 2 } } ++ { dg-final { scan-assembler-times {vcvt\.u16\.f16\td[0-9]+, d[0-9]+, #1} 1 } } ++ { dg-final { scan-assembler-times {vcvt\.u16\.f16\tq[0-9]+, q[0-9]+, #1} 1 } } */ ++ ++VCVT_TEST (vcvta, _s16_f16, int, float) ++/* { dg-final { scan-assembler-times {vcvta\.s16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvta\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++VCVT_TEST (vcvta, _u16_f16, uint, float) ++/* { dg-final { scan-assembler-times {vcvta\.u16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvta\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++VCVT_TEST (vcvtm, _s16_f16, int, float) ++/* { dg-final { scan-assembler-times {vcvtm\.s16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvtm\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++VCVT_TEST (vcvtm, _u16_f16, uint, float) ++/* { dg-final { scan-assembler-times {vcvtm\.u16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvtm\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++VCVT_TEST (vcvtn, _s16_f16, int, float) ++/* { dg-final { scan-assembler-times {vcvtn\.s16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvtn\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++VCVT_TEST (vcvtn, _u16_f16, uint, float) ++/* { dg-final { scan-assembler-times {vcvtn\.u16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvtn\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++VCVT_TEST (vcvtp, _s16_f16, int, float) ++/* { dg-final { scan-assembler-times {vcvtp\.s16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvtp\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++VCVT_TEST (vcvtp, _u16_f16, uint, float) ++/* { dg-final { scan-assembler-times {vcvtp\.u16\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcvtp\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } } ++*/ ++ ++UNOP_TEST (vabs) ++/* { dg-final { scan-assembler-times {vabs\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vabs\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vneg) ++/* { dg-final { scan-assembler-times {vneg\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vneg\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrecpe) ++/* { dg-final { scan-assembler-times {vrecpe\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrecpe\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrnd) ++/* { dg-final { scan-assembler-times {vrintz\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrintz\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrnda) ++/* { dg-final { scan-assembler-times {vrinta\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrinta\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrndm) ++/* { dg-final { scan-assembler-times {vrintm\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrintm\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrndn) ++/* { dg-final { scan-assembler-times {vrintn\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrintn\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrndp) ++/* { dg-final { scan-assembler-times {vrintp\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrintp\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrndx) ++/* { dg-final { scan-assembler-times {vrintx\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrintx\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++UNOP_TEST (vrsqrte) ++/* { dg-final { scan-assembler-times {vrsqrte\.f16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrsqrte\.f16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vadd) ++/* { dg-final { scan-assembler-times {vadd\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vadd\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vabd) ++/* { dg-final { scan-assembler-times {vabd\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vabd\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vcage) ++/* { dg-final { scan-assembler-times {vacge\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vacge\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vcagt) ++/* { dg-final { scan-assembler-times {vacgt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vacgt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vcale) ++/* { dg-final { scan-assembler-times {vacle\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vacle\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vcalt) ++/* { dg-final { scan-assembler-times {vaclt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vaclt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vceq) ++/* { dg-final { scan-assembler-times {vceq\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vcge) ++/* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcge\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vcgt) ++/* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcgt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vcle) ++/* { dg-final { scan-assembler-times {vcle\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vcle\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++VCMP2_TEST (vclt) ++/* { dg-final { scan-assembler-times {vclt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vclt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vmax) ++/* { dg-final { scan-assembler-times {vmax\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vmax\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vmin) ++/* { dg-final { scan-assembler-times {vmin\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vmin\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vmaxnm) ++/* { dg-final { scan-assembler-times {vmaxnm\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vmaxnm\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vminnm) ++/* { dg-final { scan-assembler-times {vminnm\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vminnm\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vmul) ++/* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 3 } } ++ { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++BINOP_LANE_TEST (vmul, 2) ++/* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+\[2\]} 1 } } ++ { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, d[0-9]+\[2\]} 1 } } */ ++BINOP_N_TEST (vmul) ++/* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+\[0\]} 1 } } ++ { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, d[0-9]+\[0\]} 1 } }*/ ++ ++float16x4_t ++test_vpadd_16x4 (float16x4_t a, float16x4_t b) ++{ ++ return vpadd_f16 (a, b); ++} ++/* { dg-final { scan-assembler-times {vpadd\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */ ++ ++float16x4_t ++test_vpmax_16x4 (float16x4_t a, float16x4_t b) ++{ ++ return vpmax_f16 (a, b); ++} ++/* { dg-final { scan-assembler-times {vpmax\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */ ++ ++float16x4_t ++test_vpmin_16x4 (float16x4_t a, float16x4_t b) ++{ ++ return vpmin_f16 (a, b); ++} ++/* { dg-final { scan-assembler-times {vpmin\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */ ++ ++BINOP_TEST (vsub) ++/* { dg-final { scan-assembler-times {vsub\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vsub\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vrecps) ++/* { dg-final { scan-assembler-times {vrecps\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrecps\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++BINOP_TEST (vrsqrts) ++/* { dg-final { scan-assembler-times {vrsqrts\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrsqrts\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++TERNOP_TEST (vfma) ++/* { dg-final { scan-assembler-times {vfma\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vfma\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++TERNOP_TEST (vfms) ++/* { dg-final { scan-assembler-times {vfms\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vfms\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++float16x4_t ++test_vmov_n_f16 (float16_t a) ++{ ++ return vmov_n_f16 (a); ++} ++ ++float16x4_t ++test_vdup_n_f16 (float16_t a) ++{ ++ return vdup_n_f16 (a); ++} ++/* { dg-final { scan-assembler-times {vdup\.16\td[0-9]+, r[0-9]+} 2 } } */ ++ ++float16x8_t ++test_vmovq_n_f16 (float16_t a) ++{ ++ return vmovq_n_f16 (a); ++} ++ ++float16x8_t ++test_vdupq_n_f16 (float16_t a) ++{ ++ return vdupq_n_f16 (a); ++} ++/* { dg-final { scan-assembler-times {vdup\.16\tq[0-9]+, r[0-9]+} 2 } } */ ++ ++float16x4_t ++test_vdup_lane_f16 (float16x4_t a) ++{ ++ return vdup_lane_f16 (a, 1); ++} ++/* { dg-final { scan-assembler-times {vdup\.16\td[0-9]+, d[0-9]+\[1\]} 1 } } */ ++ ++float16x8_t ++test_vdupq_lane_f16 (float16x4_t a) ++{ ++ return vdupq_lane_f16 (a, 1); ++} ++/* { dg-final { scan-assembler-times {vdup\.16\tq[0-9]+, d[0-9]+\[1\]} 1 } } */ ++ ++float16x4_t ++test_vext_f16 (float16x4_t a, float16x4_t b) ++{ ++ return vext_f16 (a, b, 1); ++} ++/* { dg-final { scan-assembler-times {vext\.16\td[0-9]+, d[0-9]+, d[0-9]+, #1} 1 } } */ ++ ++float16x8_t ++test_vextq_f16 (float16x8_t a, float16x8_t b) ++{ ++ return vextq_f16 (a, b, 1); ++} ++/* { dg-final { scan-assembler-times {vext\.16\tq[0-9]+, q[0-9]+, q[0-9]+, #1} 1 } } */ ++ ++UNOP_TEST (vrev64) ++/* { dg-final { scan-assembler-times {vrev64\.16\td[0-9]+, d[0-9]+} 1 } } ++ { dg-final { scan-assembler-times {vrev64\.16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++float16x4_t ++test_vbsl16x4 (uint16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vbsl_f16 (a, b, c); ++} ++/* { dg-final { scan-assembler-times {vbsl\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */ ++ ++float16x8_t ++test_vbslq16x8 (uint16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vbslq_f16 (a, b, c); ++} ++/*{ dg-final { scan-assembler-times {vbsl\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */ ++ ++float16x4x2_t ++test_vzip16x4 (float16x4_t a, float16x4_t b) ++{ ++ return vzip_f16 (a, b); ++} ++/* { dg-final { scan-assembler-times {vzip\.16\td[0-9]+, d[0-9]+} 1 } } */ ++ ++float16x8x2_t ++test_vzipq16x8 (float16x8_t a, float16x8_t b) ++{ ++ return vzipq_f16 (a, b); ++} ++/*{ dg-final { scan-assembler-times {vzip\.16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++float16x4x2_t ++test_vuzp16x4 (float16x4_t a, float16x4_t b) ++{ ++ return vuzp_f16 (a, b); ++} ++/* { dg-final { scan-assembler-times {vuzp\.16\td[0-9]+, d[0-9]+} 1 } } */ ++ ++float16x8x2_t ++test_vuzpq16x8 (float16x8_t a, float16x8_t b) ++{ ++ return vuzpq_f16 (a, b); ++} ++/*{ dg-final { scan-assembler-times {vuzp\.16\tq[0-9]+, q[0-9]+} 1 } } */ ++ ++float16x4x2_t ++test_vtrn16x4 (float16x4_t a, float16x4_t b) ++{ ++ return vtrn_f16 (a, b); ++} ++/* { dg-final { scan-assembler-times {vtrn\.16\td[0-9]+, d[0-9]+} 1 } } */ ++ ++float16x8x2_t ++test_vtrnq16x8 (float16x8_t a, float16x8_t b) ++{ ++ return vtrnq_f16 (a, b); ++} ++/*{ dg-final { scan-assembler-times {vtrn\.16\tq[0-9]+, q[0-9]+} 1 } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c +@@ -0,0 +1,108 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_2a_fp16_neon_ok } */ ++/* { dg-options "-O2 -ffast-math" } */ ++/* { dg-add-options arm_v8_2a_fp16_neon } */ ++ ++/* Test compiler use of FP16 FMA/FMS instructions with -ffast-math. */ ++ ++#include ++ ++float16x4_t ++test_vfma_1 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vadd_f16 (vmul_f16 (a, b), c); ++} ++ ++float16x4_t ++test_vfma_2 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vsub_f16 (vmul_f16 (a, b), vneg_f16 (c)); ++} ++ ++float16x4_t ++test_vfma_3 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vsub_f16 (vmul_f16 (vneg_f16 (a), vneg_f16 (b)), vneg_f16 (c)); ++} ++ ++float16x4_t ++test_vfma_4 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vsub_f16 (vmul_f16 (a, b), vneg_f16 (c)); ++} ++/* { dg-final { scan-assembler-times {vfma\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 4 } } */ ++ ++float16x8_t ++test_vfmaq_1 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vaddq_f16 (vmulq_f16 (a, b), c); ++} ++ ++float16x8_t ++test_vfmaq_2 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vsubq_f16 (vmulq_f16 (a, b), vnegq_f16 (c)); ++} ++ ++float16x8_t ++test_vfmaq_3 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vsubq_f16 (vmulq_f16 (vnegq_f16 (a), vnegq_f16 (b)), vnegq_f16 (c)); ++} ++ ++float16x8_t ++test_vfmaq_4 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vsubq_f16 (vmulq_f16 (a, b), vnegq_f16 (c)); ++} ++/* { dg-final { scan-assembler-times {vfma\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 4 } } */ ++ ++float16x4_t ++test_vfms_1 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vsub_f16 (c, vmul_f16 (a, b)); ++} ++ ++float16x4_t ++test_vfms_2 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vsub_f16 (a, vmul_f16 (b, c)); ++} ++ ++float16x4_t ++test_vfms_3 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vadd_f16 (vmul_f16 (vneg_f16 (a), b), c); ++} ++ ++float16x4_t ++test_vfms_4 (float16x4_t a, float16x4_t b, float16x4_t c) ++{ ++ return vadd_f16 (vmul_f16 (a, vneg_f16 (b)), c); ++} ++/* { dg-final { scan-assembler-times {vfms\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 4 } } */ ++ ++float16x8_t ++test_vfmsq_1 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vsubq_f16 (c, vmulq_f16 (a, b)); ++} ++ ++float16x8_t ++test_vfmsq_2 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vsubq_f16 (a, vmulq_f16 (b, c)); ++} ++ ++float16x8_t ++test_vfmsq_3 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vaddq_f16 (vmulq_f16 (vnegq_f16 (a), b), c); ++} ++ ++float16x8_t ++test_vfmsq_4 (float16x8_t a, float16x8_t b, float16x8_t c) ++{ ++ return vaddq_f16 (vmulq_f16 (a, vnegq_f16 (b)), c); ++} ++/* { dg-final { scan-assembler-times {vfms\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 4 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/its.c ++++ b/src/gcc/testsuite/gcc.target/arm/its.c +@@ -1,4 +1,6 @@ + /* { dg-do compile } */ ++/* { dg-require-effective-target arm_cortex_m } */ ++/* { dg-require-effective-target arm_thumb2 } */ + /* { dg-options "-O2" } */ + int test (int a, int b) + { +@@ -17,4 +19,6 @@ int test (int a, int b) + r -= 3; + return r; + } +-/* { dg-final { scan-assembler-times "\tit" 2 { target arm_thumb2 } } } */ ++/* Ensure there is no IT block with more than 2 instructions, ie. we only allow ++ IT, ITT and ITE. */ ++/* { dg-final { scan-assembler-not "\\sit\[te\]{2}" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/movdi_movt.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile { target { arm_cortex_m && { arm_thumb2_ok || arm_thumb1_movt_ok } } } } */ ++/* { dg-options "-O2 -mslow-flash-data" } */ ++ ++unsigned long long ++movdi_1 (int a) ++{ ++ return 0xF0F00000LLU; ++} ++ ++unsigned long long ++movdi_2 (int a) ++{ ++ return 0xF0F0000000000000LLU; ++} ++ ++/* Accept r1 because big endian targets put the low bits in the highest ++ numbered register of a pair. */ ++/* { dg-final { scan-assembler-times "movt\tr\[01\], 61680" 2 } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/movsi_movt.c +@@ -0,0 +1,10 @@ ++/* { dg-do compile { target { arm_cortex_m && { arm_thumb2_ok || arm_thumb1_movt_ok } } } } */ ++/* { dg-options "-O2 -mslow-flash-data" } */ ++ ++unsigned ++movsi (void) ++{ ++ return 0xF0F00000U; ++} ++ ++/* { dg-final { scan-assembler-times "movt\tr0, 61680" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/pr69180.c ++++ b/src/gcc/testsuite/gcc.target/arm/pr69180.c +@@ -8,9 +8,10 @@ + #pragma GCC target ("fpu=neon-fp-armv8") + + #define __ARM_NEON_FP 0 ++/* { dg-warning ".__ARM_NEON_FP. redefined" "" { target *-*-* } .-1 } */ ++ + #define __ARM_FP 0 +-#define __ARM_FEATURE_LDREX 0 ++/* { dg-warning ".__ARM_FP. redefined" "" { target *-*-* } .-1 } */ + +-/* { dg-warning ".__ARM_NEON_FP. redefined" "" { target *-*-* } 10 } */ +-/* { dg-warning ".__ARM_FP. redefined" "" { target *-*-* } 11 } */ +-/* { dg-warning ".__ARM_FEATURE_LDREX. redefined" "" { target *-*-* } 12 } */ ++#define __ARM_FEATURE_LDREX 0 ++/* { dg-warning ".__ARM_FEATURE_LDREX. redefined" "" { target *-*-* } .-1 } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/pr77308-1.c +@@ -0,0 +1,169 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Os -Wstack-usage=2500" } */ ++ ++/* This is a modified algorithm with bit-not "~" at the Sigma-blocks. ++ It improves the test coverage of one_cmpldi2 and subdi3 patterns. ++ Unlike the original test case these insns can reach the reload pass, ++ which may result in large stack usage. */ ++ ++#define SHA_LONG64 unsigned long long ++#define U64(C) C##ULL ++ ++#define SHA_LBLOCK 16 ++#define SHA512_CBLOCK (SHA_LBLOCK*8) ++ ++typedef struct SHA512state_st { ++ SHA_LONG64 h[8]; ++ SHA_LONG64 Nl, Nh; ++ union { ++ SHA_LONG64 d[SHA_LBLOCK]; ++ unsigned char p[SHA512_CBLOCK]; ++ } u; ++ unsigned int num, md_len; ++} SHA512_CTX; ++ ++static const SHA_LONG64 K512[80] = { ++ U64(0x428a2f98d728ae22), U64(0x7137449123ef65cd), ++ U64(0xb5c0fbcfec4d3b2f), U64(0xe9b5dba58189dbbc), ++ U64(0x3956c25bf348b538), U64(0x59f111f1b605d019), ++ U64(0x923f82a4af194f9b), U64(0xab1c5ed5da6d8118), ++ U64(0xd807aa98a3030242), U64(0x12835b0145706fbe), ++ U64(0x243185be4ee4b28c), U64(0x550c7dc3d5ffb4e2), ++ U64(0x72be5d74f27b896f), U64(0x80deb1fe3b1696b1), ++ U64(0x9bdc06a725c71235), U64(0xc19bf174cf692694), ++ U64(0xe49b69c19ef14ad2), U64(0xefbe4786384f25e3), ++ U64(0x0fc19dc68b8cd5b5), U64(0x240ca1cc77ac9c65), ++ U64(0x2de92c6f592b0275), U64(0x4a7484aa6ea6e483), ++ U64(0x5cb0a9dcbd41fbd4), U64(0x76f988da831153b5), ++ U64(0x983e5152ee66dfab), U64(0xa831c66d2db43210), ++ U64(0xb00327c898fb213f), U64(0xbf597fc7beef0ee4), ++ U64(0xc6e00bf33da88fc2), U64(0xd5a79147930aa725), ++ U64(0x06ca6351e003826f), U64(0x142929670a0e6e70), ++ U64(0x27b70a8546d22ffc), U64(0x2e1b21385c26c926), ++ U64(0x4d2c6dfc5ac42aed), U64(0x53380d139d95b3df), ++ U64(0x650a73548baf63de), U64(0x766a0abb3c77b2a8), ++ U64(0x81c2c92e47edaee6), U64(0x92722c851482353b), ++ U64(0xa2bfe8a14cf10364), U64(0xa81a664bbc423001), ++ U64(0xc24b8b70d0f89791), U64(0xc76c51a30654be30), ++ U64(0xd192e819d6ef5218), U64(0xd69906245565a910), ++ U64(0xf40e35855771202a), U64(0x106aa07032bbd1b8), ++ U64(0x19a4c116b8d2d0c8), U64(0x1e376c085141ab53), ++ U64(0x2748774cdf8eeb99), U64(0x34b0bcb5e19b48a8), ++ U64(0x391c0cb3c5c95a63), U64(0x4ed8aa4ae3418acb), ++ U64(0x5b9cca4f7763e373), U64(0x682e6ff3d6b2b8a3), ++ U64(0x748f82ee5defb2fc), U64(0x78a5636f43172f60), ++ U64(0x84c87814a1f0ab72), U64(0x8cc702081a6439ec), ++ U64(0x90befffa23631e28), U64(0xa4506cebde82bde9), ++ U64(0xbef9a3f7b2c67915), U64(0xc67178f2e372532b), ++ U64(0xca273eceea26619c), U64(0xd186b8c721c0c207), ++ U64(0xeada7dd6cde0eb1e), U64(0xf57d4f7fee6ed178), ++ U64(0x06f067aa72176fba), U64(0x0a637dc5a2c898a6), ++ U64(0x113f9804bef90dae), U64(0x1b710b35131c471b), ++ U64(0x28db77f523047d84), U64(0x32caab7b40c72493), ++ U64(0x3c9ebe0a15c9bebc), U64(0x431d67c49c100d4c), ++ U64(0x4cc5d4becb3e42b6), U64(0x597f299cfc657e2a), ++ U64(0x5fcb6fab3ad6faec), U64(0x6c44198c4a475817) ++}; ++ ++#define B(x,j) (((SHA_LONG64)(*(((const unsigned char *)(&x))+j)))<<((7-j)*8)) ++#define PULL64(x) (B(x,0)|B(x,1)|B(x,2)|B(x,3)|B(x,4)|B(x,5)|B(x,6)|B(x,7)) ++#define ROTR(x,s) (((x)>>s) | (x)<<(64-s)) ++#define Sigma0(x) ~(ROTR((x),28) ^ ROTR((x),34) ^ ROTR((x),39)) ++#define Sigma1(x) ~(ROTR((x),14) ^ ROTR((x),18) ^ ROTR((x),41)) ++#define sigma0(x) ~(ROTR((x),1) ^ ROTR((x),8) ^ ((x)>>7)) ++#define sigma1(x) ~(ROTR((x),19) ^ ROTR((x),61) ^ ((x)>>6)) ++#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) ++#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) ++ ++#define ROUND_00_15(i,a,b,c,d,e,f,g,h) do { \ ++ T1 += h + Sigma1(e) + Ch(e,f,g) + K512[i]; \ ++ h = Sigma0(a) + Maj(a,b,c); \ ++ d += T1; h += T1; } while (0) ++#define ROUND_16_80(i,j,a,b,c,d,e,f,g,h,X) do { \ ++ s0 = X[(j+1)&0x0f]; s0 = sigma0(s0); \ ++ s1 = X[(j+14)&0x0f]; s1 = sigma1(s1); \ ++ T1 = X[(j)&0x0f] += s0 + s1 + X[(j+9)&0x0f]; \ ++ ROUND_00_15(i+j,a,b,c,d,e,f,g,h); } while (0) ++void sha512_block_data_order(SHA512_CTX *ctx, const void *in, ++ unsigned int num) ++{ ++ const SHA_LONG64 *W = in; ++ SHA_LONG64 a, b, c, d, e, f, g, h, s0, s1, T1; ++ SHA_LONG64 X[16]; ++ int i; ++ ++ while (num--) { ++ ++ a = ctx->h[0]; ++ b = ctx->h[1]; ++ c = ctx->h[2]; ++ d = ctx->h[3]; ++ e = ctx->h[4]; ++ f = ctx->h[5]; ++ g = ctx->h[6]; ++ h = ctx->h[7]; ++ ++ T1 = X[0] = PULL64(W[0]); ++ ROUND_00_15(0, a, b, c, d, e, f, g, h); ++ T1 = X[1] = PULL64(W[1]); ++ ROUND_00_15(1, h, a, b, c, d, e, f, g); ++ T1 = X[2] = PULL64(W[2]); ++ ROUND_00_15(2, g, h, a, b, c, d, e, f); ++ T1 = X[3] = PULL64(W[3]); ++ ROUND_00_15(3, f, g, h, a, b, c, d, e); ++ T1 = X[4] = PULL64(W[4]); ++ ROUND_00_15(4, e, f, g, h, a, b, c, d); ++ T1 = X[5] = PULL64(W[5]); ++ ROUND_00_15(5, d, e, f, g, h, a, b, c); ++ T1 = X[6] = PULL64(W[6]); ++ ROUND_00_15(6, c, d, e, f, g, h, a, b); ++ T1 = X[7] = PULL64(W[7]); ++ ROUND_00_15(7, b, c, d, e, f, g, h, a); ++ T1 = X[8] = PULL64(W[8]); ++ ROUND_00_15(8, a, b, c, d, e, f, g, h); ++ T1 = X[9] = PULL64(W[9]); ++ ROUND_00_15(9, h, a, b, c, d, e, f, g); ++ T1 = X[10] = PULL64(W[10]); ++ ROUND_00_15(10, g, h, a, b, c, d, e, f); ++ T1 = X[11] = PULL64(W[11]); ++ ROUND_00_15(11, f, g, h, a, b, c, d, e); ++ T1 = X[12] = PULL64(W[12]); ++ ROUND_00_15(12, e, f, g, h, a, b, c, d); ++ T1 = X[13] = PULL64(W[13]); ++ ROUND_00_15(13, d, e, f, g, h, a, b, c); ++ T1 = X[14] = PULL64(W[14]); ++ ROUND_00_15(14, c, d, e, f, g, h, a, b); ++ T1 = X[15] = PULL64(W[15]); ++ ROUND_00_15(15, b, c, d, e, f, g, h, a); ++ ++ for (i = 16; i < 80; i += 16) { ++ ROUND_16_80(i, 0, a, b, c, d, e, f, g, h, X); ++ ROUND_16_80(i, 1, h, a, b, c, d, e, f, g, X); ++ ROUND_16_80(i, 2, g, h, a, b, c, d, e, f, X); ++ ROUND_16_80(i, 3, f, g, h, a, b, c, d, e, X); ++ ROUND_16_80(i, 4, e, f, g, h, a, b, c, d, X); ++ ROUND_16_80(i, 5, d, e, f, g, h, a, b, c, X); ++ ROUND_16_80(i, 6, c, d, e, f, g, h, a, b, X); ++ ROUND_16_80(i, 7, b, c, d, e, f, g, h, a, X); ++ ROUND_16_80(i, 8, a, b, c, d, e, f, g, h, X); ++ ROUND_16_80(i, 9, h, a, b, c, d, e, f, g, X); ++ ROUND_16_80(i, 10, g, h, a, b, c, d, e, f, X); ++ ROUND_16_80(i, 11, f, g, h, a, b, c, d, e, X); ++ ROUND_16_80(i, 12, e, f, g, h, a, b, c, d, X); ++ ROUND_16_80(i, 13, d, e, f, g, h, a, b, c, X); ++ ROUND_16_80(i, 14, c, d, e, f, g, h, a, b, X); ++ ROUND_16_80(i, 15, b, c, d, e, f, g, h, a, X); ++ } ++ ++ ctx->h[0] += a; ++ ctx->h[1] += b; ++ ctx->h[2] += c; ++ ctx->h[3] += d; ++ ctx->h[4] += e; ++ ctx->h[5] += f; ++ ctx->h[6] += g; ++ ctx->h[7] += h; ++ ++ W += SHA_LBLOCK; ++ } ++} +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/sdiv_costs_1.c +@@ -0,0 +1,40 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++/* { dg-require-effective-target arm_arch_v8a_ok } */ ++/* { dg-add-options arm_arch_v8a } */ ++ ++/* Both sdiv and udiv can be used here, so prefer udiv. */ ++int f1 (unsigned char *p) ++{ ++ return 100 / p[1]; ++} ++ ++int f2 (unsigned char *p, unsigned short x) ++{ ++ return x / p[0]; ++} ++ ++int f3 (unsigned char *p, int x) ++{ ++ x &= 0x7fffffff; ++ return x / p[0]; ++} ++ ++int f5 (unsigned char *p, unsigned short x) ++{ ++ return x % p[0]; ++} ++ ++/* This should only generate signed divisions. */ ++int f4 (unsigned char *p) ++{ ++ return -100 / p[1]; ++} ++ ++int f6 (unsigned char *p, short x) ++{ ++ return x % p[0]; ++} ++ ++/* { dg-final { scan-assembler-times "udiv\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 4 } } */ ++/* { dg-final { scan-assembler-times "sdiv\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vdot-compile.c +@@ -0,0 +1,56 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-O3" } */ ++/* { dg-require-effective-target arm_v8_2a_dotprod_neon_ok } */ ++/* { dg-add-options arm_v8_2a_dotprod_neon } */ ++ ++#include ++ ++/* Unsigned Dot Product instructions. */ ++ ++uint32x2_t ufoo (uint32x2_t r, uint8x8_t x, uint8x8_t y) ++{ ++ return vdot_u32 (r, x, y); ++} ++ ++uint32x4_t ufooq (uint32x4_t r, uint8x16_t x, uint8x16_t y) ++{ ++ return vdotq_u32 (r, x, y); ++} ++ ++uint32x2_t ufoo_lane (uint32x2_t r, uint8x8_t x, uint8x8_t y) ++{ ++ return vdot_lane_u32 (r, x, y, 0); ++} ++ ++uint32x4_t ufooq_lane (uint32x4_t r, uint8x16_t x, uint8x8_t y) ++{ ++ return vdotq_lane_u32 (r, x, y, 0); ++} ++ ++/* Signed Dot Product instructions. */ ++ ++int32x2_t sfoo (int32x2_t r, int8x8_t x, int8x8_t y) ++{ ++ return vdot_s32 (r, x, y); ++} ++ ++int32x4_t sfooq (int32x4_t r, int8x16_t x, int8x16_t y) ++{ ++ return vdotq_s32 (r, x, y); ++} ++ ++int32x2_t sfoo_lane (int32x2_t r, int8x8_t x, int8x8_t y) ++{ ++ return vdot_lane_s32 (r, x, y, 0); ++} ++ ++int32x4_t sfooq_lane (int32x4_t r, int8x16_t x, int8x8_t y) ++{ ++ return vdotq_lane_s32 (r, x, y, 0); ++} ++ ++/* { dg-final { scan-assembler-times {v[us]dot\.[us]8\td[0-9]+, d[0-9]+, d[0-9]+} 4 } } */ ++/* { dg-final { scan-assembler-times {v[us]dot\.[us]8\tq[0-9]+, q[0-9]+, q[0-9]+} 2 } } */ ++/* { dg-final { scan-assembler-times {v[us]dot\.[us]8\td[0-9]+, d[0-9]+, d[0-9]+\[#?[0-9]\]} 2 } } */ ++/* { dg-final { scan-assembler-times {v[us]dot\.[us]8\tq[0-9]+, q[0-9]+, d[0-9]+\[#?[0-9]\]} 2 } } */ ++ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vdot-exec.c +@@ -0,0 +1,55 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-O3" } */ ++/* { dg-require-effective-target arm_v8_2a_dotprod_neon_hw } */ ++/* { dg-add-options arm_v8_2a_dotprod_neon } */ ++ ++#include ++ ++extern void abort(); ++ ++#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ ++# define ORDER(x, y) y ++#else ++# define ORDER(x, y) x - y ++#endif ++ ++#define P(n1,n2) n1,n1,n1,n1,n2,n2,n2,n2 ++#define ARR(nm, p, ty, ...) ty nm##_##p = { __VA_ARGS__ } ++#define TEST(t1, t2, t3, f, r1, r2, n1, n2) \ ++ ARR(f, x, t1, r1); \ ++ ARR(f, y, t2, r2); \ ++ t3 f##_##r = {0}; \ ++ f##_##r = f (f##_##r, f##_##x, f##_##y); \ ++ if (f##_##r[0] != n1 || f##_##r[1] != n2) \ ++ abort (); ++ ++#define TEST_LANE(t1, t2, t3, f, r1, r2, n1, n2, n3, n4) \ ++ ARR(f, x, t1, r1); \ ++ ARR(f, y, t2, r2); \ ++ t3 f##_##rx = {0}; \ ++ f##_##rx = f (f##_##rx, f##_##x, f##_##y, ORDER (1, 0)); \ ++ if (f##_##rx[0] != n1 || f##_##rx[1] != n2) \ ++ abort (); \ ++ t3 f##_##rx1 = {0}; \ ++ f##_##rx1 = f (f##_##rx1, f##_##x, f##_##y, ORDER (1, 1)); \ ++ if (f##_##rx1[0] != n3 || f##_##rx1[1] != n4) \ ++ abort (); \ ++ ++int ++main() ++{ ++ TEST (uint8x8_t, uint8x8_t, uint32x2_t, vdot_u32, P(1,2), P(2,3), 8, 24); ++ TEST (int8x8_t, int8x8_t, int32x2_t, vdot_s32, P(1,2), P(-2,-3), -8, -24); ++ ++ TEST (uint8x16_t, uint8x16_t, uint32x4_t, vdotq_u32, P(1,2), P(2,3), 8, 24); ++ TEST (int8x16_t, int8x16_t, int32x4_t, vdotq_s32, P(1,2), P(-2,-3), -8, -24); ++ ++ TEST_LANE (uint8x8_t, uint8x8_t, uint32x2_t, vdot_lane_u32, P(1,2), P(2,3), 8, 16, 12, 24); ++ ++ TEST_LANE (int8x8_t, int8x8_t, int32x2_t, vdot_lane_s32, P(1,2), P(-2,-3), -8, -16, -12, -24); ++ ++ TEST_LANE (uint8x16_t, uint8x8_t, uint32x4_t, vdotq_lane_u32, P(1,2), P(2,3), 8, 16, 12, 24); ++ TEST_LANE (int8x16_t, int8x8_t, int32x4_t, vdotq_lane_s32, P(1,2), P(-2,-3), -8, -16, -12, -24); ++ ++ return 0; ++} +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/arm/simd/vect-dot-qi.h +@@ -0,0 +1,16 @@ ++TYPE char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); ++TYPE char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); ++ ++__attribute__ ((noinline)) int ++foo1(int len) { ++ int i; ++ TYPE int result = 0; ++ TYPE short prod; ++ ++ for (i=0; i 1.1234f) ++ return 2.1234f; ++ else ++ return 3.1234f; ++} ++ ++double ++testdf (double *p) ++{ ++ if (*p > 4.1234) ++ return 2.1234; ++ else ++ return 3.1234; ++} ++ ++long long ++testll (long long *p) ++{ ++ if (*p > 0x123456789ABCDEFll) ++ return 0x111111111ll; ++ else ++ return 0x222222222ll; ++} ++ ++char * ++testchar () ++{ ++ return p + 4; ++} ++ ++int ++foo (int a, int b) ++{ ++ int i; ++ volatile int *labelref = &&label1; ++ ++ if (a > b) ++ { ++ while (i < b) ++ { ++ a += *labelref; ++ i += 1; ++ } ++ goto *labelref; ++ } ++ else ++ b = b + 3; ++ ++ a = a * b; ++ ++label1: ++ return a + b; ++} ++ ++/* { dg-final { scan-assembler-not "\\.(float|l\\?double|\d?byte|short|int|long|quad|word)\\s+\[^.\]" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data.c ++++ b/src//dev/null +@@ -1,73 +0,0 @@ +-/* The option -mslow-flash-data is just for performance tuning, it +- doesn't totally disable the use of literal pools. But for below +- simple cases, the use of literal pool should be replaced by +- movw/movt or read-only constant pool. */ +- +-/* { dg-do compile } */ +-/* { dg-require-effective-target arm_cortex_m } */ +-/* { dg-require-effective-target arm_thumb2_ok } */ +-/* { dg-options "-O2 -mthumb -mslow-flash-data" } */ +- +-float sf; +-double df; +-long long l; +-static char *p = "Hello World"; +- +-float +-testsf (float *p) +-{ +- if (*p > 1.1234f) +- return 2.1234f; +- else +- return 3.1234f; +-} +- +-double +-testdf (double *p) +-{ +- if (*p > 4.1234) +- return 2.1234; +- else +- return 3.1234; +-} +- +-long long +-testll (long long *p) +-{ +- if (*p > 0x123456789ABCDEFll) +- return 0x111111111ll; +- else +- return 0x222222222ll; +-} +- +-char * +-testchar () +-{ +- return p + 4; +-} +- +-int +-foo (int a, int b) +-{ +- int i; +- volatile int *labelref = &&label1; +- +- if (a > b) +- { +- while (i < b) +- { +- a += *labelref; +- i += 1; +- } +- goto *labelref; +- } +- else +- b = b + 3; +- +- a = a * b; +- +-label1: +- return a + b; +-} +- +-/* { dg-final { scan-assembler-not "\\.(float|l\\?double|\d?byte|short|int|long|quad|word)\\s+\[^.\]" } } */ +--- a/src/gcc/testsuite/gcc.target/i386/pr48723.c ++++ b/src/gcc/testsuite/gcc.target/i386/pr48723.c +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-require-stack-check "" } */ + /* { dg-options "-fstack-check -mavx" } */ + + struct S0 +--- a/src/gcc/testsuite/gcc.target/i386/pr55672.c ++++ b/src/gcc/testsuite/gcc.target/i386/pr55672.c +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-require-stack-check "generic" } */ + /* { dg-options "-O -fstack-check=generic" } */ + + int main () +--- a/src/gcc/testsuite/gcc.target/i386/pr67265-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/pr67265-2.c +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-require-stack-check "" } */ + /* { dg-options "-O -fstack-check" } */ + + void foo (int n) +--- a/src/gcc/testsuite/gcc.target/i386/pr67265.c ++++ b/src/gcc/testsuite/gcc.target/i386/pr67265.c +@@ -2,6 +2,7 @@ + /* Reduced testcase by Johannes Dewender */ + + /* { dg-do compile } */ ++/* { dg-require-stack-check "" } */ + /* { dg-options "-O -fstack-check -fPIC" } */ + + int a, b, c, d, e; +--- a/src/gcc/testsuite/gnat.dg/opt49.adb ++++ b/src/gcc/testsuite/gnat.dg/opt49.adb +@@ -1,4 +1,5 @@ + -- { dg-do run } ++-- { dg-require-stack-check "" } + -- { dg-options "-O -fstack-check" } + + procedure Opt49 is +--- a/src/gcc/testsuite/gnat.dg/stack_check1.adb ++++ b/src/gcc/testsuite/gnat.dg/stack_check1.adb +@@ -1,4 +1,5 @@ + -- { dg-do run } ++-- { dg-require-stack-check "" } + -- { dg-options "-fstack-check" } + + -- This test requires architecture- and OS-specific support code for unwinding +--- a/src/gcc/testsuite/gnat.dg/stack_check2.adb ++++ b/src/gcc/testsuite/gnat.dg/stack_check2.adb +@@ -1,4 +1,5 @@ + -- { dg-do run } ++-- { dg-require-stack-check "" } + -- { dg-options "-fstack-check" } + + -- This test requires architecture- and OS-specific support code for unwinding +--- a/src/gcc/testsuite/gnat.dg/stack_check3.adb ++++ b/src/gcc/testsuite/gnat.dg/stack_check3.adb +@@ -1,4 +1,5 @@ + -- { dg-do compile } ++-- { dg-require-stack-check "" } + -- { dg-options "-O -fstack-check" } + + package body Stack_Check3 is +--- a/src/gcc/testsuite/lib/target-supports-dg.exp ++++ b/src/gcc/testsuite/lib/target-supports-dg.exp +@@ -265,6 +265,21 @@ proc dg-require-linker-plugin { args } { + } + } + ++# If this target does not support the "stack-check" option, skip this ++# test. ++ ++proc dg-require-stack-check { args } { ++ set stack_check_available [ check_stack_check_available [lindex $args 1 ] ] ++ if { $stack_check_available == -1 } { ++ upvar name name ++ unresolved "$name" ++ } ++ if { $stack_check_available != 1 } { ++ upvar dg-do-what dg-do-what ++ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] ++ } ++} ++ + # Add any target-specific flags needed for accessing the given list + # of features. This must come after all dg-options. + +--- a/src/gcc/testsuite/lib/target-supports.exp ++++ b/src/gcc/testsuite/lib/target-supports.exp +@@ -1029,6 +1029,17 @@ proc check_effective_target_fstack_protector {} { + } "-fstack-protector"] + } + ++# Return 1 if the target supports -fstack-check or -fstack-check=$stack_kind ++proc check_stack_check_available { stack_kind } { ++ if [string match "" $stack_kind] then { ++ set stack_opt "-fstack-check" ++ } else { set stack_opt "-fstack-check=$stack_kind" } ++ ++ return [check_no_compiler_messages stack_check_$stack_kind executable { ++ int main (void) { return 0; } ++ } "$stack_opt"] ++} ++ + # Return 1 if compilation with -freorder-blocks-and-partition is error-free + # for trivial code, 0 otherwise. As some targets (ARM for example) only + # warn when -fprofile-use is also supplied we test that combination too. +@@ -3365,7 +3376,7 @@ proc add_options_for_arm_v8_1a_neon { flags } { + return "$flags" + } + global et_arm_v8_1a_neon_flags +- return "$flags $et_arm_v8_1a_neon_flags -march=armv8.1-a" ++ return "$flags $et_arm_v8_1a_neon_flags" + } + + # Add the options needed for ARMv8.2 with the scalar FP16 extension. +@@ -3802,12 +3813,13 @@ proc check_effective_target_arm_fp16_hw { } { + # can be selected and a routine to give the flags to select that architecture + # Note: Extra flags may be added to disable options from newer compilers + # (Thumb in particular - but others may be added in the future). +-# -march=armv7ve is special and is handled explicitly after this loop because +-# it needs more than one predefine check to identify. ++# Warning: Do not use check_effective_target_arm_arch_*_ok for architecture ++# extension (eg. ARMv8.1-A) since there is no macro defined for them. See ++# how only __ARM_ARCH_8A__ is checked for ARMv8.1-A. + # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */ + # /* { dg-add-options arm_arch_v5 } */ + # /* { dg-require-effective-target arm_arch_v5_multilib } */ +-foreach { armfunc armflag armdef } { ++foreach { armfunc armflag armdefs } { + v4 "-march=armv4 -marm" __ARM_ARCH_4__ + v4t "-march=armv4t" __ARM_ARCH_4T__ + v5 "-march=armv5 -marm" __ARM_ARCH_5__ +@@ -3822,20 +3834,23 @@ foreach { armfunc armflag armdef } { + v7r "-march=armv7-r" __ARM_ARCH_7R__ + v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__ + v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__ ++ v7ve "-march=armv7ve -marm" ++ "__ARM_ARCH_7A__ && __ARM_FEATURE_IDIV" + v8a "-march=armv8-a" __ARM_ARCH_8A__ + v8_1a "-march=armv8.1a" __ARM_ARCH_8A__ + v8_2a "-march=armv8.2a" __ARM_ARCH_8A__ +- v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" __ARM_ARCH_8M_BASE__ ++ v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" ++ __ARM_ARCH_8M_BASE__ + v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } { +- eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] { ++ eval [string map [list FUNC $armfunc FLAG $armflag DEFS $armdefs ] { + proc check_effective_target_arm_arch_FUNC_ok { } { + if { [ string match "*-marm*" "FLAG" ] && + ![check_effective_target_arm_arm_ok] } { + return 0 + } + return [check_no_compiler_messages arm_arch_FUNC_ok assembly { +- #if !defined (DEF) +- #error !DEF ++ #if !(DEFS) ++ #error !(DEFS) + #endif + } "FLAG" ] + } +@@ -3856,26 +3871,6 @@ foreach { armfunc armflag armdef } { + }] + } + +-# Same functions as above but for -march=armv7ve. To uniquely identify +-# -march=armv7ve we need to check for __ARM_ARCH_7A__ as well as +-# __ARM_FEATURE_IDIV otherwise it aliases with armv7-a. +- +-proc check_effective_target_arm_arch_v7ve_ok { } { +- if { [ string match "*-marm*" "-march=armv7ve" ] && +- ![check_effective_target_arm_arm_ok] } { +- return 0 +- } +- return [check_no_compiler_messages arm_arch_v7ve_ok assembly { +- #if !defined (__ARM_ARCH_7A__) || !defined (__ARM_FEATURE_IDIV) +- #error !armv7ve +- #endif +- } "-march=armv7ve" ] +-} +- +-proc add_options_for_arm_arch_v7ve { flags } { +- return "$flags -march=armv7ve" +-} +- + # Return 1 if GCC was configured with --with-mode= + proc check_effective_target_default_mode { } { + +@@ -4071,13 +4066,15 @@ proc check_effective_target_arm_v8_1a_neon_ok_nocache { } { + # since AArch64 only needs the -march setting. + foreach flags {"" "-mfpu=neon-fp-armv8" "-mfloat-abi=softfp" \ + "-mfpu=neon-fp-armv8 -mfloat-abi=softfp"} { +- if { [check_no_compiler_messages_nocache arm_v8_1a_neon_ok object { +- #if !defined (__ARM_FEATURE_QRDMX) +- #error "__ARM_FEATURE_QRDMX not defined" +- #endif +- } "$flags -march=armv8.1-a"] } { +- set et_arm_v8_1a_neon_flags "$flags -march=armv8.1-a" +- return 1 ++ foreach arches { "-march=armv8-a+rdma" "-march=armv8.1-a" } { ++ if { [check_no_compiler_messages_nocache arm_v8_1a_neon_ok object { ++ #if !defined (__ARM_FEATURE_QRDMX) ++ #error "__ARM_FEATURE_QRDMX not defined" ++ #endif ++ } "$flags $arches"] } { ++ set et_arm_v8_1a_neon_flags "$flags $arches" ++ return 1 ++ } + } + } + +@@ -4159,6 +4156,51 @@ proc check_effective_target_arm_v8_2a_fp16_neon_ok { } { + check_effective_target_arm_v8_2a_fp16_neon_ok_nocache] + } + ++# Return 1 if the target supports ARMv8.2 Adv.SIMD Dot Product ++# instructions, 0 otherwise. The test is valid for ARM and for AArch64. ++# Record the command line options needed. ++ ++proc check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache { } { ++ global et_arm_v8_2a_dotprod_neon_flags ++ set et_arm_v8_2a_dotprod_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=neon-fp-armv8" "-mfloat-abi=hard -mfpu=neon-fp-armv8"} { ++ if { [check_no_compiler_messages_nocache \ ++ arm_v8_2a_dotprod_neon_ok object { ++ #if !defined (__ARM_FEATURE_DOTPROD) ++ #error "__ARM_FEATURE_DOTPROD not defined" ++ #else ++ /* Make sure including arm_neon.h is OK. */ ++ #include ++ #endif ++ } "$flags -march=armv8.2-a+dotprod"] } { ++ set et_arm_v8_2a_dotprod_neon_flags "$flags -march=armv8.2-a+dotprod" ++ return 1 ++ } ++ } ++ ++ return 0; ++} ++ ++proc check_effective_target_arm_v8_2a_dotprod_neon_ok { } { ++ return [check_cached_effective_target arm_v8_2a_dotprod_neon_ok \ ++ check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache] ++} ++ ++proc add_options_for_arm_v8_2a_dotprod_neon { flags } { ++ if { ! [check_effective_target_arm_v8_2a_dotprod_neon_ok] } { ++ return "$flags" ++ } ++ global et_arm_v8_2a_dotprod_neon_flags ++ return "$flags $et_arm_v8_2a_dotprod_neon_flags" ++} ++ + # Return 1 if the target supports executing ARMv8 NEON instructions, 0 + # otherwise. + +@@ -4296,6 +4338,42 @@ proc check_effective_target_arm_v8_2a_fp16_neon_hw { } { + } [add_options_for_arm_v8_2a_fp16_neon ""]] + } + ++# Return 1 if the target supports executing AdvSIMD instructions from ARMv8.2 ++# with the Dot Product extension, 0 otherwise. The test is valid for ARM and for ++# AArch64. ++ ++proc check_effective_target_arm_v8_2a_dotprod_neon_hw { } { ++ if { ![check_effective_target_arm_v8_2a_dotprod_neon_ok] } { ++ return 0; ++ } ++ return [check_runtime arm_v8_2a_dotprod_neon_hw_available { ++ #include "arm_neon.h" ++ int ++ main (void) ++ { ++ ++ uint32x2_t results = {0,0}; ++ uint8x8_t a = {1,1,1,1,2,2,2,2}; ++ uint8x8_t b = {2,2,2,2,3,3,3,3}; ++ ++ #ifdef __ARM_ARCH_ISA_A64 ++ asm ("udot %0.2s, %1.8b, %2.8b" ++ : "=w"(results) ++ : "w"(a), "w"(b) ++ : /* No clobbers. */); ++ ++ #else ++ asm ("vudot.u8 %P0, %P1, %P2" ++ : "=w"(results) ++ : "w"(a), "w"(b) ++ : /* No clobbers. */); ++ #endif ++ ++ return (results[0] == 8 && results[1] == 24) ? 1 : 0; ++ } ++ } [add_options_for_arm_v8_2a_dotprod_neon ""]] ++} ++ + # Return 1 if this is a ARM target with NEON enabled. + + proc check_effective_target_arm_neon { } { +@@ -5566,6 +5644,8 @@ proc check_effective_target_vect_sdot_qi { } { + } else { + set et_vect_sdot_qi_saved($et_index) 0 + if { [istarget ia64-*-*] ++ || [istarget aarch64*-*-*] ++ || [istarget arm*-*-*] + || ([istarget mips*-*-*] + && [et-is-effective-target mips_msa]) } { + set et_vect_udot_qi_saved 1 +@@ -5590,6 +5670,8 @@ proc check_effective_target_vect_udot_qi { } { + } else { + set et_vect_udot_qi_saved($et_index) 0 + if { [istarget powerpc*-*-*] ++ || [istarget aarch64*-*-*] ++ || [istarget arm*-*-*] + || [istarget ia64-*-*] + || ([istarget mips*-*-*] + && [et-is-effective-target mips_msa]) } { +@@ -7900,7 +7982,7 @@ proc check_effective_target_aarch64_tiny { } { + # Create functions to check that the AArch64 assembler supports the + # various architecture extensions via the .arch_extension pseudo-op. + +-foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse"} { ++foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod"} { + eval [string map [list FUNC $aarch64_ext] { + proc check_effective_target_aarch64_asm_FUNC_ok { } { + if { [istarget aarch64*-*-*] } { +--- a/src/gcc/tree-ssa-dce.c ++++ b/src/gcc/tree-ssa-dce.c +@@ -233,6 +233,8 @@ mark_stmt_if_obviously_necessary (gimple *stmt, bool aggressive) + case BUILT_IN_CALLOC: + case BUILT_IN_ALLOCA: + case BUILT_IN_ALLOCA_WITH_ALIGN: ++ case BUILT_IN_STRDUP: ++ case BUILT_IN_STRNDUP: + return; + + default:; +--- a/src/gcc/tree-ssa-loop-prefetch.c ++++ b/src/gcc/tree-ssa-loop-prefetch.c +@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see + #include "tree-inline.h" + #include "tree-data-ref.h" + #include "diagnostic-core.h" ++#include "dbgcnt.h" + + /* This pass inserts prefetch instructions to optimize cache usage during + accesses to arrays in loops. It processes loops sequentially and: +@@ -227,6 +228,7 @@ struct mem_ref_group + tree step; /* Step of the reference. */ + struct mem_ref *refs; /* References in the group. */ + struct mem_ref_group *next; /* Next group of references. */ ++ unsigned int uid; /* Group UID, used only for debugging. */ + }; + + /* Assigned to PREFETCH_BEFORE when all iterations are to be prefetched. */ +@@ -269,6 +271,7 @@ struct mem_ref + unsigned reuse_distance; /* The amount of data accessed before the first + reuse of this value. */ + struct mem_ref *next; /* The next reference in the group. */ ++ unsigned int uid; /* Ref UID, used only for debugging. */ + unsigned write_p : 1; /* Is it a write? */ + unsigned independent_p : 1; /* True if the reference is independent on + all other references inside the loop. */ +@@ -290,11 +293,8 @@ dump_mem_details (FILE *file, tree base, tree step, + else + print_generic_expr (file, step, TDF_TREE); + fprintf (file, ")\n"); +- fprintf (file, " delta "); +- fprintf (file, HOST_WIDE_INT_PRINT_DEC, delta); +- fprintf (file, "\n"); +- fprintf (file, " %s\n", write_p ? "write" : "read"); +- fprintf (file, "\n"); ++ fprintf (file, " delta " HOST_WIDE_INT_PRINT_DEC "\n", delta); ++ fprintf (file, " %s\n\n", write_p ? "write" : "read"); + } + + /* Dumps information about reference REF to FILE. */ +@@ -302,12 +302,9 @@ dump_mem_details (FILE *file, tree base, tree step, + static void + dump_mem_ref (FILE *file, struct mem_ref *ref) + { +- fprintf (file, "Reference %p:\n", (void *) ref); +- +- fprintf (file, " group %p ", (void *) ref->group); +- +- dump_mem_details (file, ref->group->base, ref->group->step, ref->delta, +- ref->write_p); ++ fprintf (file, "reference %u:%u (", ref->group->uid, ref->uid); ++ print_generic_expr (file, ref->mem, TDF_SLIM); ++ fprintf (file, ")\n"); + } + + /* Finds a group with BASE and STEP in GROUPS, or creates one if it does not +@@ -316,6 +313,9 @@ dump_mem_ref (FILE *file, struct mem_ref *ref) + static struct mem_ref_group * + find_or_create_group (struct mem_ref_group **groups, tree base, tree step) + { ++ /* Global count for setting struct mem_ref_group->uid. */ ++ static unsigned int last_mem_ref_group_uid = 0; ++ + struct mem_ref_group *group; + + for (; *groups; groups = &(*groups)->next) +@@ -335,6 +335,7 @@ find_or_create_group (struct mem_ref_group **groups, tree base, tree step) + group->base = base; + group->step = step; + group->refs = NULL; ++ group->uid = ++last_mem_ref_group_uid; + group->next = *groups; + *groups = group; + +@@ -348,11 +349,14 @@ static void + record_ref (struct mem_ref_group *group, gimple *stmt, tree mem, + HOST_WIDE_INT delta, bool write_p) + { ++ unsigned int last_mem_ref_uid = 0; + struct mem_ref **aref; + + /* Do not record the same address twice. */ + for (aref = &group->refs; *aref; aref = &(*aref)->next) + { ++ last_mem_ref_uid = (*aref)->uid; ++ + /* It does not have to be possible for write reference to reuse the read + prefetch, or vice versa. */ + if (!WRITE_CAN_USE_READ_PREFETCH +@@ -381,9 +385,16 @@ record_ref (struct mem_ref_group *group, gimple *stmt, tree mem, + (*aref)->next = NULL; + (*aref)->independent_p = false; + (*aref)->storent_p = false; ++ (*aref)->uid = last_mem_ref_uid + 1; + + if (dump_file && (dump_flags & TDF_DETAILS)) +- dump_mem_ref (dump_file, *aref); ++ { ++ dump_mem_ref (dump_file, *aref); ++ ++ fprintf (dump_file, " group %u ", group->uid); ++ dump_mem_details (dump_file, group->base, group->step, delta, ++ write_p); ++ } + } + + /* Release memory references in GROUPS. */ +@@ -938,7 +949,7 @@ prune_group_by_reuse (struct mem_ref_group *group) + + if (dump_file && (dump_flags & TDF_DETAILS)) + { +- fprintf (dump_file, "Reference %p:", (void *) ref_pruned); ++ dump_mem_ref (dump_file, ref_pruned); + + if (ref_pruned->prefetch_before == PREFETCH_ALL + && ref_pruned->prefetch_mod == 1) +@@ -986,8 +997,8 @@ should_issue_prefetch_p (struct mem_ref *ref) + if (ref->prefetch_before != PREFETCH_ALL) + { + if (dump_file && (dump_flags & TDF_DETAILS)) +- fprintf (dump_file, "Ignoring %p due to prefetch_before\n", +- (void *) ref); ++ fprintf (dump_file, "Ignoring reference %u:%u due to prefetch_before\n", ++ ref->group->uid, ref->uid); + return false; + } + +@@ -995,7 +1006,7 @@ should_issue_prefetch_p (struct mem_ref *ref) + if (ref->storent_p) + { + if (dump_file && (dump_flags & TDF_DETAILS)) +- fprintf (dump_file, "Ignoring nontemporal store %p\n", (void *) ref); ++ fprintf (dump_file, "Ignoring nontemporal store reference %u:%u\n", ref->group->uid, ref->uid); + return false; + } + +@@ -1058,7 +1069,14 @@ schedule_prefetches (struct mem_ref_group *groups, unsigned unroll_factor, + if (2 * remaining_prefetch_slots < prefetch_slots) + continue; + ++ /* Stop prefetching if debug counter is activated. */ ++ if (!dbg_cnt (prefetch)) ++ continue; ++ + ref->issue_prefetch_p = true; ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "Decided to issue prefetch for reference %u:%u\n", ++ ref->group->uid, ref->uid); + + if (remaining_prefetch_slots <= prefetch_slots) + return true; +@@ -1122,9 +1140,9 @@ issue_prefetch_ref (struct mem_ref *ref, unsigned unroll_factor, unsigned ahead) + bool nontemporal = ref->reuse_distance >= L2_CACHE_SIZE_BYTES; + + if (dump_file && (dump_flags & TDF_DETAILS)) +- fprintf (dump_file, "Issued%s prefetch for %p.\n", ++ fprintf (dump_file, "Issued%s prefetch for reference %u:%u.\n", + nontemporal ? " nontemporal" : "", +- (void *) ref); ++ ref->group->uid, ref->uid); + + bsi = gsi_for_stmt (ref->stmt); + +@@ -1144,8 +1162,8 @@ issue_prefetch_ref (struct mem_ref *ref, unsigned unroll_factor, unsigned ahead) + delta = (ahead + ap * ref->prefetch_mod) * + int_cst_value (ref->group->step); + addr = fold_build_pointer_plus_hwi (addr_base, delta); +- addr = force_gimple_operand_gsi (&bsi, unshare_expr (addr), true, NULL, +- true, GSI_SAME_STMT); ++ addr = force_gimple_operand_gsi (&bsi, unshare_expr (addr), true, ++ NULL, true, GSI_SAME_STMT); + } + else + { +@@ -1229,8 +1247,8 @@ mark_nontemporal_store (struct mem_ref *ref) + return false; + + if (dump_file && (dump_flags & TDF_DETAILS)) +- fprintf (dump_file, "Marked reference %p as a nontemporal store.\n", +- (void *) ref); ++ fprintf (dump_file, "Marked reference %u:%u as a nontemporal store.\n", ++ ref->group->uid, ref->uid); + + gimple_assign_set_nontemporal_move (ref->stmt, true); + ref->storent_p = true; +@@ -1340,7 +1358,7 @@ should_unroll_loop_p (struct loop *loop, struct tree_niter_desc *desc, + + /* Determine the coefficient by that unroll LOOP, from the information + contained in the list of memory references REFS. Description of +- umber of iterations of LOOP is stored to DESC. NINSNS is the number of ++ number of iterations of LOOP is stored to DESC. NINSNS is the number of + insns of the LOOP. EST_NITER is the estimated number of iterations of + the loop, or -1 if no estimate is available. */ + +@@ -1715,8 +1733,8 @@ determine_loop_nest_reuse (struct loop *loop, struct mem_ref_group *refs, + fprintf (dump_file, "Reuse distances:\n"); + for (gr = refs; gr; gr = gr->next) + for (ref = gr->refs; ref; ref = ref->next) +- fprintf (dump_file, " ref %p distance %u\n", +- (void *) ref, ref->reuse_distance); ++ fprintf (dump_file, " reference %u:%u distance %u\n", ++ ref->group->uid, ref->uid, ref->reuse_distance); + } + + return true; +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -231,6 +231,10 @@ case ${host} in + ;; + esac + ;; ++*-*-fuchsia*) ++ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia" ++ extra_parts="crtbegin.o crtend.o" ++ ;; + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) + tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux" + extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" +@@ -343,6 +347,10 @@ aarch64*-*-freebsd*) + 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-softfp t-softfp" ++ ;; + aarch64*-*-linux*) + extra_parts="$extra_parts crtfastmath.o" + md_unwind_header=aarch64/linux-unwind.h +@@ -395,6 +403,12 @@ arm*-*-freebsd*) # ARM FreeBSD EABI + unwind_header=config/arm/unwind-arm.h + tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" + ;; ++arm*-*-fuchsia*) ++ tmake_file="${tmake_file} arm/t-arm arm/t-elf arm/t-bpabi" ++ tmake_file="${tmake_file} arm/tsoftfp t-softfp" ++ tm_file="${tm_file} arm/bpabi-lib.h" ++ unwind_header=config/arm/unwind-arm.h ++ ;; + arm*-*-netbsdelf*) + tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover" + ;; +@@ -589,6 +603,9 @@ i[34567]86-*-elf*) + x86_64-*-elf* | x86_64-*-rtems*) + tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" + ;; ++x86_64-*-fuchsia*) ++ tmake_file="$tmake_file t-libgcc-pic" ++ ;; + i[34567]86-*-dragonfly*) + tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff" + md_unwind_header=i386/dragonfly-unwind.h +--- a/src/libgcc/config/arm/unwind-arm.h ++++ b/src/libgcc/config/arm/unwind-arm.h +@@ -49,7 +49,7 @@ extern "C" { + return 0; + + #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \ +- || defined(__FreeBSD__) ++ || defined(__FreeBSD__) || defined(__fuchsia__) + /* Pc-relative indirect. */ + #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect) + tmp += ptr; +--- /dev/null ++++ b/src/libgcc/config/t-slibgcc-fuchsia +@@ -0,0 +1,44 @@ ++# Copyright (C) 2017 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 ++# . ++ ++# Fuchsia-specific shared library overrides. ++ ++SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \ ++ $(LDFLAGS) ++# Copyright (C) 2017 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 ++# . ++ ++# Fuchsia-specific shared library overrides. ++ ++SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \ ++ $(LDFLAGS) +--- /dev/null ++++ b/src/libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h +@@ -0,0 +1,47 @@ ++// Optimizations for random number functions, aarch64 version -*- C++ -*- ++ ++// Copyright (C) 2017 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. ++ ++// 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 ++// . ++ ++/** @file bits/opt_random.h ++ * This is an internal header file, included by other library headers. ++ * Do not attempt to use it directly. @headername{random} ++ */ ++ ++#ifndef _BITS_OPT_RANDOM_H ++#define _BITS_OPT_RANDOM_H 1 ++ ++#pragma GCC system_header ++ ++ ++namespace std _GLIBCXX_VISIBILITY (default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ ++ ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace ++ ++ ++#endif // _BITS_OPT_RANDOM_H +--- /dev/null ++++ b/src/libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h +@@ -0,0 +1,180 @@ ++// Optimizations for random number extensions, aarch64 version -*- C++ -*- ++ ++// Copyright (C) 2017 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. ++ ++// 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 ++// . ++ ++/** @file ext/random.tcc ++ * This is an internal header file, included by other library headers. ++ * Do not attempt to use it directly. @headername{ext/random} ++ */ ++ ++#ifndef _EXT_OPT_RANDOM_H ++#define _EXT_OPT_RANDOM_H 1 ++ ++#pragma GCC system_header ++ ++#ifdef __ARM_NEON ++ ++#ifdef __AARCH64EB__ ++# define __VEXT(_A,_B,_C) __builtin_shuffle (_A, _B, (__Uint8x16_t) \ ++ {16-_C, 17-_C, 18-_C, 19-_C, 20-_C, 21-_C, 22-_C, 23-_C, \ ++ 24-_C, 25-_C, 26-_C, 27-_C, 28-_C, 29-_C, 30-_C, 31-_C}) ++#else ++# define __VEXT(_A,_B,_C) __builtin_shuffle (_B, _A, (__Uint8x16_t) \ ++ {_C, _C+1, _C+2, _C+3, _C+4, _C+5, _C+6, _C+7, \ ++ _C+8, _C+9, _C+10, _C+11, _C+12, _C+13, _C+14, _C+15}) ++#endif ++ ++namespace __gnu_cxx _GLIBCXX_VISIBILITY (default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ namespace { ++ // Logical Shift right 128-bits by c * 8 bits ++ ++ __extension__ extern __inline __Uint32x4_t ++ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++ __aarch64_lsr_128 (__Uint8x16_t __a, __const int __c) ++ { ++ const __Uint8x16_t __zero = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ ++ return (__Uint32x4_t) __VEXT (__zero, __a, __c); ++ } ++ ++ // Logical Shift left 128-bits by c * 8 bits ++ ++ __extension__ extern __inline __Uint32x4_t ++ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++ __aarch64_lsl_128 (__Uint8x16_t __a, __const int __c) ++ { ++ const __Uint8x16_t __zero = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ ++ return (__Uint32x4_t) __VEXT (__a, __zero, 16 - __c); ++ } ++ ++ template ++ inline __Uint32x4_t __aarch64_recursion (__Uint32x4_t __a, ++ __Uint32x4_t __b, ++ __Uint32x4_t __c, ++ __Uint32x4_t __d, ++ __Uint32x4_t __e) ++ { ++ __Uint32x4_t __y = (__b >> __sr1); ++ __Uint32x4_t __z = __aarch64_lsr_128 ((__Uint8x16_t) __c, __sr2); ++ ++ __Uint32x4_t __v = __d << __sl1; ++ ++ __z = __z ^ __a; ++ __z = __z ^ __v; ++ ++ __Uint32x4_t __x = __aarch64_lsl_128 ((__Uint8x16_t) __a, __sl2); ++ ++ __y = __y & __e; ++ __z = __z ^ __x; ++ return __z ^ __y; ++ } ++} ++ ++#define _GLIBCXX_OPT_HAVE_RANDOM_SFMT_GEN_READ 1 ++ template ++ void simd_fast_mersenne_twister_engine<_UIntType, __m, ++ __pos1, __sl1, __sl2, __sr1, __sr2, ++ __msk1, __msk2, __msk3, __msk4, ++ __parity1, __parity2, __parity3, ++ __parity4>:: ++ _M_gen_rand (void) ++ { ++ __Uint32x4_t __r1 = _M_state[_M_nstate - 2]; ++ __Uint32x4_t __r2 = _M_state[_M_nstate - 1]; ++ ++ __Uint32x4_t __aData = {__msk1, __msk2, __msk3, __msk4}; ++ ++ size_t __i; ++ for (__i = 0; __i < _M_nstate - __pos1; ++__i) ++ { ++ __Uint32x4_t __r = __aarch64_recursion<__sl1, __sl2, __sr1, __sr2> ++ (_M_state[__i], _M_state[__i + __pos1], __r1, __r2, __aData); ++ ++ _M_state[__i] = __r; ++ ++ __r1 = __r2; ++ __r2 = __r; ++ } ++ for (; __i < _M_nstate; ++__i) ++ { ++ __Uint32x4_t __r = __aarch64_recursion<__sl1, __sl2, __sr1, __sr2> ++ (_M_state[__i], _M_state[__i + __pos1 - _M_nstate], __r1, __r2, ++ __aData); ++ ++ _M_state[__i] = __r; ++ ++ __r1 = __r2; ++ __r2 = __r; ++ } ++ ++ _M_pos = 0; ++ } ++ ++ ++#define _GLIBCXX_OPT_HAVE_RANDOM_SFMT_OPERATOREQUAL 1 ++ template ++ bool ++ operator==(const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, ++ __m, __pos1, __sl1, __sl2, __sr1, __sr2, ++ __msk1, __msk2, __msk3, __msk4, ++ __parity1, __parity2, __parity3, __parity4>& __lhs, ++ const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, ++ __m, __pos1, __sl1, __sl2, __sr1, __sr2, ++ __msk1, __msk2, __msk3, __msk4, ++ __parity1, __parity2, __parity3, __parity4>& __rhs) ++ { ++ if (__lhs._M_pos != __rhs._M_pos) ++ return false; ++ ++ __Uint32x4_t __res = __lhs._M_state[0] ^ __rhs._M_state[0]; ++ ++ for (size_t __i = 1; __i < __lhs._M_nstate; ++__i) ++ __res |= __lhs._M_state[__i] ^ __rhs._M_state[__i]; ++ ++ return (__int128) __res == 0; ++ } ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++ } // namespace ++ ++#endif // __ARM_NEON ++ ++#endif // _EXT_OPT_RANDOM_H +--- a/src/libstdc++-v3/include/ext/random ++++ b/src/libstdc++-v3/include/ext/random +@@ -183,6 +183,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + { + #ifdef __SSE2__ + __m128i _M_state[_M_nstate]; ++#endif ++#ifdef __ARM_NEON ++#ifdef __aarch64__ ++ __Uint32x4_t _M_state[_M_nstate]; ++#endif + #endif + uint32_t _M_state32[_M_nstate32]; + result_type _M_stateT[state_size]; --- gcc-7-7.3.0.orig/debian/patches/gcc-multiarch.diff +++ gcc-7-7.3.0/debian/patches/gcc-multiarch.diff @@ -0,0 +1,265 @@ +# 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. + +Index: b/src/gcc/config/sh/t-linux +=================================================================== +--- 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 +Index: b/src/gcc/config/sparc/t-linux64 +=================================================================== +--- 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) +Index: b/src/gcc/config/s390/t-linux64 +=================================================================== +--- 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) +Index: b/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- 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) +Index: b/src/gcc/config/i386/t-linux64 +=================================================================== +--- 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 +Index: b/src/gcc/config/i386/t-kfreebsd +=================================================================== +--- 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)) +Index: b/src/gcc/config/mips/t-linux64 +=================================================================== +--- 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 +Index: b/src/gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -2113,6 +2113,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 +@@ -2123,6 +2128,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" +@@ -3111,6 +3120,16 @@ powerpc*-*-* | rs6000-*-*) + tm_file="${tm_file} rs6000/option-defaults.h" + 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-*) +@@ -4558,7 +4577,7 @@ case ${target} in + i[34567]86-*-darwin* | x86_64-*-darwin*) + ;; + i[34567]86-*-linux* | x86_64-*-linux*) +- tmake_file="$tmake_file i386/t-linux" ++ tmake_file="i386/t-linux $tmake_file" + ;; + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) + tmake_file="$tmake_file i386/t-kfreebsd" +Index: b/src/gcc/config/aarch64/t-aarch64-linux +=================================================================== +--- 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) +-MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)_ilp32-linux-gnu) + +-MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32 ++MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) +Index: b/src/gcc/config/mips/mips.h +=================================================================== +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h +@@ -3499,16 +3499,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. */ +Index: b/src/gcc/config/tilegx/t-tilegx +=================================================================== +--- 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 + +Index: b/src/gcc/config/riscv/t-linux +=================================================================== +--- 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) +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -521,7 +521,7 @@ SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER + STMP_FIXINC = @STMP_FIXINC@ + + # Test to see whether exists in the system header files. +-LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ] ++LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h -o -f $(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. +Index: b/src/gcc/config/t-musl +=================================================================== +--- /dev/null ++++ b/src/gcc/config/t-musl +@@ -0,0 +1,2 @@ ++MULTIARCH_DIRNAME := $(subst -linux-gnu,-linux-musl,$(MULTIARCH_DIRNAME)) ++MULTILIB_OSDIRNAMES := $(subst -linux-gnu,-linux-musl,$(MULTILIB_OSDIRNAMES)) +Index: b/src/gcc/config/t-uclibc +=================================================================== +--- /dev/null ++++ b/src/gcc/config/t-uclibc +@@ -0,0 +1,2 @@ ++MULTIARCH_DIRNAME := $(subst -linux-gnu,-linux-uclibc,$(MULTIARCH_DIRNAME)) ++MULTILIB_OSDIRNAMES := $(subst -linux-gnu,-linux-uclibc,$(MULTILIB_OSDIRNAMES)) --- gcc-7-7.3.0.orig/debian/patches/gcc-multilib-multiarch.diff +++ gcc-7-7.3.0/debian/patches/gcc-multilib-multiarch.diff @@ -0,0 +1,126 @@ +# DP: Don't auto-detect multilib osdirnames. + +Index: b/src/gcc/config/sparc/t-linux64 +=================================================================== +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -25,7 +25,12 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring sparc64,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +Index: b/src/gcc/config/s390/t-linux64 +=================================================================== +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -7,7 +7,12 @@ + + MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring s390x,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +Index: b/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -28,8 +28,13 @@ + MULTILIB_OPTIONS := m64/m32 + MULTILIB_DIRNAMES := 64 32 + MULTILIB_EXTRA_OPTS := ++ifneq (,$(findstring powerpc64,$(target))) ++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu) ++else + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) +-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) + +Index: b/src/gcc/config/i386/t-linux64 +=================================================================== +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +Index: b/src/gcc/config/mips/t-linux64 +=================================================================== +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -23,10 +23,23 @@ MIPS_32 = $(if $(findstring r6, $(firstw + MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) + MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) + MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) ++ ++ifneq (,$(findstring gnuabi64,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ifneq (,$(findstring gnuabin32,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else + MULTILIB_OSDIRNAMES = \ +- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++endif + + ifneq (,$(findstring abin32,$(target))) + MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) +Index: b/src/gcc/config/rs6000/t-linux +=================================================================== +--- a/src/gcc/config/rs6000/t-linux ++++ b/src/gcc/config/rs6000/t-linux +@@ -2,7 +2,7 @@ + # or soft-float. + ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) + ifneq (,$(findstring powerpc64,$(target))) +-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu) + else + ifneq (,$(findstring spe,$(target))) + MULTIARCH_DIRNAME := powerpc-linux-gnuspe$(if $(findstring 8548,$(with_cpu)),,v1) --- gcc-7-7.3.0.orig/debian/patches/gcc-search-prefixed-as-ld.diff +++ gcc-7-7.3.0/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 +@@ -2534,6 +2534,7 @@ + { + len = paths->max_len + extra_space + 1; + len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len); ++ len += multiarch_len + 2; /* triplet prefix for as, ld. */ + path = XNEWVEC (char, len); + } + +@@ -2747,6 +2748,24 @@ + struct file_at_path_info *info = (struct file_at_path_info *) data; + size_t len = strlen (path); + ++ /* search for the -as / -ld first. */ ++ if (! strcmp (info->name, "as") || ! strcmp (info->name, "ld")) ++ { ++ struct file_at_path_info prefix_info = *info; ++ char *prefixed_name = XNEWVEC (char, info->name_len + 2 ++ + strlen (DEFAULT_REAL_TARGET_MACHINE)); ++ strcpy (prefixed_name, DEFAULT_REAL_TARGET_MACHINE); ++ strcat (prefixed_name, "-"); ++ strcat (prefixed_name, info->name); ++ prefix_info.name = (const char *) prefixed_name; ++ prefix_info.name_len = strlen (prefixed_name); ++ if (file_at_path (path, &prefix_info)) ++ { ++ XDELETEVEC (prefixed_name); ++ return path; ++ } ++ XDELETEVEC (prefixed_name); ++ } + memcpy (path + len, info->name, info->name_len); + len += info->name_len; + --- gcc-7-7.3.0.orig/debian/patches/gcc-target-include-asm.diff +++ gcc-7-7.3.0/debian/patches/gcc-target-include-asm.diff @@ -0,0 +1,15 @@ +# DP: Search $(builddir)/sys-include for the asm header files + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3156,7 +3156,7 @@ fi + # being built; programs in there won't even run. + if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then + # Search for pre-installed headers if nothing else fits. +- FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include' ++ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -isystem $(CURDIR)/sys-include' + fi + + if test "x${use_gnu_ld}" = x && --- gcc-7-7.3.0.orig/debian/patches/gcc-textdomain.diff +++ gcc-7-7.3.0/debian/patches/gcc-textdomain.diff @@ -0,0 +1,96 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +Index: b/src/gcc/intl.c +=================================================================== +--- a/src/gcc/intl.c ++++ b/src/gcc/intl.c +@@ -55,8 +55,8 @@ gcc_init_libintl (void) + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-7", LOCALEDIR); ++ (void) textdomain ("gcc-7"); + + /* Opening quotation mark. */ + open_quote = _("`"); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4117,8 +4117,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-7.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-7.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +Index: b/src/libcpp/init.c +=================================================================== +--- a/src/libcpp/init.c ++++ b/src/libcpp/init.c +@@ -155,7 +155,7 @@ init_library (void) + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } +Index: b/src/libcpp/system.h +=================================================================== +--- a/src/libcpp/system.h ++++ b/src/libcpp/system.h +@@ -280,7 +280,7 @@ extern int errno; + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +Index: b/src/libcpp/Makefile.in +=================================================================== +--- a/src/libcpp/Makefile.in ++++ b/src/libcpp/Makefile.in +@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -7 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -72,10 +73,12 @@ depcomp = $(SHELL) $(srcdir)/../depcomp + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + +-ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) ++ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) \ ++ $(DEBCPPFLAGS) + ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \ +- $(CPPFLAGS) $(PICFLAG) ++ $(CPPFLAGS) $(PICFLAG) $(DEBCPPFLAGS) + + # The name of the compiler to use. + COMPILER = $(CXX) +@@ -164,8 +167,8 @@ install-strip install: all installdirs + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ + done + + mostlyclean: --- gcc-7-7.3.0.orig/debian/patches/gdc-7-doc.diff +++ gcc-7-7.3.0/debian/patches/gdc-7-doc.diff @@ -0,0 +1,106 @@ +# DP: This implements D language support in the GCC back end, and adds +# DP: relevant documentation about the GDC front end (documentation part). + +Index: b/src/gcc/doc/frontends.texi +=================================================================== +--- 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, Go, D, and BRIG (HSAIL). + + The abbreviation @dfn{GCC} has multiple meanings in common use. The + current official meaning is ``GNU Compiler Collection'', which refers +Index: b/src/gcc/doc/install.texi +=================================================================== +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -1622,12 +1622,12 @@ their runtime libraries should be built. + grep ^language= */config-lang.in + @end smallexample + Currently, you can use any of the following: +-@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran}, ++@code{all}, @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{all}, then all + 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. + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -1354,6 +1354,15 @@ called @dfn{specs}. + Ada source code file containing a library unit body (a subprogram or + package body). Such files are also called @dfn{bodies}. + ++@item @var{file}.d ++D source code file. ++ ++@item @var{file}.di ++D interface code file. ++ ++@item @var{file}.dd ++D documentation code file. ++ + @c GCC also knows about some suffixes for languages not yet included: + @c Pascal: + @c @var{file}.p +@@ -1389,6 +1398,7 @@ objective-c objective-c-header objecti + 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 +Index: b/src/gcc/doc/sourcebuild.texi +=================================================================== +--- a/src/gcc/doc/sourcebuild.texi ++++ b/src/gcc/doc/sourcebuild.texi +@@ -106,6 +106,9 @@ The Objective-C and Objective-C++ runtim + @item libquadmath + The runtime support library for quad-precision math operations. + ++@item libphobos ++The D standard runtime library. ++ + @item libssp + The Stack protector runtime library. + +Index: b/src/gcc/doc/standards.texi +=================================================================== +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -309,6 +309,16 @@ capability is typically utilized to impl + finalization extension for a gcc supported processor. HSA standards are + freely available at @uref{http://www.hsafoundation.com/standards/}. + ++@section D language ++ ++The D language is under development as of this writing; see the ++@uref{http://dlang.org/@/language-reference.html, current language ++reference}. At present the current major version of D is 2.0, and ++there is no way to describe the language supported by GCC in terms of ++a specific minor version. In general GCC follows the D frontend ++releases closely, and any given GCC release will support the current ++language as of the date that the release was frozen. ++ + @section References for Other Languages + + @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm, --- gcc-7-7.3.0.orig/debian/patches/gdc-7.diff +++ gcc-7-7.3.0/debian/patches/gdc-7.diff @@ -0,0 +1,139 @@ +# DP: This implements D language support in the GCC back end, and adds +# DP: relevant documentation about the GDC front end (code part). + +Index: b/src/gcc/config/darwin.h +=================================================================== +--- a/src/gcc/config/darwin.h ++++ b/src/gcc/config/darwin.h +@@ -49,6 +49,10 @@ see the files COPYING3 and COPYING.RUNTI + /* Suppress g++ attempt to link in the math library automatically. */ + #define MATH_LIBRARY "" + ++/* Suppress gdc attempt to link in the thread and time library automatically. */ ++#define THREAD_LIBRARY "" ++#define TIME_LIBRARY "" ++ + /* We have atexit. */ + + #define HAVE_ATEXIT +Index: b/src/gcc/config/i386/cygming.h +=================================================================== +--- a/src/gcc/config/i386/cygming.h ++++ b/src/gcc/config/i386/cygming.h +@@ -181,6 +181,10 @@ along with GCC; see the file COPYING3. + + #undef MATH_LIBRARY + #define MATH_LIBRARY "" ++#undef THREAD_LIBRARY ++#define THREAD_LIBRARY "" ++#undef TIME_LIBRARY ++#define TIME_LIBRARY "" + + #undef TARGET_LIBC_HAS_FUNCTION + #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function +Index: b/src/gcc/config/linux-android.h +=================================================================== +--- a/src/gcc/config/linux-android.h ++++ b/src/gcc/config/linux-android.h +@@ -57,3 +57,9 @@ + + #define ANDROID_ENDFILE_SPEC \ + "%{shared: crtend_so%O%s;: crtend_android%O%s}" ++ ++/* Suppress gdc attempt to link in the thread and time library automatically. */ ++#if ANDROID_DEFAULT ++# define THREAD_LIBRARY "" ++# define TIME_LIBRARY "" ++#endif +Index: b/src/gcc/config/rs6000/rs6000.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.c ++++ b/src/gcc/config/rs6000/rs6000.c +@@ -31629,7 +31629,8 @@ rs6000_output_function_epilogue (FILE *f + if (lang_GNU_C () + || ! strcmp (language_string, "GNU GIMPLE") + || ! strcmp (language_string, "GNU Go") +- || ! strcmp (language_string, "libgccjit")) ++ || ! strcmp (language_string, "libgccjit") ++ || ! strcmp (language_string, "GNU D")) + i = 0; + else if (! strcmp (language_string, "GNU F77") + || lang_GNU_Fortran ()) +Index: b/src/gcc/dwarf2out.c +=================================================================== +--- a/src/gcc/dwarf2out.c ++++ b/src/gcc/dwarf2out.c +@@ -5083,6 +5083,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. */ + +@@ -23607,6 +23617,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) +@@ -25191,7 +25203,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); +@@ -25214,7 +25226,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. */ +@@ -25281,7 +25293,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. */ +@@ -25834,7 +25846,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)); +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -1307,6 +1307,7 @@ static const struct compiler default_com + {".java", "#Java", 0, 0, 0}, {".class", "#Java", 0, 0, 0}, + {".zip", "#Java", 0, 0, 0}, {".jar", "#Java", 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", --- gcc-7-7.3.0.orig/debian/patches/gdc-cross-biarch.diff +++ gcc-7-7.3.0/debian/patches/gdc-cross-biarch.diff @@ -0,0 +1,13 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -891,6 +915,8 @@ + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) --- gcc-7-7.3.0.orig/debian/patches/gdc-cross-install-location.diff +++ gcc-7-7.3.0/debian/patches/gdc-cross-install-location.diff @@ -0,0 +1,28 @@ +Index: b/src/libphobos/configure.ac +=================================================================== +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -118,6 +118,8 @@ + AC_SUBST([DRUNTIME_SOVERSION]) + AC_SUBST([PHOBOS_SOVERSION]) + ++# trigger rebuild of the configure file ++ + # Set default flags (after DRUNTIME_WERROR!) + if test -z "$DFLAGS"; then + DFLAGS="-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 +@@ -78,7 +78,7 @@ AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES], + AC_SUBST(toolexeclibdir) + + # Default case for install directory for D sources files. +- gdc_include_dir='${libdir}/gcc/${target_alias}'/${d_gcc_ver}/include/d ++ gdc_include_dir='${libdir}/gcc-cross/${target_alias}'/${d_gcc_ver}/include/d + AC_SUBST(gdc_include_dir) + ]) + +--- gcc/src/libphobos/configure.ac~ 2017-05-03 13:31:07.175437754 +0200 ++++ gcc/src/libphobos/configure.ac 2017-05-03 13:33:19.905663189 +0200 --- gcc-7-7.3.0.orig/debian/patches/gdc-driver-nophobos.diff +++ gcc-7-7.3.0/debian/patches/gdc-driver-nophobos.diff @@ -0,0 +1,28 @@ +# DP: Modify gdc driver to have no libphobos by default. + +Index: b/src/gcc/d/d-lang.cc +=================================================================== +--- a/src/gcc/d/d-lang.cc ++++ b/src/gcc/d/d-lang.cc +@@ -198,7 +198,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 +@@ -62,7 +62,7 @@ static int library = 0; + + /* If true, use the standard D runtime library when linking with + standard libraries. */ +-static bool need_phobos = true; ++static bool need_phobos = false; + + void + lang_specific_driver (cl_decoded_option **in_decoded_options, --- gcc-7-7.3.0.orig/debian/patches/gdc-frontend-posix.diff +++ gcc-7-7.3.0/debian/patches/gdc-frontend-posix.diff @@ -0,0 +1,15 @@ +# DP: Fix build of the D frontend on the Hurd and KFreeBSD. + +Index: b/src/gcc/d/dfrontend/object.h +=================================================================== +--- a/src/gcc/d/dfrontend/object.h ++++ b/src/gcc/d/dfrontend/object.h +@@ -10,7 +10,7 @@ + #ifndef OBJECT_H + #define OBJECT_H + +-#define POSIX (__linux__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) ++#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) + + #if __DMC__ + #pragma once --- gcc-7-7.3.0.orig/debian/patches/gdc-libphobos-build.diff +++ gcc-7-7.3.0/debian/patches/gdc-libphobos-build.diff @@ -0,0 +1,950 @@ +# DP: This implements building of libphobos library in GCC. + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. + +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -167,6 +167,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; +@@ -312,6 +313,7 @@ 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= LD_FOR_TARGET ; }; + flags_to_pass = { flag= LIPO_FOR_TARGET ; }; + flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; }; +@@ -585,6 +587,8 @@ 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-zlib; }; ++dependencies = { module=all-target-libphobos; on=all-target-zlib; }; + 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; }; +@@ -639,6 +643,8 @@ languages = { language=go; gcc-check-tar + lib-check-target=check-target-libgo; }; + languages = { language=brig; gcc-check-target=check-brig; + lib-check-target=check-target-libhsail-rt; }; ++languages = { language=d; gcc-check-target=check-d; ++ lib-check-target=check-target-libphobos; }; + + // Toplevel bootstrap + bootstrap_stage = { id=1 ; }; +Index: b/src/Makefile.tpl +=================================================================== +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -159,6 +159,7 @@ 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; \ + DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ + LD="$(LD_FOR_BUILD)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ +@@ -195,6 +196,7 @@ HOST_EXPORTS = \ + CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ ++ GDC="$(GDC)"; export GDC; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -281,6 +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; \ +@@ -345,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@ +@@ -484,6 +488,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@ + +@@ -609,6 +614,7 @@ EXTRA_HOST_FLAGS = \ + 'DLLTOOL=$(DLLTOOL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GDC=$(GDC)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -665,6 +671,7 @@ 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)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -512,6 +512,7 @@ multi-do: + prefix="$(prefix)" \ + exec_prefix="$(exec_prefix)" \ + GOCFLAGS="$(GOCFLAGS) $${flags}" \ ++ GDCFLAGS="$(GDCFLAGS) $${flags}" \ + CXXFLAGS="$(CXXFLAGS) $${flags}" \ + LIBCFLAGS="$(LIBCFLAGS) $${flags}" \ + LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \ +@@ -746,6 +747,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + 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 +755,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 +820,18 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + esac + done + ++ GDC_= ++ for arg in ${GDC}; do ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ "${ML_POPDIR}"/*) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ *) ++ GDC_="${GDC_}${arg} " ;; ++ esac ++ done ++ + if test "x${LD_LIBRARY_PATH+set}" = xset; then + LD_LIBRARY_PATH_= + for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do +Index: b/src/config/multi.m4 +=================================================================== +--- a/src/config/multi.m4 ++++ b/src/config/multi.m4 +@@ -64,4 +64,5 @@ multi_basedir="$multi_basedir" + CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + CC="$CC" + CXX="$CXX" +-GFORTRAN="$GFORTRAN"])])dnl ++GFORTRAN="$GFORTRAN" ++GDC="$GDC"])])dnl +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -173,7 +173,9 @@ target_libraries="target-libgcc \ + target-libada-sjlj \ + ${target_libiberty} \ + target-libgnatvsn \ +- target-libgo" ++ target-libgo \ ++ target-zlib \ ++ target-libphobos" + + # these tools are built using the target libraries, and are intended to + # run only in the target environment +@@ -1283,6 +1285,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} +@@ -1296,6 +1299,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)" +@@ -3225,6 +3229,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) +@@ -3334,6 +3339,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) +@@ -3367,6 +3373,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]) +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -156,6 +156,7 @@ 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; \ + DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ + LD="$(LD_FOR_BUILD)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ +@@ -192,6 +193,7 @@ HOST_EXPORTS = \ + CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ ++ GDC="$(GDC)"; export GDC; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -278,6 +280,7 @@ BASE_TARGET_EXPORTS = \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ ++ GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ + DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ + LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ +@@ -342,6 +345,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@ +@@ -551,6 +555,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@ + +@@ -774,6 +779,7 @@ 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)" \ + "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ + "LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \ + "LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \ +@@ -833,6 +839,7 @@ EXTRA_HOST_FLAGS = \ + 'DLLTOOL=$(DLLTOOL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GDC=$(GDC)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -889,6 +896,7 @@ 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)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +@@ -992,6 +1000,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 \ +@@ -1158,6 +1167,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 +@@ -1251,6 +1261,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 +@@ -1337,6 +1348,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 +@@ -1423,6 +1435,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 +@@ -1509,6 +1522,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 +@@ -1595,6 +1609,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 +@@ -1681,6 +1696,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 +@@ -1767,6 +1783,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 +@@ -1853,6 +1870,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 +@@ -1939,6 +1957,7 @@ installcheck-target: maybe-installcheck- + installcheck-target: maybe-installcheck-target-libobjc + installcheck-target: maybe-installcheck-target-libgo + installcheck-target: maybe-installcheck-target-libhsail-rt ++installcheck-target: maybe-installcheck-target-libphobos + installcheck-target: maybe-installcheck-target-libtermcap + installcheck-target: maybe-installcheck-target-winsup + installcheck-target: maybe-installcheck-target-libgloss +@@ -2025,6 +2044,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 +@@ -2111,6 +2131,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 +2218,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 +@@ -2283,6 +2305,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 +@@ -2425,6 +2448,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 \ +@@ -2607,6 +2631,7 @@ install-target: \ + maybe-install-target-libobjc \ + maybe-install-target-libgo \ + maybe-install-target-libhsail-rt \ ++ maybe-install-target-libphobos \ + maybe-install-target-libtermcap \ + maybe-install-target-winsup \ + maybe-install-target-libgloss \ +@@ -2713,6 +2738,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 \ +@@ -46570,6 +46596,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 +@@ -51864,6 +52348,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. +@@ -54742,6 +55234,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 +@@ -54777,6 +55270,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 +@@ -55803,6 +56297,8 @@ 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-zlib ++all-target-libphobos: maybe-all-target-zlib + configure-target-libstdc++-v3: maybe-configure-target-libgomp + + configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp +@@ -55930,6 +56426,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 +@@ -55973,6 +56470,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 --- gcc-7-7.3.0.orig/debian/patches/gdc-multiarch.diff +++ gcc-7-7.3.0/debian/patches/gdc-multiarch.diff @@ -0,0 +1,17 @@ +# DP: Set the D target include directory to a multiarch location. + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -61,7 +61,11 @@ + $(D_DMD_H) + + +-gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++ifneq (,$(MULTIARCH_DIRNAME)) ++ gcc_d_target_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/d/$(version) ++else ++ gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++endif + + # Name of phobos library + D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos2\" --- gcc-7-7.3.0.orig/debian/patches/gdc-profiledbuild.diff +++ gcc-7-7.3.0/debian/patches/gdc-profiledbuild.diff @@ -0,0 +1,21 @@ +# DP: Don't build gdc build tools idgen and impcnvgen with profiling flags + +Index: b/src/gcc/d/Make-lang.in +=================================================================== +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -256,6 +256,14 @@ d/idgen: d/idgen.dmdgen.o + d/impcvgen: d/impcnvgen.dmdgen.o + +$(LINKER_FOR_BUILD) $(BUILD_LINKER_FLAGS) $(BUILD_LDFLAGS) -o $@ $^ + ++d/idgen.dmdgen.o: d/dfrontend/idgen.c ++ $(filter-out -fprofile-%,$(DMD_COMPILE)) $(D_INCLUDES) $< ++ $(POSTCOMPILE) ++ ++d/impcnvgen.dmdgen.o: $(srcdir)/d/dfrontend/impcnvgen.c ++ $(filter-out -fprofile-%,$(DMDGEN_COMPILE)) $(D_INCLUDES) $< ++ $(POSTCOMPILE) ++ + # Generated sources. + d/id.c: d/idgen + cd d && ./idgen --- gcc-7-7.3.0.orig/debian/patches/gdc-sparc-fix.diff +++ gcc-7-7.3.0/debian/patches/gdc-sparc-fix.diff @@ -0,0 +1,12 @@ +# DP: Fix gdc build on sparc. + +--- a/src/gcc/d/d-target.cc ++++ b/src/gcc/d/d-target.cc +@@ -18,6 +18,7 @@ + #include "config.h" + #include "system.h" + #include "coretypes.h" ++#include "memmodel.h" + + #include "dfrontend/aggregate.h" + #include "dfrontend/module.h" --- gcc-7-7.3.0.orig/debian/patches/gdc-texinfo.diff +++ gcc-7-7.3.0/debian/patches/gdc-texinfo.diff @@ -0,0 +1,55 @@ +# DP: Add macros for the gdc texinfo documentation. + +Index: b/src/gcc/d/gdc.texi +=================================================================== +--- a/src/gcc/d/gdc.texi ++++ b/src/gcc/d/gdc.texi +@@ -57,6 +57,22 @@ man page gfdl(7). + @insertcopying + @end ifinfo + ++@macro versionsubtitle ++@ifclear DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} ++@end ifclear ++@ifset DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} (pre-release) ++@end ifset ++@ifset VERSION_PACKAGE ++@sp 1 ++@subtitle @value{VERSION_PACKAGE} ++@end ifset ++@c Even if there are no authors, the second titlepage line should be ++@c forced to the bottom of the page. ++@vskip 0pt plus 1filll ++@end macro ++ + @titlepage + @title The GNU D Compiler + @versionsubtitle +@@ -139,6 +155,25 @@ the options specific to @command{gdc}. + * Environment Variables:: Environment variables that affect @command{gdc}. + @end menu + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @c man begin OPTIONS + + @node Input and Output files --- gcc-7-7.3.0.orig/debian/patches/gdc-updates.diff +++ gcc-7-7.3.0/debian/patches/gdc-updates.diff @@ -0,0 +1,30 @@ +# DP: gdc updates up to 20160115. + + * Make-lang.in (d-warn): Filter out -Wmissing-format-attribute. + +Index: b/src/gcc/d/Make-lang.in +=================================================================== +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -46,7 +46,7 @@ gdc-cross$(exeext): gdc$(exeext) + cp gdc$(exeext) gdc-cross$(exeext) + + # Filter out pedantic and virtual overload warnings. +-d-warn = $(filter-out -pedantic -Woverloaded-virtual, $(STRICT_WARN)) ++d-warn = $(filter-out -pedantic -Woverloaded-virtual -Wmissing-format-attribute, $(STRICT_WARN)) + + # D Frontend has slightly relaxed warnings compared to rest of GDC. + DMD_WARN_CXXFLAGS = -Wno-deprecated -Wstrict-aliasing -Wuninitialized +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 +@@ -437,7 +437,7 @@ real logGamma(real x) + if ( p == q ) + return real.infinity; + int intpart = cast(int)(p); +- real sgngam = 1; ++ real sgngam = 1.0L; + if ( (intpart & 1) == 0 ) + sgngam = -1; + z = q - p; --- gcc-7-7.3.0.orig/debian/patches/gdc-versym-cpu.diff +++ gcc-7-7.3.0/debian/patches/gdc-versym-cpu.diff @@ -0,0 +1,379 @@ +# DP: Implements D CPU version conditions. + +This implements the following versions: +* D_HardFloat +* D_SoftFloat + +for all supported architectures. And these where appropriate: +* ARM +** ARM_Thumb +** ARM_HardFloat +** ARM_SoftFloat +** ARM_SoftFP +* AArch64 +* Alpha +** Alpha_SoftFloat +** Alpha_HardFloat +* X86 +* X86_64 +** D_X32 +* IA64 +* MIPS32 +* MIPS64 +** MIPS_O32 +** MIPS_O64 +** MIPS_N32 +** MIPS_N64 +** MIPS_EABI +** MIPS_HardFloat +** MIPS_SoftFloat +* HPPA +* HPPA64 +* PPC +* PPC64 +** PPC_HardFloat +** PPC_SoftFloat +* S390 +* S390X +* SH +* SH64 +* SPARC +* SPARC64 +* SPARC_V8Plus +** SPARC_HardFloat +** SPARC_SoftFloat + +Index: b/src/gcc/config/aarch64/aarch64.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h +@@ -26,6 +26,14 @@ + #define TARGET_CPU_CPP_BUILTINS() \ + aarch64_cpu_cpp_builtins (pfile) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("AArch64"); \ ++ builtin_define ("D_HardFloat"); \ ++ } while (0) ++ + + + #define REGISTER_TARGET_PRAGMAS() aarch64_register_pragmas () +Index: b/src/gcc/config/alpha/alpha.h +=================================================================== +--- a/src/gcc/config/alpha/alpha.h ++++ b/src/gcc/config/alpha/alpha.h +@@ -72,6 +72,23 @@ along with GCC; see the file COPYING3. + SUBTARGET_LANGUAGE_CPP_BUILTINS(); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("Alpha"); \ ++ if (TARGET_SOFT_FP) \ ++ { \ ++ builtin_define ("D_SoftFloat"); \ ++ builtin_define ("Alpha_SoftFloat"); \ ++ } \ ++ else \ ++ { \ ++ builtin_define ("D_HardFloat"); \ ++ builtin_define ("Alpha_HardFloat"); \ ++ } \ ++} while (0) ++ + #ifndef SUBTARGET_LANGUAGE_CPP_BUILTINS + #define SUBTARGET_LANGUAGE_CPP_BUILTINS() \ + do \ +Index: b/src/gcc/config/arm/arm.h +=================================================================== +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h +@@ -47,6 +47,31 @@ extern char arm_arch_name[]; + /* Target CPU builtins. */ + #define TARGET_CPU_CPP_BUILTINS() arm_cpu_cpp_builtins (pfile) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("ARM"); \ ++ \ ++ if (TARGET_THUMB || TARGET_THUMB2) \ ++ builtin_define ("ARM_Thumb"); \ ++ \ ++ if (TARGET_HARD_FLOAT_ABI) \ ++ builtin_define ("ARM_HardFloat"); \ ++ else \ ++ { \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("ARM_SoftFloat"); \ ++ else if(TARGET_HARD_FLOAT) \ ++ builtin_define ("ARM_SoftFP"); \ ++ } \ ++ \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("D_SoftFloat"); \ ++ else if(TARGET_HARD_FLOAT) \ ++ builtin_define ("D_HardFloat"); \ ++ } while (0) ++ + #include "config/arm/arm-opts.h" + + /* The processor for which instructions should be scheduled. */ +Index: b/src/gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h +@@ -671,6 +671,24 @@ extern const char *host_detect_local_cpu + /* Target CPU builtins. */ + #define TARGET_CPU_CPP_BUILTINS() ix86_target_macros () + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do { \ ++ if (TARGET_64BIT) \ ++ { \ ++ builtin_define("X86_64"); \ ++ if (TARGET_X32) \ ++ builtin_define("D_X32"); \ ++ } \ ++ else \ ++ builtin_define("X86"); \ ++ \ ++ if (TARGET_80387) \ ++ builtin_define("D_HardFloat"); \ ++ else \ ++ builtin_define("D_SoftFloat"); \ ++ } while (0) ++ + /* Target Pragmas. */ + #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas () + +Index: b/src/gcc/config/ia64/ia64.h +=================================================================== +--- a/src/gcc/config/ia64/ia64.h ++++ b/src/gcc/config/ia64/ia64.h +@@ -40,6 +40,13 @@ do { \ + builtin_define("__BIG_ENDIAN__"); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++do { \ ++ builtin_define ("IA64"); \ ++ builtin_define ("D_HardFloat"); \ ++} while (0) ++ + #ifndef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS + #endif +Index: b/src/gcc/config/mips/mips.h +=================================================================== +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h +@@ -644,6 +644,54 @@ struct mips_cpu_info { + } \ + while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define("MIPS64"); \ ++ else \ ++ builtin_define("MIPS32"); \ ++ \ ++ switch (mips_abi) \ ++ { \ ++ case ABI_32: \ ++ builtin_define("MIPS_O32"); \ ++ break; \ ++ \ ++ case ABI_O64: \ ++ builtin_define("MIPS_O64"); \ ++ break; \ ++ \ ++ case ABI_N32: \ ++ builtin_define("MIPS_N32"); \ ++ break; \ ++ \ ++ case ABI_64: \ ++ builtin_define("MIPS_N64"); \ ++ break; \ ++ \ ++ case ABI_EABI: \ ++ builtin_define("MIPS_EABI"); \ ++ break; \ ++ \ ++ default: \ ++ gcc_unreachable(); \ ++ } \ ++ \ ++ if (TARGET_HARD_FLOAT_ABI) \ ++ { \ ++ builtin_define("MIPS_HardFloat"); \ ++ builtin_define("D_HardFloat"); \ ++ } \ ++ else if (TARGET_SOFT_FLOAT_ABI) \ ++ { \ ++ builtin_define("MIPS_SoftFloat"); \ ++ builtin_define("D_SoftFloat"); \ ++ } \ ++ } \ ++ while (0) ++ + /* Default target_flags if no switches are specified */ + + #ifndef TARGET_DEFAULT +Index: b/src/gcc/config/pa/pa.h +=================================================================== +--- a/src/gcc/config/pa/pa.h ++++ b/src/gcc/config/pa/pa.h +@@ -179,6 +179,20 @@ do { \ + builtin_define("_PA_RISC1_0"); \ + } while (0) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++do { \ ++ if(TARGET_64BIT) \ ++ builtin_define("HPPA64"); \ ++ else \ ++ builtin_define("HPPA"); \ ++ \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("D_SoftFloat"); \ ++ else \ ++ builtin_define ("D_HardFloat"); \ ++} while (0) ++ + /* An old set of OS defines for various BSD-like systems. */ + #define TARGET_OS_CPP_BUILTINS() \ + do \ +Index: b/src/gcc/config/rs6000/rs6000.h +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.h ++++ b/src/gcc/config/rs6000/rs6000.h +@@ -822,6 +822,28 @@ extern unsigned char rs6000_recip_bits[] + #define TARGET_CPU_CPP_BUILTINS() \ + rs6000_cpu_cpp_builtins (pfile) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define ("PPC64"); \ ++ else \ ++ builtin_define ("PPC"); \ ++ \ ++ if (TARGET_HARD_FLOAT) \ ++ { \ ++ builtin_define ("PPC_HardFloat"); \ ++ builtin_define ("D_HardFloat"); \ ++ } \ ++ else if (TARGET_SOFT_FLOAT) \ ++ { \ ++ builtin_define ("PPC_SoftFloat"); \ ++ builtin_define ("D_SoftFloat"); \ ++ } \ ++ } \ ++ while (0) ++ + /* 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() \ +Index: b/src/gcc/config/s390/s390.h +=================================================================== +--- a/src/gcc/config/s390/s390.h ++++ b/src/gcc/config/s390/s390.h +@@ -194,6 +194,22 @@ enum processor_flags + /* Target CPU builtins. */ + #define TARGET_CPU_CPP_BUILTINS() s390_cpu_cpp_builtins (pfile) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define ("S390X"); \ ++ else \ ++ builtin_define ("S390"); \ ++ \ ++ if(TARGET_SOFT_FLOAT) \ ++ builtin_define ("D_SoftFloat"); \ ++ else if(TARGET_HARD_FLOAT) \ ++ builtin_define ("D_HardFloat"); \ ++ } \ ++ while (0) ++ + #ifdef DEFAULT_TARGET_64BIT + #define TARGET_DEFAULT (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP \ + | MASK_OPT_HTM | MASK_OPT_VX) +Index: b/src/gcc/config/sh/sh.h +=================================================================== +--- a/src/gcc/config/sh/sh.h ++++ b/src/gcc/config/sh/sh.h +@@ -31,6 +31,19 @@ extern int code_for_indirect_jump_scratc + + #define TARGET_CPU_CPP_BUILTINS() sh_cpu_cpp_builtins (pfile) + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("SH"); \ ++ \ ++ if (TARGET_FPU_ANY) \ ++ builtin_define ("D_HardFloat"); \ ++ else \ ++ builtin_define ("D_SoftFloat"); \ ++ } \ ++ while (0) ++ + /* Value should be nonzero if functions must have frame pointers. + Zero means the frame pointer need not be set up (and parms may be accessed + via the stack pointer) in functions that seem suitable. */ +Index: b/src/gcc/config/sparc/sparc.h +=================================================================== +--- a/src/gcc/config/sparc/sparc.h ++++ b/src/gcc/config/sparc/sparc.h +@@ -27,6 +27,31 @@ along with GCC; see the file COPYING3. + + #define TARGET_CPU_CPP_BUILTINS() sparc_target_macros () + ++/* Target CPU builtins for D. */ ++#define TARGET_CPU_D_BUILTINS() \ ++do \ ++ { \ ++ if (TARGET_64BIT) \ ++ builtin_define ("SPARC64"); \ ++ else \ ++ builtin_define ("SPARC"); \ ++ \ ++ if(TARGET_V8PLUS) \ ++ builtin_define ("SPARC_V8Plus"); \ ++ \ ++ if(TARGET_FPU) \ ++ { \ ++ builtin_define ("D_HardFloat"); \ ++ builtin_define ("SPARC_HardFloat"); \ ++ } \ ++ else \ ++ { \ ++ builtin_define ("D_SoftFloat"); \ ++ builtin_define ("SPARC_SoftFloat"); \ ++ } \ ++ } \ ++ while (0) ++ + /* Specify this in a cover file to provide bi-architecture (32/64) support. */ + /* #define SPARC_BI_ARCH */ + --- gcc-7-7.3.0.orig/debian/patches/gdc-versym-os.diff +++ gcc-7-7.3.0/debian/patches/gdc-versym-os.diff @@ -0,0 +1,409 @@ +# DP: Implements D OS version conditions. + +This implements the following official versions: +* Windows +** Win32 +** Win64 +** Cygwin +** MinGW +* linux +* OSX +* FreeBSD +* OpenBSD +* NetBSD +* Solaris +* Posix +* AIX +* SysV4 +* Hurd +* Android + +These gdc specific versions are also implemented: +* GNU_MinGW64 (for mingw-w64) +* GNU_OpenSolaris (for opensolaris) +* GNU_GLibc (implemented for linux & bsd & opensolaris) +* GNU_UCLibc (implemented for linux) +* GNU_Bionic (implemented for linux) + +These official OS versions are not implemented: +* DragonFlyBSD +* BSD (other BSDs) +* Haiku +* SkyOS +* SysV3 + +Index: b/src/gcc/config/alpha/linux.h +=================================================================== +--- a/src/gcc/config/alpha/linux.h ++++ b/src/gcc/config/alpha/linux.h +@@ -33,6 +33,16 @@ along with GCC; see the file COPYING3. + builtin_define ("_GNU_SOURCE"); \ + } while (0) + ++#undef TARGET_OS_D_BUILTINS ++#define TARGET_OS_D_BUILTINS() \ ++ do { \ ++ if (OPTION_GLIBC) \ ++ builtin_define ("GNU_GLibc"); \ ++ \ ++ builtin_define ("linux"); \ ++ builtin_define ("Posix"); \ ++ } while (0) ++ + #undef LIB_SPEC + #define LIB_SPEC \ + "%{pthread:-lpthread} \ +Index: b/src/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -30,6 +30,15 @@ + } \ + while (false) + ++#undef TARGET_OS_D_BUILTINS ++#define TARGET_OS_D_BUILTINS() \ ++ do \ ++ { \ ++ TARGET_GENERIC_LINUX_OS_D_BUILTINS(); \ ++ ANDROID_TARGET_OS_D_BUILTINS(); \ ++ } \ ++ while (false) ++ + /* 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. */ +Index: b/src/gcc/config/darwin.h +=================================================================== +--- a/src/gcc/config/darwin.h ++++ b/src/gcc/config/darwin.h +@@ -972,4 +972,10 @@ extern void darwin_driver_init (unsigned + #define DEF_LD64 LD64_VERSION + #endif + ++#define TARGET_OS_D_BUILTINS() \ ++ do { \ ++ builtin_define ("OSX"); \ ++ builtin_define ("Posix"); \ ++ } while (0) ++ + #endif /* CONFIG_DARWIN_H */ +Index: b/src/gcc/config/freebsd.h +=================================================================== +--- a/src/gcc/config/freebsd.h ++++ b/src/gcc/config/freebsd.h +@@ -32,6 +32,13 @@ along with GCC; see the file COPYING3. + #undef TARGET_OS_CPP_BUILTINS + #define TARGET_OS_CPP_BUILTINS() FBSD_TARGET_OS_CPP_BUILTINS() + ++#undef TARGET_OS_D_BUILTINS ++#define TARGET_OS_D_BUILTINS() \ ++ do { \ ++ builtin_define ("FreeBSD"); \ ++ builtin_define ("Posix"); \ ++ } while (0) ++ + #undef CPP_SPEC + #define CPP_SPEC FBSD_CPP_SPEC + +Index: b/src/gcc/config/gnu.h +=================================================================== +--- a/src/gcc/config/gnu.h ++++ b/src/gcc/config/gnu.h +@@ -31,3 +31,11 @@ along with GCC. If not, see . symlink, and having a +# DP: /usr directory like the other ports. So this patch should NOT go +# DP: upstream. + +--- + config.gcc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/gcc/config.gcc (rvision 182461) ++++ b/src/gcc/config.gcc (copie de travail) +@@ -583,7 +583,7 @@ + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu) + :;; + *-*-gnu*) +- native_system_header_dir=/include ++ # native_system_header_dir=/include + ;; + esac + # glibc / uclibc / bionic switch. --- gcc-7-7.3.0.orig/debian/patches/ignore-pie-specs-when-not-enabled.diff +++ gcc-7-7.3.0/debian/patches/ignore-pie-specs-when-not-enabled.diff @@ -0,0 +1,56 @@ +# DP: Ignore dpkg's pie specs when pie is not enabled. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -3715,6 +3715,36 @@ handle_foffload_option (const char *arg) + } + } + ++static bool ignore_pie_specs_when_not_enabled(const char *envvar, ++ const char *specname) ++{ ++ const char *envval = secure_getenv(envvar); ++ char *hardening; ++ bool ignore; ++ ++ if (strstr (specname, "/pie-compile.specs") == NULL ++ && strstr (specname, "/pie-link.specs") == NULL) ++ return false; ++ if (envval == NULL || strstr (envval, "hardening=") == NULL) ++ return true; ++ ignore = true; ++ hardening = (char *) xmalloc (strlen(envval) + 1); ++ strcpy (hardening, strstr (envval, "hardening=")); ++ if (strchr (hardening, ' ')) ++ *strchr (hardening, ' ') = '\0'; ++ if (strstr(hardening, "+all")) ++ { ++ if (strstr(hardening, "-pie") == NULL) ++ ignore = false; ++ } ++ else if (strstr(hardening, "+pie")) ++ { ++ ignore = false; ++ } ++ free (hardening); ++ return ignore; ++} ++ + /* Handle a driver option; arguments and return value as for + handle_option. */ + +@@ -3989,6 +4019,12 @@ driver_handle_option (struct gcc_options + break; + + case OPT_specs_: ++ if (ignore_pie_specs_when_not_enabled("DEB_BUILD_MAINT_OPTIONS", arg) ++ && ignore_pie_specs_when_not_enabled("DEB_BUILD_OPTIONS", arg)) ++ { ++ inform (0, "pie specs %s ignored when pie is not enabled", arg); ++ return true; ++ } + { + struct user_specs *user = XNEW (struct user_specs); + --- gcc-7-7.3.0.orig/debian/patches/kfreebsd-decimal-float.diff +++ gcc-7-7.3.0/debian/patches/kfreebsd-decimal-float.diff @@ -0,0 +1,51 @@ +# DP: Enable decimal float support on kfreebsd-amd64 + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -817,6 +817,7 @@ AC_ARG_ENABLE(__cxa_atexit, + [], []) + + # Enable C extension for decimal float if target supports it. ++# touch the file, adding decimal support for kfreebsd-amd64 in config/dfp.m4 + GCC_AC_ENABLE_DECIMAL_FLOAT([$target]) + + dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi` +Index: b/src/config/dfp.m4 +=================================================================== +--- a/src/config/dfp.m4 ++++ b/src/config/dfp.m4 +@@ -21,7 +21,7 @@ Valid choices are 'yes', 'bid', 'dpd', a + [ + case $1 in + powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \ +- i?86*-*-elfiamcu | i?86*-*-gnu* | \ ++ i?86*-*-elfiamcu | i?86*-*-gnu* | x86_64*-*-gnu* | \ + i?86*-*-mingw* | x86_64*-*-mingw* | \ + i?86*-*-cygwin* | x86_64*-*-cygwin*) + enable_decimal_float=yes +Index: b/src/libdecnumber/configure.ac +=================================================================== +--- a/src/libdecnumber/configure.ac ++++ b/src/libdecnumber/configure.ac +@@ -77,6 +77,7 @@ AC_CANONICAL_TARGET + + # Default decimal format + # If you change the defaults here, be sure to change them in the GCC directory also ++# touch the file, adding decimal support for kfreebsd-amd64 in config/dfp.m4 + AC_MSG_CHECKING([for decimal floating point]) + + GCC_AC_ENABLE_DECIMAL_FLOAT([$target]) +Index: b/src/libgcc/configure.ac +=================================================================== +--- a/src/libgcc/configure.ac ++++ b/src/libgcc/configure.ac +@@ -207,6 +207,7 @@ AC_CHECK_HEADERS(inttypes.h stdint.h std + AC_HEADER_STDC + + # Check for decimal float support. ++# touch the file, adding decimal support for kfreebsd-amd64 in config/dfp.m4 + AC_CACHE_CHECK([whether decimal floating point is supported], [libgcc_cv_dfp], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include --- gcc-7-7.3.0.orig/debian/patches/kfreebsd-unwind.diff +++ gcc-7-7.3.0/debian/patches/kfreebsd-unwind.diff @@ -0,0 +1,48 @@ +# DP: DWARF2 EH unwinding support for AMD x86-64 and x86 KFreeBSD. + +Index: b/src/libgcc/config.host +=================================================================== +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -621,7 +621,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" +@@ -636,6 +642,7 @@ x86_64-*-kfreebsd*-gnu) + extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" + tmake_file="${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff t-dfprules" + tm_file="${tm_file} i386/elf-lib.h" ++ md_unwind_header=i386/freebsd-unwind.h + ;; + i[34567]86-pc-msdosdjgpp*) + ;; +Index: b/src/libgcc/config/i386/freebsd-unwind.h +=================================================================== +--- a/src/libgcc/config/i386/freebsd-unwind.h ++++ b/src/libgcc/config/i386/freebsd-unwind.h +@@ -26,6 +26,8 @@ see the files COPYING3 and COPYING.RUNTI + /* Do code reading to identify a signal frame, and set the frame + state data appropriately. See unwind-dw2.c for the structs. */ + ++#ifndef inhibit_libc ++ + #include + #include + #include +@@ -210,3 +212,5 @@ x86_freebsd_fallback_frame_state + return _URC_NO_REASON; + } + #endif /* ifdef __x86_64__ */ ++ ++#endif /* ifndef inhibit_libc */ --- gcc-7-7.3.0.orig/debian/patches/libasan-sparc.diff +++ gcc-7-7.3.0/debian/patches/libasan-sparc.diff @@ -0,0 +1,163 @@ +# DP: Re-apply sanitizer patch for sparc, dropped upstream + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. + +libsanitizer/ + +2014-10-14 David S. Miller + + * sanitizer_common/sanitizer_platform_limits_linux.cc (time_t): + Define at __kernel_time_t, as needed for sparc. + (struct __old_kernel_stat): Don't check if __sparc__ is defined. + * libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h + (__sanitizer): Define struct___old_kernel_stat_sz, + struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc. + (__sanitizer_ipc_perm): Adjust for sparc targets. + (__sanitizer_shmid_ds): Likewsie. + (__sanitizer_sigaction): Likewsie. + (IOC_SIZE): Likewsie. + +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216224) +@@ -72,6 +72,14 @@ + const unsigned struct_kernel_stat_sz = 144; + #endif + const unsigned struct_kernel_stat64_sz = 104; ++#elif defined(__sparc__) && defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 104; ++ const unsigned struct_kernel_stat64_sz = 144; ++#elif defined(__sparc__) && !defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 64; ++ const unsigned struct_kernel_stat64_sz = 104; + #endif + struct __sanitizer_perf_event_attr { + unsigned type; +@@ -94,7 +102,7 @@ + + #if defined(__powerpc64__) + const unsigned struct___old_kernel_stat_sz = 0; +-#else ++#elif !defined(__sparc__) + const unsigned struct___old_kernel_stat_sz = 32; + #endif + +@@ -173,6 +181,18 @@ + unsigned short __pad1; + unsigned long __unused1; + unsigned long __unused2; ++#elif defined(__sparc__) ++# if defined(__arch64__) ++ unsigned mode; ++ unsigned short __pad1; ++# else ++ unsigned short __pad1; ++ unsigned short mode; ++ unsigned short __pad2; ++# endif ++ unsigned short __seq; ++ unsigned long long __unused1; ++ unsigned long long __unused2; + #else + unsigned short mode; + unsigned short __pad1; +@@ -190,6 +210,26 @@ + + struct __sanitizer_shmid_ds { + __sanitizer_ipc_perm shm_perm; ++ #if defined(__sparc__) ++ # if !defined(__arch64__) ++ u32 __pad1; ++ # endif ++ long shm_atime; ++ # if !defined(__arch64__) ++ u32 __pad2; ++ # endif ++ long shm_dtime; ++ # if !defined(__arch64__) ++ u32 __pad3; ++ # endif ++ long shm_ctime; ++ uptr shm_segsz; ++ int shm_cpid; ++ int shm_lpid; ++ unsigned long shm_nattch; ++ unsigned long __glibc_reserved1; ++ unsigned long __glibc_reserved2; ++ #else + #ifndef __powerpc__ + uptr shm_segsz; + #elif !defined(__powerpc64__) +@@ -227,6 +267,7 @@ + uptr __unused4; + uptr __unused5; + #endif ++#endif + }; + #elif SANITIZER_FREEBSD + struct __sanitizer_ipc_perm { +@@ -523,9 +564,13 @@ + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ ++#if defined(__sparc__) ++ unsigned long sa_flags; ++#else + int sa_flags; + #endif + #endif ++#endif + #if SANITIZER_LINUX + void (*sa_restorer)(); + #endif +@@ -745,7 +790,7 @@ + + #define IOC_NRBITS 8 + #define IOC_TYPEBITS 8 +-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) ++#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || defined(__sparc__) + #define IOC_SIZEBITS 13 + #define IOC_DIRBITS 3 + #define IOC_NONE 1U +@@ -775,7 +820,17 @@ + #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) + #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) + #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) ++ ++#if defined(__sparc__) ++// In sparc the 14 bits SIZE field overlaps with the ++// least significant bit of DIR, so either IOC_READ or ++// IOC_WRITE shall be 1 in order to get a non-zero SIZE. ++# define IOC_SIZE(nr) \ ++ ((((((nr) >> 29) & 0x7) & (4U|2U)) == 0)? \ ++ 0 : (((nr) >> 16) & 0x3fff)) ++#else + #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) ++#endif + + extern unsigned struct_arpreq_sz; + extern unsigned struct_ifreq_sz; +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216224) +@@ -36,6 +36,7 @@ + #define uid_t __kernel_uid_t + #define gid_t __kernel_gid_t + #define off_t __kernel_off_t ++#define time_t __kernel_time_t + // This header seems to contain the definitions of _kernel_ stat* structs. + #include + #undef ino_t +@@ -60,7 +61,7 @@ + } // namespace __sanitizer + + #if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\ +- && !defined(__mips__) ++ && !defined(__mips__) && !defined(__sparc__) + COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat)); + #endif + --- gcc-7-7.3.0.orig/debian/patches/libcc1-compiler-name.diff +++ gcc-7-7.3.0/debian/patches/libcc1-compiler-name.diff @@ -0,0 +1,192 @@ +# DP: libcc1: Fix setting the compiler name, taken from the trunk + +libcc1/ + +2017-11-16 Sergio Durigan Junior + Pedro Alves + + * Makefile.am: Remove references to c-compiler-name.h and + cp-compiler-name.h + * Makefile.in: Regenerate. + * compiler-name.hh: New file. + * libcc1.cc: Don't include c-compiler-name.h. Include + compiler-name.hh. + * libcp1.cc: Don't include cp-compiler-name.h. Include + compiler-name.hh. + +Index: libcc1/libcc1.cc +=================================================================== +--- a/src/libcc1/libcc1.cc (revision 254837) ++++ b/src/libcc1/libcc1.cc (revision 254838) +@@ -37,7 +37,7 @@ + #include "libiberty.h" + #include "xregex.h" + #include "findcomp.hh" +-#include "c-compiler-name.h" ++#include "compiler-name.hh" + #include "intl.h" + + struct libcc1; +Index: libcc1/Makefile.in +=================================================================== +--- a/src/libcc1/Makefile.in (revision 254837) ++++ b/src/libcc1/Makefile.in (revision 254838) +@@ -307,8 +307,6 @@ + cc1libdir = $(libdir)/$(libsuffix) + @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la + @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la +-BUILT_SOURCES = c-compiler-name.h cp-compiler-name.h +-MOSTLYCLEANFILES = c-compiler-name.h cp-compiler-name.h + shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \ + marshall.cc marshall.hh rpc.hh status.hh + +@@ -344,7 +342,7 @@ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libcc1_la_LDFLAGS) $(LTLDFLAGS) -o $@ + +-all: $(BUILT_SOURCES) cc1plugin-config.h ++all: cc1plugin-config.h + $(MAKE) $(AM_MAKEFLAGS) all-am + + .SUFFIXES: +@@ -567,15 +565,13 @@ + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + check-am: all-am +-check: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) check-am ++check: check-am + all-am: Makefile $(LTLIBRARIES) cc1plugin-config.h + installdirs: + for dir in "$(DESTDIR)$(cc1libdir)" "$(DESTDIR)$(plugindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +-install: $(BUILT_SOURCES) +- $(MAKE) $(AM_MAKEFLAGS) install-am ++install: install-am + install-exec: install-exec-am + install-data: install-data-am + uninstall: uninstall-am +@@ -595,7 +591,6 @@ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi + mostlyclean-generic: +- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + + clean-generic: + +@@ -606,7 +601,6 @@ + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + clean: clean-am + + clean-am: clean-cc1libLTLIBRARIES clean-generic clean-libtool \ +@@ -681,7 +675,7 @@ + + uninstall-am: uninstall-cc1libLTLIBRARIES uninstall-pluginLTLIBRARIES + +-.MAKE: all check install install-am install-strip ++.MAKE: all install-am install-strip + + .PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ + clean-cc1libLTLIBRARIES clean-generic clean-libtool \ +@@ -702,21 +696,6 @@ + override CXXFLAGS := $(filter-out -fsanitize=address,$(CXXFLAGS)) + override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS)) + +-# Put this in a header so we don't run sed for each compilation. This +-# is also simpler to debug as one can easily see the constant. +-# FIXME: compute it in configure.ac and output it in config.status, or +-# introduce timestamp files for some indirection to avoid rebuilding it +-# every time. +-c-compiler-name.h: Makefile +- -rm -f $@T +- echo "#define C_COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > $@T +- mv $@T $@ # $(SHELL) $(srcdir)/../move-if-change $@T $@ +- +-cp-compiler-name.h: Makefile +- -rm -f $@T +- echo "#define CP_COMPILER_NAME \"`echo g++ | sed '$(transform)'`\"" > $@T +- mv $@T $@ # $(SHELL) $(srcdir)/../move-if-change $@T $@ +- + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: +Index: libcc1/compiler-name.hh +=================================================================== +--- a/src/libcc1/compiler-name.hh (nonexistent) ++++ b/src/libcc1/compiler-name.hh (revision 254838) +@@ -0,0 +1,29 @@ ++/* The names of the compilers we use. ++ Copyright (C) 2017 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 ++. */ ++ ++#ifndef COMPILER_NAME_H ++#define COMPILER_NAME_H ++ ++// C compiler name. ++#define C_COMPILER_NAME "gcc" ++ ++// C++ compiler name. ++#define CP_COMPILER_NAME "g++" ++ ++#endif // ! COMPILER_NAME_H +Index: libcc1/libcp1.cc +=================================================================== +--- a/src/libcc1/libcp1.cc (revision 254837) ++++ b/src/libcc1/libcp1.cc (revision 254838) +@@ -37,7 +37,7 @@ + #include "libiberty.h" + #include "xregex.h" + #include "findcomp.hh" +-#include "cp-compiler-name.h" ++#include "compiler-name.hh" + #include "intl.h" + + struct libcp1; +Index: libcc1/Makefile.am +=================================================================== +--- a/src/libcc1/Makefile.am (revision 254837) ++++ b/src/libcc1/Makefile.am (revision 254838) +@@ -45,24 +45,6 @@ + cc1lib_LTLIBRARIES = libcc1.la + endif + +-BUILT_SOURCES = c-compiler-name.h cp-compiler-name.h +-MOSTLYCLEANFILES = c-compiler-name.h cp-compiler-name.h +- +-# Put this in a header so we don't run sed for each compilation. This +-# is also simpler to debug as one can easily see the constant. +-# FIXME: compute it in configure.ac and output it in config.status, or +-# introduce timestamp files for some indirection to avoid rebuilding it +-# every time. +-c-compiler-name.h: Makefile +- -rm -f $@T +- echo "#define C_COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > $@T +- mv $@T $@ # $(SHELL) $(srcdir)/../move-if-change $@T $@ +- +-cp-compiler-name.h: Makefile +- -rm -f $@T +- echo "#define CP_COMPILER_NAME \"`echo g++ | sed '$(transform)'`\"" > $@T +- mv $@T $@ # $(SHELL) $(srcdir)/../move-if-change $@T $@ +- + shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \ + marshall.cc marshall.hh rpc.hh status.hh + --- gcc-7-7.3.0.orig/debian/patches/libcilkrts-targets.diff +++ gcc-7-7.3.0/debian/patches/libcilkrts-targets.diff @@ -0,0 +1,21 @@ +# DP: Disable libcilkrts on KFreeBSD and the Hurd. See #734973. + +Index: b/src/libcilkrts/configure.tgt +=================================================================== +--- a/src/libcilkrts/configure.tgt ++++ b/src/libcilkrts/configure.tgt +@@ -57,3 +57,14 @@ esac + + # Disable libcilkrts on non POSIX hosted systems. + . ${srcdir}/../config/target-posix ++ ++# Disable libcilkrts on KFreeBSD and the Hurd. ++if test x$enable_libcilkrts = x ; then ++ case "${target}" in ++ *-*-linux*) ++ ;; ++ *-*-gnu* | *-*-k*bsd*-gnu) ++ UNSUPPORTED=1 ++ ;; ++ esac ++fi --- gcc-7-7.3.0.orig/debian/patches/libffi-mips.diff +++ gcc-7-7.3.0/debian/patches/libffi-mips.diff @@ -0,0 +1,711 @@ +# DP: Backport Mips go closure support, taken from libffi issue #197. + +Index: b/src/libffi/src/mips/ffi.c +=================================================================== +--- a/src/libffi/src/mips/ffi.c ++++ b/src/libffi/src/mips/ffi.c +@@ -581,14 +581,15 @@ ffi_status ffi_prep_cif_machdep(ffi_cif + /* Low level routine for calling O32 functions */ + extern int ffi_call_O32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, +- unsigned, unsigned *, void (*)(void)); ++ unsigned, unsigned *, void (*)(void), void *closure); + + /* Low level routine for calling N32 functions */ + extern int ffi_call_N32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, +- unsigned, void *, void (*)(void)); ++ unsigned, void *, void (*)(void), void *closure); + +-void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ++void ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, ++ void **avalue, void *closure) + { + extended_cif ecif; + +@@ -610,7 +611,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(v + case FFI_O32: + case FFI_O32_SOFT_FLOAT: + ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, +- cif->flags, ecif.rvalue, fn); ++ cif->flags, ecif.rvalue, fn, closure); + break; + #endif + +@@ -642,7 +643,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(v + #endif + } + ffi_call_N32(ffi_prep_args, &ecif, cif->bytes, +- cif->flags, rvalue_copy, fn); ++ cif->flags, rvalue_copy, fn, closure); + if (copy_rvalue) + memcpy(ecif.rvalue, rvalue_copy + copy_offset, cif->rtype->size); + } +@@ -655,11 +656,27 @@ void ffi_call(ffi_cif *cif, void (*fn)(v + } + } + ++void ++ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ++{ ++ ffi_call_int (cif, fn, rvalue, avalue, NULL); ++} ++ ++void ++ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, ++ void **avalue, void *closure) ++{ ++ ffi_call_int (cif, fn, rvalue, avalue, closure); ++} ++ ++ + #if FFI_CLOSURES + #if defined(FFI_MIPS_O32) + extern void ffi_closure_O32(void); ++extern void ffi_go_closure_O32(void); + #else + extern void ffi_closure_N32(void); ++extern void ffi_go_closure_N32(void); + #endif /* FFI_MIPS_O32 */ + + ffi_status +@@ -770,17 +787,17 @@ ffi_prep_closure_loc (ffi_closure *closu + * Based on the similar routine for sparc. + */ + int +-ffi_closure_mips_inner_O32 (ffi_closure *closure, ++ffi_closure_mips_inner_O32 (ffi_cif *cif, ++ void (*fun)(ffi_cif*, void*, void**, void*), ++ void *user_data, + void *rvalue, ffi_arg *ar, + double *fpr) + { +- ffi_cif *cif; + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; + int i, avn, argn, seen_int; + +- cif = closure->cif; + avalue = alloca (cif->nargs * sizeof (ffi_arg)); + avaluep = alloca (cif->nargs * sizeof (ffi_arg)); + +@@ -848,7 +865,7 @@ ffi_closure_mips_inner_O32 (ffi_closure + } + + /* Invoke the closure. */ +- (closure->fun) (cif, rvalue, avaluep, closure->user_data); ++ fun(cif, rvalue, avaluep, user_data); + + if (cif->abi == FFI_O32_SOFT_FLOAT) + { +@@ -924,11 +941,12 @@ copy_struct_N32(char *target, unsigned o + * + */ + int +-ffi_closure_mips_inner_N32 (ffi_closure *closure, ++ffi_closure_mips_inner_N32 (ffi_cif *cif, ++ void (*fun)(ffi_cif*, void*, void**, void*), ++ void *user_data, + void *rvalue, ffi_arg *ar, + ffi_arg *fpr) + { +- ffi_cif *cif; + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; +@@ -936,7 +954,6 @@ ffi_closure_mips_inner_N32 (ffi_closure + int soft_float; + ffi_arg *argp; + +- cif = closure->cif; + soft_float = cif->abi == FFI_N64_SOFT_FLOAT + || cif->abi == FFI_N32_SOFT_FLOAT; + avalue = alloca (cif->nargs * sizeof (ffi_arg)); +@@ -1048,11 +1065,49 @@ ffi_closure_mips_inner_N32 (ffi_closure + } + + /* Invoke the closure. */ +- (closure->fun) (cif, rvalue, avaluep, closure->user_data); ++ fun (cif, rvalue, avaluep, user_data); + + return cif->flags >> (FFI_FLAG_BITS * 8); + } + + #endif /* FFI_MIPS_N32 */ + ++#if defined(FFI_MIPS_O32) ++extern void ffi_closure_O32(void); ++extern void ffi_go_closure_O32(void); ++#else ++extern void ffi_closure_N32(void); ++extern void ffi_go_closure_N32(void); ++#endif /* FFI_MIPS_O32 */ ++ ++ffi_status ++ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, ++ void (*fun)(ffi_cif*,void*,void**,void*)) ++{ ++ void * fn; ++ ++#if defined(FFI_MIPS_O32) ++ if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) ++ return FFI_BAD_ABI; ++ fn = ffi_go_closure_O32; ++#else ++#if _MIPS_SIM ==_ABIN32 ++ if (cif->abi != FFI_N32 ++ && cif->abi != FFI_N32_SOFT_FLOAT) ++ return FFI_BAD_ABI; ++#else ++ if (cif->abi != FFI_N64 ++ && cif->abi != FFI_N64_SOFT_FLOAT) ++ return FFI_BAD_ABI; ++#endif ++ fn = ffi_go_closure_N32; ++#endif /* FFI_MIPS_O32 */ ++ ++ closure->tramp = (void *)fn; ++ closure->cif = cif; ++ closure->fun = fun; ++ ++ return FFI_OK; ++} ++ + #endif /* FFI_CLOSURES */ +Index: b/src/libffi/src/mips/ffitarget.h +=================================================================== +--- a/src/libffi/src/mips/ffitarget.h ++++ b/src/libffi/src/mips/ffitarget.h +@@ -231,12 +231,14 @@ typedef enum ffi_abi { + + #if defined(FFI_MIPS_O32) + #define FFI_CLOSURES 1 ++#define FFI_GO_CLOSURES 1 + #define FFI_TRAMPOLINE_SIZE 20 + #else + /* N32/N64. */ + # define FFI_CLOSURES 1 ++#define FFI_GO_CLOSURES 1 + #if _MIPS_SIM==_ABI64 +-#define FFI_TRAMPOLINE_SIZE 52 ++#define FFI_TRAMPOLINE_SIZE 56 + #else + #define FFI_TRAMPOLINE_SIZE 20 + #endif +Index: b/src/libffi/src/mips/n32.S +=================================================================== +--- a/src/libffi/src/mips/n32.S ++++ b/src/libffi/src/mips/n32.S +@@ -37,8 +37,12 @@ + #define flags a3 + #define raddr a4 + #define fn a5 ++#define closure a6 + +-#define SIZEOF_FRAME ( 8 * FFI_SIZEOF_ARG ) ++/* Note: to keep stack 16 byte aligned we need even number slots ++ used 9 slots here ++*/ ++#define SIZEOF_FRAME ( 10 * FFI_SIZEOF_ARG ) + + #ifdef __GNUC__ + .abicalls +@@ -51,24 +55,25 @@ + .globl ffi_call_N32 + .ent ffi_call_N32 + ffi_call_N32: +-.LFB3: ++.LFB0: + .frame $fp, SIZEOF_FRAME, ra + .mask 0xc0000000,-FFI_SIZEOF_ARG + .fmask 0x00000000,0 + + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +-.LCFI0: ++.LCFI00: + REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer + REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address +-.LCFI1: ++.LCFI01: + move $fp, $sp +-.LCFI3: ++.LCFI02: + move t9, callback # callback function pointer + REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes + REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags + REG_S raddr, 4*FFI_SIZEOF_ARG($fp) # raddr + REG_S fn, 5*FFI_SIZEOF_ARG($fp) # fn ++ REG_S closure, 6*FFI_SIZEOF_ARG($fp) # closure + + # Allocate at least 4 words in the argstack + move v0, bytes +@@ -200,6 +205,9 @@ callit: + # Load the function pointer + REG_L t9, 5*FFI_SIZEOF_ARG($fp) + ++ # install the static chain(t7=$15) ++ REG_L t7, 6*FFI_SIZEOF_ARG($fp) ++ + # If the return value pointer is NULL, assume no return value. + REG_L t5, 4*FFI_SIZEOF_ARG($fp) + beqz t5, noretval +@@ -348,7 +356,7 @@ epilogue: + ADDU $sp, SIZEOF_FRAME # Fix stack pointer + j ra + +-.LFE3: ++.LFE0: + .end ffi_call_N32 + + /* ffi_closure_N32. Expects address of the passed-in ffi_closure in t0 +@@ -408,6 +416,41 @@ epilogue: + #define GP_OFF2 (0 * FFI_SIZEOF_ARG) + + .align 2 ++ .globl ffi_go_closure_N32 ++ .ent ffi_go_closure_N32 ++ffi_go_closure_N32: ++.LFB1: ++ .frame $sp, SIZEOF_FRAME2, ra ++ .mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2) ++ .fmask 0x00000000,0 ++ SUBU $sp, SIZEOF_FRAME2 ++.LCFI10: ++ .cpsetup t9, GP_OFF2, ffi_go_closure_N32 ++ REG_S ra, RA_OFF2($sp) # Save return address ++.LCFI11: ++ ++ REG_S a0, A0_OFF2($sp) ++ REG_S a1, A1_OFF2($sp) ++ REG_S a2, A2_OFF2($sp) ++ REG_S a3, A3_OFF2($sp) ++ REG_S a4, A4_OFF2($sp) ++ REG_S a5, A5_OFF2($sp) ++ ++ # Call ffi_closure_mips_inner_N32 to do the real work. ++ LA t9, ffi_closure_mips_inner_N32 ++ REG_L a0, 8($15) # cif ++ REG_L a1, 16($15) # fun ++ move a2, t7 # userdata=closure ++ ADDU a3, $sp, V0_OFF2 # rvalue ++ ADDU a4, $sp, A0_OFF2 # ar ++ ADDU a5, $sp, F12_OFF2 # fpr ++ ++ b $do_closure ++ ++.LFE1: ++ .end ffi_go_closure_N32 ++ ++ .align 2 + .globl ffi_closure_N32 + .ent ffi_closure_N32 + ffi_closure_N32: +@@ -416,18 +459,29 @@ ffi_closure_N32: + .mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2) + .fmask 0x00000000,0 + SUBU $sp, SIZEOF_FRAME2 +-.LCFI5: ++.LCFI20: + .cpsetup t9, GP_OFF2, ffi_closure_N32 + REG_S ra, RA_OFF2($sp) # Save return address +-.LCFI6: +- # Store all possible argument registers. If there are more than +- # fit in registers, then they were stored on the stack. ++.LCFI21: + REG_S a0, A0_OFF2($sp) + REG_S a1, A1_OFF2($sp) + REG_S a2, A2_OFF2($sp) + REG_S a3, A3_OFF2($sp) + REG_S a4, A4_OFF2($sp) + REG_S a5, A5_OFF2($sp) ++ ++ # Call ffi_closure_mips_inner_N32 to do the real work. ++ LA t9, ffi_closure_mips_inner_N32 ++ REG_L a0, 56($12) # cif ++ REG_L a1, 64($12) # fun ++ REG_L a2, 72($12) # user_data ++ ADDU a3, $sp, V0_OFF2 ++ ADDU a4, $sp, A0_OFF2 ++ ADDU a5, $sp, F12_OFF2 ++ ++$do_closure: ++ # Store all possible argument registers. If there are more than ++ # fit in registers, then they were stored on the stack. + REG_S a6, A6_OFF2($sp) + REG_S a7, A7_OFF2($sp) + +@@ -441,12 +495,6 @@ ffi_closure_N32: + s.d $f18, F18_OFF2($sp) + s.d $f19, F19_OFF2($sp) + +- # Call ffi_closure_mips_inner_N32 to do the real work. +- LA t9, ffi_closure_mips_inner_N32 +- move a0, $12 # Pointer to the ffi_closure +- ADDU a1, $sp, V0_OFF2 +- ADDU a2, $sp, A0_OFF2 +- ADDU a3, $sp, F12_OFF2 + jalr t9 + + # Return flags are in v0 +@@ -533,46 +581,66 @@ cls_epilogue: + .align EH_FRAME_ALIGN + .LECIE1: + +-.LSFDE1: +- .4byte .LEFDE1-.LASFDE1 # length. +-.LASFDE1: +- .4byte .LASFDE1-.Lframe1 # CIE_pointer. +- FDE_ADDR_BYTES .LFB3 # initial_location. +- FDE_ADDR_BYTES .LFE3-.LFB3 # address_range. ++.LSFDE0: ++ .4byte .LEFDE0-.LASFDE0 # length. ++.LASFDE0: ++ .4byte .LASFDE0-.Lframe1 # CIE_pointer. ++ FDE_ADDR_BYTES .LFB0 # initial_location. ++ FDE_ADDR_BYTES .LFE0-.LFB0 # address_range. + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI0-.LFB3 # to .LCFI0 ++ .4byte .LCFI00-.LFB0 # to .LCFI00 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME # adjust stack.by SIZEOF_FRAME + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI1-.LCFI0 # to .LCFI1 ++ .4byte .LCFI01-.LCFI00 # to .LCFI01 + .byte 0x9e # DW_CFA_offset of $fp + .uleb128 2*FFI_SIZEOF_ARG/4 # + .byte 0x9f # DW_CFA_offset of ra + .uleb128 1*FFI_SIZEOF_ARG/4 # + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI3-.LCFI1 # to .LCFI3 ++ .4byte .LCFI02-.LCFI01 # to .LCFI02 + .byte 0xd # DW_CFA_def_cfa_register + .uleb128 0x1e # in $fp + .align EH_FRAME_ALIGN ++.LEFDE0: ++ ++.LSFDE1: ++ .4byte .LEFDE1-.LASFDE1 # length ++.LASFDE1: ++ .4byte .LASFDE1-.Lframe1 # CIE_pointer. ++ FDE_ADDR_BYTES .LFB1 # initial_location. ++ FDE_ADDR_BYTES .LFE1-.LFB1 # address_range. ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte .LCFI10-.LFB1 # to .LCFI10 ++ .byte 0xe # DW_CFA_def_cfa_offset ++ .uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte .LCFI11-.LCFI10 # to .LCFI11 ++ .byte 0x9c # DW_CFA_offset of $gp ($28) ++ .uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4 ++ .byte 0x9f # DW_CFA_offset of ra ($31) ++ .uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4 ++ .align EH_FRAME_ALIGN + .LEFDE1: +-.LSFDE3: +- .4byte .LEFDE3-.LASFDE3 # length +-.LASFDE3: +- .4byte .LASFDE3-.Lframe1 # CIE_pointer. ++ ++.LSFDE2: ++ .4byte .LEFDE2-.LASFDE2 # length ++.LASFDE2: ++ .4byte .LASFDE2-.Lframe1 # CIE_pointer. + FDE_ADDR_BYTES .LFB2 # initial_location. + FDE_ADDR_BYTES .LFE2-.LFB2 # address_range. + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI5-.LFB2 # to .LCFI5 ++ .4byte .LCFI20-.LFB2 # to .LCFI20 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI6-.LCFI5 # to .LCFI6 ++ .4byte .LCFI21-.LCFI20 # to .LCFI21 + .byte 0x9c # DW_CFA_offset of $gp ($28) + .uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4 + .byte 0x9f # DW_CFA_offset of ra ($31) + .uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4 + .align EH_FRAME_ALIGN +-.LEFDE3: ++.LEFDE2: + #endif /* __GNUC__ */ + + #endif +Index: b/src/libffi/src/mips/o32.S +=================================================================== +--- a/src/libffi/src/mips/o32.S ++++ b/src/libffi/src/mips/o32.S +@@ -50,14 +50,14 @@ ffi_call_O32: + $LFB0: + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +-$LCFI0: ++$LCFI00: + REG_S $fp, FP_OFF($sp) # Save frame pointer +-$LCFI1: ++$LCFI01: + REG_S ra, RA_OFF($sp) # Save return address +-$LCFI2: ++$LCFI02: + move $fp, $sp + +-$LCFI3: ++$LCFI03: + move t9, callback # callback function pointer + REG_S flags, A3_OFF($fp) # flags + +@@ -132,6 +132,9 @@ pass_f_d: + l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float + + call_it: ++ # Load the static chain pointer ++ REG_L t7, SIZEOF_FRAME + 6*FFI_SIZEOF_ARG($fp) ++ + # Load the function pointer + REG_L t9, SIZEOF_FRAME + 5*FFI_SIZEOF_ARG($fp) + +@@ -204,13 +207,15 @@ $LFE0: + -8 - f14 (le low, be high) + -9 - f12 (le high, be low) + -10 - f12 (le low, be high) +- -11 - Called function a3 save +- -12 - Called function a2 save +- -13 - Called function a1 save +- -14 - Called function a0 save, our sp and fp point here ++ -11 - Called function a5 save ++ -12 - Called function a4 save ++ -13 - Called function a3 save ++ -14 - Called function a2 save ++ -15 - Called function a1 save ++ -16 - Called function a0 save, our sp and fp point here + */ + +-#define SIZEOF_FRAME2 (14 * FFI_SIZEOF_ARG) ++#define SIZEOF_FRAME2 (16 * FFI_SIZEOF_ARG) + #define A3_OFF2 (SIZEOF_FRAME2 + 3 * FFI_SIZEOF_ARG) + #define A2_OFF2 (SIZEOF_FRAME2 + 2 * FFI_SIZEOF_ARG) + #define A1_OFF2 (SIZEOF_FRAME2 + 1 * FFI_SIZEOF_ARG) +@@ -225,13 +230,71 @@ $LFE0: + #define FA_1_0_OFF2 (SIZEOF_FRAME2 - 8 * FFI_SIZEOF_ARG) + #define FA_0_1_OFF2 (SIZEOF_FRAME2 - 9 * FFI_SIZEOF_ARG) + #define FA_0_0_OFF2 (SIZEOF_FRAME2 - 10 * FFI_SIZEOF_ARG) ++#define CALLED_A5_OFF2 (SIZEOF_FRAME2 - 11 * FFI_SIZEOF_ARG) ++#define CALLED_A4_OFF2 (SIZEOF_FRAME2 - 12 * FFI_SIZEOF_ARG) + + .text ++ ++ .align 2 ++ .globl ffi_go_closure_O32 ++ .ent ffi_go_closure_O32 ++ffi_go_closure_O32: ++$LFB1: ++ # Prologue ++ .frame $fp, SIZEOF_FRAME2, ra ++ .set noreorder ++ .cpload t9 ++ .set reorder ++ SUBU $sp, SIZEOF_FRAME2 ++ .cprestore GP_OFF2 ++$LCFI10: ++ ++ REG_S $16, S0_OFF2($sp) # Save s0 ++ REG_S $fp, FP_OFF2($sp) # Save frame pointer ++ REG_S ra, RA_OFF2($sp) # Save return address ++$LCFI11: ++ ++ move $fp, $sp ++$LCFI12: ++ ++ REG_S a0, A0_OFF2($fp) ++ REG_S a1, A1_OFF2($fp) ++ REG_S a2, A2_OFF2($fp) ++ REG_S a3, A3_OFF2($fp) ++ ++ # Load ABI enum to s0 ++ REG_L $16, 4($15) # cif ++ REG_L $16, 0($16) # abi is first member. ++ ++ li $13, 1 # FFI_O32 ++ bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT ++ ++ # Store all possible float/double registers. ++ s.d $f12, FA_0_0_OFF2($fp) ++ s.d $f14, FA_1_0_OFF2($fp) ++1: ++ # prepare arguments for ffi_closure_mips_inner_O32 ++ REG_L a0, 4($15) # cif ++ REG_L a1, 8($15) # fun ++ move a2, $15 # user_data = go closure ++ addu a3, $fp, V0_OFF2 # rvalue ++ ++ addu t9, $fp, A0_OFF2 # ar ++ REG_S t9, CALLED_A4_OFF2($fp) ++ ++ addu t9, $fp, FA_0_0_OFF2 #fpr ++ REG_S t9, CALLED_A5_OFF2($fp) ++ ++ b $do_closure ++ ++$LFE1: ++ .end ffi_go_closure_O32 ++ + .align 2 + .globl ffi_closure_O32 + .ent ffi_closure_O32 + ffi_closure_O32: +-$LFB1: ++$LFB2: + # Prologue + .frame $fp, SIZEOF_FRAME2, ra + .set noreorder +@@ -239,14 +302,14 @@ $LFB1: + .set reorder + SUBU $sp, SIZEOF_FRAME2 + .cprestore GP_OFF2 +-$LCFI4: ++$LCFI20: + REG_S $16, S0_OFF2($sp) # Save s0 + REG_S $fp, FP_OFF2($sp) # Save frame pointer + REG_S ra, RA_OFF2($sp) # Save return address +-$LCFI6: ++$LCFI21: + move $fp, $sp + +-$LCFI7: ++$LCFI22: + # Store all possible argument registers. If there are more than + # four arguments, then they are stored above where we put a3. + REG_S a0, A0_OFF2($fp) +@@ -265,12 +328,21 @@ $LCFI7: + s.d $f12, FA_0_0_OFF2($fp) + s.d $f14, FA_1_0_OFF2($fp) + 1: +- # Call ffi_closure_mips_inner_O32 to do the work. ++ # prepare arguments for ffi_closure_mips_inner_O32 ++ REG_L a0, 20($12) # cif pointer follows tramp. ++ REG_L a1, 24($12) # fun ++ REG_L a2, 28($12) # user_data ++ addu a3, $fp, V0_OFF2 # rvalue ++ ++ addu t9, $fp, A0_OFF2 # ar ++ REG_S t9, CALLED_A4_OFF2($fp) ++ ++ addu t9, $fp, FA_0_0_OFF2 #fpr ++ REG_S t9, CALLED_A5_OFF2($fp) ++ ++$do_closure: + la t9, ffi_closure_mips_inner_O32 +- move a0, $12 # Pointer to the ffi_closure +- addu a1, $fp, V0_OFF2 +- addu a2, $fp, A0_OFF2 +- addu a3, $fp, FA_0_0_OFF2 ++ # Call ffi_closure_mips_inner_O32 to do the work. + jalr t9 + + # Load the return value into the appropriate register. +@@ -300,7 +372,7 @@ closure_done: + REG_L ra, RA_OFF2($sp) # Restore return address + ADDU $sp, SIZEOF_FRAME2 + j ra +-$LFE1: ++$LFE2: + .end ffi_closure_O32 + + /* DWARF-2 unwind info. */ +@@ -322,6 +394,7 @@ $LSCIE0: + .uleb128 0x0 + .align 2 + $LECIE0: ++ + $LSFDE0: + .4byte $LEFDE0-$LASFDE0 # FDE Length + $LASFDE0: +@@ -330,11 +403,11 @@ $LASFDE0: + .4byte $LFE0-$LFB0 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI0-$LFB0 ++ .4byte $LCFI00-$LFB0 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 0x18 + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI2-$LCFI0 ++ .4byte $LCFI01-$LCFI00 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) +@@ -342,12 +415,13 @@ $LASFDE0: + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI3-$LCFI2 ++ .4byte $LCFI02-$LCFI01 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x18 + .align 2 + $LEFDE0: ++ + $LSFDE1: + .4byte $LEFDE1-$LASFDE1 # FDE Length + $LASFDE1: +@@ -356,11 +430,11 @@ $LASFDE1: + .4byte $LFE1-$LFB1 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI4-$LFB1 ++ .4byte $LCFI10-$LFB1 + .byte 0xe # DW_CFA_def_cfa_offset +- .uleb128 0x38 ++ .uleb128 SIZEOF_FRAME2 + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI6-$LCFI4 ++ .4byte $LCFI11-$LCFI10 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x10 # $16 + .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) +@@ -371,11 +445,41 @@ $LASFDE1: + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI7-$LCFI6 ++ .4byte $LCFI12-$LCFI11 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e +- .uleb128 0x38 ++ .uleb128 SIZEOF_FRAME2 + .align 2 + $LEFDE1: + ++$LSFDE2: ++ .4byte $LEFDE2-$LASFDE2 # FDE Length ++$LASFDE2: ++ .4byte $LASFDE2-$Lframe0 # FDE CIE offset ++ .4byte $LFB2 # FDE initial location ++ .4byte $LFE2-$LFB2 # FDE address range ++ .uleb128 0x0 # Augmentation size ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte $LCFI20-$LFB2 ++ .byte 0xe # DW_CFA_def_cfa_offset ++ .uleb128 SIZEOF_FRAME2 ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte $LCFI21-$LCFI20 ++ .byte 0x11 # DW_CFA_offset_extended_sf ++ .uleb128 0x10 # $16 ++ .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) ++ .byte 0x11 # DW_CFA_offset_extended_sf ++ .uleb128 0x1e # $fp ++ .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) ++ .byte 0x11 # DW_CFA_offset_extended_sf ++ .uleb128 0x1f # $ra ++ .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte $LCFI22-$LCFI21 ++ .byte 0xc # DW_CFA_def_cfa ++ .uleb128 0x1e ++ .uleb128 SIZEOF_FRAME2 ++ .align 2 ++$LEFDE2: ++ + #endif --- gcc-7-7.3.0.orig/debian/patches/libffi-mipsen-r6.diff +++ gcc-7-7.3.0/debian/patches/libffi-mipsen-r6.diff @@ -0,0 +1,44 @@ +# DP: libffi: mips/n32.S: disable .set mips4 on mips r6 + +Index: b/src/libffi/src/mips/n32.S +=================================================================== +--- a/src/libffi/src/mips/n32.S ++++ b/src/libffi/src/mips/n32.S +@@ -43,7 +43,9 @@ + #ifdef __GNUC__ + .abicalls + #endif ++#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + .set mips4 ++#endif + .text + .align 2 + .globl ffi_call_N32 +Index: b/src/libffi/src/mips/ffi.c +=================================================================== +--- a/src/libffi/src/mips/ffi.c ++++ b/src/libffi/src/mips/ffi.c +@@ -698,7 +698,11 @@ ffi_prep_closure_loc (ffi_closure *closu + /* lui $12,high(codeloc) */ + tramp[2] = 0x3c0c0000 | ((unsigned)codeloc >> 16); + /* jr $25 */ ++#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[3] = 0x03200008; ++#else ++ tramp[3] = 0x03200009; ++#endif + /* ori $12,low(codeloc) */ + tramp[4] = 0x358c0000 | ((unsigned)codeloc & 0xffff); + #else +@@ -726,7 +730,11 @@ ffi_prep_closure_loc (ffi_closure *closu + /* ori $25,low(fn) */ + tramp[10] = 0x37390000 | ((unsigned long)fn & 0xffff); + /* jr $25 */ ++#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[11] = 0x03200008; ++#else ++ tramp[11] = 0x03200009; ++#endif + /* ori $12,low(codeloc) */ + tramp[12] = 0x358c0000 | ((unsigned long)codeloc & 0xffff); + --- gcc-7-7.3.0.orig/debian/patches/libffi-pax.diff +++ gcc-7-7.3.0/debian/patches/libffi-pax.diff @@ -0,0 +1,161 @@ +From 757876336c183f5b20b6620d674cc9817fd0d280 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20B=C3=BChler?= +Date: Wed, 7 Sep 2016 15:50:54 +0200 +Subject: [PATCH 2/2] always check for PaX MPROTECT on linux, make EMUTRAMP + experimental + +- ffi_prep_closure_loc doesn't necessarily generate trampolines recognized by + PaX EMUTRAMP handler; there is no way to check before, and it isn't working +on x86-64 right now -> experimental +- if MPROTECT is enabled use the same workaround as is used for SELinux (double + mmap()) +--- + configure.ac | 11 +++++++--- + src/closures.c | 68 +++++++++++++++++++++++++++++++++++++++------------------- + 2 files changed, 54 insertions(+), 25 deletions(-) + +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -177,12 +177,17 @@ + ;; + esac + +-# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. ++# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC; ++# if EMUTRAMP is active too ffi could try mapping without PROT_EXEC, ++# but the kernel needs to recognize the trampoline generated by ffi. ++# Otherwise fallback to double mmap trick. + AC_ARG_ENABLE(pax_emutramp, +- [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC], ++ [ --enable-pax_emutramp enable pax emulated trampolines (experimental)], + if test "$enable_pax_emutramp" = "yes"; then ++ AC_MSG_WARN([EMUTRAMP is experimental only. Use --enable-pax_emutramp=experimental to enforce.]) ++ elif test "$enable_pax_emutramp" = "experimental"; then + AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, +- [Define this if you want to enable pax emulated trampolines]) ++ [Define this if you want to enable pax emulated trampolines (experimental)]) + fi) + + FFI_EXEC_TRAMPOLINE_TABLE=0 +--- a/src/libffi/src/closures.c ++++ b/src/libffi/src/closures.c +@@ -53,14 +53,18 @@ + # endif + #endif + +-#if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX +-# ifdef __linux__ ++#if FFI_MMAP_EXEC_WRIT && defined __linux__ ++# if !defined FFI_MMAP_EXEC_SELINUX + /* When defined to 1 check for SELinux and if SELinux is active, + don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that + might cause audit messages. */ + # define FFI_MMAP_EXEC_SELINUX 1 +-# endif +-#endif ++# endif /* !defined FFI_MMAP_EXEC_SELINUX */ ++# if !defined FFI_MMAP_PAX ++/* Also check for PaX MPROTECT */ ++# define FFI_MMAP_PAX 1 ++# endif /* !defined FFI_MMAP_PAX */ ++#endif /* FFI_MMAP_EXEC_WRIT && defined __linux__ */ + + #if FFI_CLOSURES + +@@ -172,14 +176,18 @@ + + #endif /* !FFI_MMAP_EXEC_SELINUX */ + +-/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */ +-#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX ++/* On PaX enable kernels that have MPROTECT enabled we can't use PROT_EXEC. */ ++#if defined FFI_MMAP_PAX + #include + +-static int emutramp_enabled = -1; ++enum { ++ PAX_MPROTECT = (1 << 0), ++ PAX_EMUTRAMP = (1 << 1), ++}; ++static int cached_pax_flags = -1; + + static int +-emutramp_enabled_check (void) ++pax_flags_check (void) + { + char *buf = NULL; + size_t len = 0; +@@ -193,9 +201,10 @@ + while (getline (&buf, &len, f) != -1) + if (!strncmp (buf, "PaX:", 4)) + { +- char emutramp; +- if (sscanf (buf, "%*s %*c%c", &emutramp) == 1) +- ret = (emutramp == 'E'); ++ if (NULL != strchr (buf + 4, 'M')) ++ ret |= PAX_MPROTECT; ++ if (NULL != strchr (buf + 4, 'E')) ++ ret |= PAX_EMUTRAMP; + break; + } + free (buf); +@@ -203,9 +212,13 @@ + return ret; + } + +-#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \ +- : (emutramp_enabled = emutramp_enabled_check ())) +-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ ++#define get_pax_flags() (cached_pax_flags >= 0 ? cached_pax_flags \ ++ : (cached_pax_flags = pax_flags_check ())) ++#define has_pax_flags(flags) ((flags) == ((flags) & get_pax_flags ())) ++#define is_mprotect_enabled() (has_pax_flags (PAX_MPROTECT)) ++#define is_emutramp_enabled() (has_pax_flags (PAX_EMUTRAMP)) ++ ++#endif /* defined FFI_MMAP_PAX */ + + #elif defined (__CYGWIN__) || defined(__INTERIX) + +@@ -216,9 +229,10 @@ + + #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */ + +-#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX +-#define is_emutramp_enabled() 0 +-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ ++#if !defined FFI_MMAP_PAX ++# define is_mprotect_enabled() 0 ++# define is_emutramp_enabled() 0 ++#endif /* !defined FFI_MMAP_PAX */ + + /* Declare all functions defined in dlmalloc.c as static. */ + static void *dlmalloc(size_t); +@@ -525,13 +539,23 @@ + printf ("mapping in %zi\n", length); + #endif + +- if (execfd == -1 && is_emutramp_enabled ()) ++ /* -1 != execfd hints that we already decided to use dlmmap_locked ++ last time. */ ++ if (execfd == -1 && is_mprotect_enabled ()) + { +- ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); +- return ptr; ++#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX ++ if (is_emutramp_enabled ()) ++ { ++ /* emutramp requires the kernel recognizing the trampoline pattern ++ generated by ffi_prep_closure_loc; there is no way to test ++ in advance whether this will work, so this is experimental. */ ++ ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); ++ return ptr; ++ } ++#endif ++ /* fallback to dlmmap_locked. */ + } +- +- if (execfd == -1 && !is_selinux_enabled ()) ++ else if (execfd == -1 && !is_selinux_enabled ()) + { + ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset); + --- gcc-7-7.3.0.orig/debian/patches/libffi-race-condition.diff +++ gcc-7-7.3.0/debian/patches/libffi-race-condition.diff @@ -0,0 +1,33 @@ +From 48d2e46528fb6e621d95a7fa194069fd136b712d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20B=C3=BChler?= +Date: Wed, 7 Sep 2016 15:49:48 +0200 +Subject: [PATCH 1/2] dlmmap_locked always needs locking as it always modifies + execsize + +--- + src/closures.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +--- a/src/libffi/src/closures.c ++++ b/src/libffi/src/closures.c +@@ -568,16 +568,11 @@ + MREMAP_DUP and prot at this point. */ + } + +- if (execsize == 0 || execfd == -1) +- { +- pthread_mutex_lock (&open_temp_exec_file_mutex); +- ptr = dlmmap_locked (start, length, prot, flags, offset); +- pthread_mutex_unlock (&open_temp_exec_file_mutex); ++ pthread_mutex_lock (&open_temp_exec_file_mutex); ++ ptr = dlmmap_locked (start, length, prot, flags, offset); ++ pthread_mutex_unlock (&open_temp_exec_file_mutex); + +- return ptr; +- } +- +- return dlmmap_locked (start, length, prot, flags, offset); ++ return ptr; + } + + /* Release memory at the given address, as well as the corresponding --- gcc-7-7.3.0.orig/debian/patches/libffi-riscv.diff +++ gcc-7-7.3.0/debian/patches/libffi-riscv.diff @@ -0,0 +1,873 @@ +# 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 @@ + 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 @@ + 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 @@ + 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 @@ + 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 \ +@@ -833,6 +833,16 @@ + 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) +@@ -1053,6 +1063,10 @@ + -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) +@@ -1169,6 +1183,8 @@ + @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@ +@@ -1270,6 +1286,7 @@ + -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 +@@ -1674,6 +1691,8 @@ + -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) +@@ -1703,7 +1722,7 @@ + + 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 +@@ -1842,7 +1861,7 @@ + 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 @@ + TARGET=POWERPC; TARGETDIR=powerpc + ;; + ++ riscv*-*) ++ TARGET=RISCV; TARGETDIR=riscv ++ SOURCES="ffi.c sysv.S" ++ ;; ++ + s390-*-* | s390x-*-*) + TARGET=S390; TARGETDIR=s390 + SOURCES="ffi.c sysv.S" +Index: b/src/libffi/src/riscv/ffi.c +=================================================================== +--- /dev/null ++++ b/src/libffi/src/riscv/ffi.c +@@ -0,0 +1,445 @@ ++/* ----------------------------------------------------------------------- ++ ffi.c - Copyright (c) 2015 Michael Knyszek ++ 2015 Andrew Waterman ++ 2018 Stef O'Rear ++ Based on MIPS N32/64 port ++ ++ RISC-V Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ----------------------------------------------------------------------- */ ++ ++#include ++#include ++ ++#include ++#include ++ ++#if __riscv_float_abi_double ++#define ABI_FLEN 64 ++#define ABI_FLOAT double ++#elif __riscv_float_abi_single ++#define ABI_FLEN 32 ++#define ABI_FLOAT float ++#endif ++ ++#define NARGREG 8 ++#define STKALIGN 16 ++#define MAXCOPYARG (2 * sizeof(double)) ++ ++typedef struct call_context ++{ ++#if ABI_FLEN ++ ABI_FLOAT fa[8]; ++#endif ++ size_t a[8]; ++ /* used by the assembly code to in-place construct its own stack frame */ ++ char frame[16]; ++} call_context; ++ ++typedef struct call_builder ++{ ++ call_context *aregs; ++ int used_integer; ++ int used_float; ++ size_t *used_stack; ++} call_builder; ++ ++/* integer (not pointer) less than ABI XLEN */ ++/* FFI_TYPE_INT does not appear to be used */ ++#if __SIZEOF_POINTER__ == 8 ++#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT64) ++#else ++#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT32) ++#endif ++ ++#if ABI_FLEN ++typedef struct { ++ char as_elements, type1, offset2, type2; ++} float_struct_info; ++ ++#if ABI_FLEN >= 64 ++#define IS_FLOAT(type) ((type) >= FFI_TYPE_FLOAT && (type) <= FFI_TYPE_DOUBLE) ++#else ++#define IS_FLOAT(type) ((type) == FFI_TYPE_FLOAT) ++#endif ++ ++static ffi_type **flatten_struct(ffi_type *in, ffi_type **out, ffi_type **out_end) { ++ int i; ++ if (out == out_end) return out; ++ if (in->type != FFI_TYPE_STRUCT) { ++ *(out++) = in; ++ } else { ++ for (i = 0; in->elements[i]; i++) ++ out = flatten_struct(in->elements[i], out, out_end); ++ } ++ return out; ++} ++ ++/* Structs with at most two fields after flattening, one of which is of ++ floating point type, are passed in multiple registers if sufficient ++ registers are available. */ ++static float_struct_info struct_passed_as_elements(call_builder *cb, ffi_type *top) { ++ float_struct_info ret = {0, 0, 0, 0}; ++ ffi_type *fields[3]; ++ int num_floats, num_ints; ++ int num_fields = flatten_struct(top, fields, fields + 3) - fields; ++ ++ if (num_fields == 1) { ++ if (IS_FLOAT(fields[0]->type)) { ++ ret.as_elements = 1; ++ ret.type1 = fields[0]->type; ++ } ++ } else if (num_fields == 2) { ++ num_floats = IS_FLOAT(fields[0]->type) + IS_FLOAT(fields[1]->type); ++ num_ints = IS_INT(fields[0]->type) + IS_INT(fields[1]->type); ++ if (num_floats == 0 || num_floats + num_ints != 2) ++ return ret; ++ if (cb->used_float + num_floats > NARGREG || cb->used_integer + (2 - num_floats) > NARGREG) ++ return ret; ++ if (!IS_FLOAT(fields[0]->type) && !IS_FLOAT(fields[1]->type)) ++ return ret; ++ ++ ret.type1 = fields[0]->type; ++ ret.type2 = fields[1]->type; ++ ret.offset2 = ALIGN(fields[0]->size, fields[1]->alignment); ++ ret.as_elements = 1; ++ } ++ ++ return ret; ++} ++#endif ++ ++/* allocates a single register, float register, or XLEN-sized stack slot to a datum */ ++static void marshal_atom(call_builder *cb, int type, void *data) { ++ size_t value = 0; ++ switch (type) { ++ case FFI_TYPE_UINT8: value = *(uint8_t *)data; break; ++ case FFI_TYPE_SINT8: value = *(int8_t *)data; break; ++ case FFI_TYPE_UINT16: value = *(uint16_t *)data; break; ++ case FFI_TYPE_SINT16: value = *(int16_t *)data; break; ++ /* 32-bit quantities are always sign-extended in the ABI */ ++ case FFI_TYPE_UINT32: value = *(int32_t *)data; break; ++ case FFI_TYPE_SINT32: value = *(int32_t *)data; break; ++#if __SIZEOF_POINTER__ == 8 ++ case FFI_TYPE_UINT64: value = *(uint64_t *)data; break; ++ case FFI_TYPE_SINT64: value = *(int64_t *)data; break; ++#endif ++ case FFI_TYPE_POINTER: value = *(size_t *)data; break; ++ ++ /* float values may be recoded in an implementation-defined way ++ by hardware conforming to 2.1 or earlier, so use asm to ++ reinterpret floats as doubles */ ++#if ABI_FLEN >= 32 ++ case FFI_TYPE_FLOAT: ++ asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(float *)data)); ++ return; ++#endif ++#if ABI_FLEN >= 64 ++ case FFI_TYPE_DOUBLE: ++ asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(double *)data)); ++ return; ++#endif ++ default: FFI_ASSERT(0); break; ++ } ++ ++ if (cb->used_integer == NARGREG) { ++ *cb->used_stack++ = value; ++ } else { ++ cb->aregs->a[cb->used_integer++] = value; ++ } ++} ++ ++static void unmarshal_atom(call_builder *cb, int type, void *data) { ++ size_t value; ++ switch (type) { ++#if ABI_FLEN >= 32 ++ case FFI_TYPE_FLOAT: ++ asm("" : "=f"(*(float *)data) : "0"(cb->aregs->fa[cb->used_float++])); ++ return; ++#endif ++#if ABI_FLEN >= 64 ++ case FFI_TYPE_DOUBLE: ++ asm("" : "=f"(*(double *)data) : "0"(cb->aregs->fa[cb->used_float++])); ++ return; ++#endif ++ } ++ ++ if (cb->used_integer == NARGREG) { ++ value = *cb->used_stack++; ++ } else { ++ value = cb->aregs->a[cb->used_integer++]; ++ } ++ ++ switch (type) { ++ case FFI_TYPE_UINT8: *(uint8_t *)data = value; break; ++ case FFI_TYPE_SINT8: *(uint8_t *)data = value; break; ++ case FFI_TYPE_UINT16: *(uint16_t *)data = value; break; ++ case FFI_TYPE_SINT16: *(uint16_t *)data = value; break; ++ case FFI_TYPE_UINT32: *(uint32_t *)data = value; break; ++ case FFI_TYPE_SINT32: *(uint32_t *)data = value; break; ++#if __SIZEOF_POINTER__ == 8 ++ case FFI_TYPE_UINT64: *(uint64_t *)data = value; break; ++ case FFI_TYPE_SINT64: *(uint64_t *)data = value; break; ++#endif ++ case FFI_TYPE_POINTER: *(size_t *)data = value; break; ++ default: FFI_ASSERT(0); break; ++ } ++} ++ ++/* adds an argument to a call, or a not by reference return value */ ++static void marshal(call_builder *cb, ffi_type *type, int var, void *data) { ++ size_t realign[2]; ++ ++#if ABI_FLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) { ++ float_struct_info fsi = struct_passed_as_elements(cb, type); ++ if (fsi.as_elements) { ++ marshal_atom(cb, fsi.type1, data); ++ if (fsi.offset2) ++ marshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); ++ return; ++ } ++ } ++ ++ if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { ++ marshal_atom(cb, type->type, data); ++ return; ++ } ++#endif ++ ++ if (type->size > 2 * __SIZEOF_POINTER__) { ++ /* pass by reference */ ++ marshal_atom(cb, FFI_TYPE_POINTER, &data); ++ } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { ++ marshal_atom(cb, type->type, data); ++ } else { ++ /* overlong integers, soft-float floats, and structs without special ++ float handling are treated identically from this point on */ ++ ++ /* variadics are aligned even in registers */ ++ if (type->alignment > __SIZEOF_POINTER__) { ++ if (var) ++ cb->used_integer = ALIGN(cb->used_integer, 2); ++ cb->used_stack = (size_t *)ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); ++ } ++ ++ memcpy(realign, data, type->size); ++ if (type->size > 0) ++ marshal_atom(cb, FFI_TYPE_POINTER, realign); ++ if (type->size > __SIZEOF_POINTER__) ++ marshal_atom(cb, FFI_TYPE_POINTER, realign + 1); ++ } ++} ++ ++/* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */ ++static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) { ++ size_t realign[2]; ++ void *pointer; ++ ++#if ABI_FLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) { ++ float_struct_info fsi = struct_passed_as_elements(cb, type); ++ if (fsi.as_elements) { ++ unmarshal_atom(cb, fsi.type1, data); ++ if (fsi.offset2) ++ unmarshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); ++ return data; ++ } ++ } ++ ++ if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { ++ unmarshal_atom(cb, type->type, data); ++ return data; ++ } ++#endif ++ ++ if (type->size > 2 * __SIZEOF_POINTER__) { ++ /* pass by reference */ ++ unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer); ++ return pointer; ++ } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { ++ unmarshal_atom(cb, type->type, data); ++ return data; ++ } else { ++ /* overlong integers, soft-float floats, and structs without special ++ float handling are treated identically from this point on */ ++ ++ /* variadics are aligned even in registers */ ++ if (type->alignment > __SIZEOF_POINTER__) { ++ if (var) ++ cb->used_integer = ALIGN(cb->used_integer, 2); ++ cb->used_stack = (size_t *)ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); ++ } ++ ++ if (type->size > 0) ++ unmarshal_atom(cb, FFI_TYPE_POINTER, realign); ++ if (type->size > __SIZEOF_POINTER__) ++ unmarshal_atom(cb, FFI_TYPE_POINTER, realign + 1); ++ memcpy(data, realign, type->size); ++ return data; ++ } ++} ++ ++static int passed_by_ref(call_builder *cb, ffi_type *type, int var) { ++#if ABI_FLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) { ++ float_struct_info fsi = struct_passed_as_elements(cb, type); ++ if (fsi.as_elements) return 0; ++ } ++#endif ++ ++ return type->size > 2 * __SIZEOF_POINTER__; ++} ++ ++/* Perform machine dependent cif processing */ ++ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { ++ cif->riscv_nfixedargs = cif->nargs; ++ return FFI_OK; ++} ++ ++/* Perform machine dependent cif processing when we have a variadic function */ ++ ++ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) { ++ cif->riscv_nfixedargs = nfixedargs; ++ return FFI_OK; ++} ++ ++/* Low level routine for calling functions */ ++extern void ffi_call_asm(void *stack, struct call_context *regs, void (*fn)(void)) FFI_HIDDEN; ++ ++void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ++{ ++ /* this is a conservative estimate, assuming a complex return value and ++ that all remaining arguments are long long / __int128 */ ++ size_t arg_bytes = cif->nargs <= 3 ? 0 : ++ ALIGN(2 * sizeof(size_t) * (cif->nargs - 3), STKALIGN); ++ size_t rval_bytes = 0; ++ if (rvalue == NULL && cif->rtype->size > 2*__SIZEOF_POINTER__) ++ rval_bytes = ALIGN(cif->rtype->size, STKALIGN); ++ size_t alloc_size = arg_bytes + rval_bytes + sizeof(call_context); ++ ++ /* the assembly code will deallocate all stack data at lower addresses ++ than the argument region, so we need to allocate the frame and the ++ return value after the arguments in a single allocation */ ++ size_t alloc_base; ++ /* Argument region must be 16-byte aligned */ ++ if (_Alignof(max_align_t) >= STKALIGN) { ++ /* since sizeof long double is normally 16, the compiler will ++ guarantee alloca alignment to at least that much */ ++ alloc_base = (size_t)alloca(alloc_size); ++ } else { ++ alloc_base = ALIGN(alloca(alloc_size + STKALIGN - 1), STKALIGN); ++ } ++ ++ if (rval_bytes) ++ rvalue = (void*)(alloc_base + arg_bytes); ++ ++ call_builder cb; ++ cb.used_float = cb.used_integer = 0; ++ cb.aregs = (call_context*)(alloc_base + arg_bytes + rval_bytes); ++ cb.used_stack = (void*)alloc_base; ++ ++ int return_by_ref = passed_by_ref(&cb, cif->rtype, 0); ++ if (return_by_ref) ++ marshal(&cb, &ffi_type_pointer, 0, &rvalue); ++ ++ int i; ++ for (i = 0; i < cif->nargs; i++) ++ marshal(&cb, cif->arg_types[i], i >= cif->riscv_nfixedargs, avalue[i]); ++ ++ ffi_call_asm((void*)alloc_base, cb.aregs, fn); ++ ++ cb.used_float = cb.used_integer = 0; ++ if (!return_by_ref && rvalue) ++ unmarshal(&cb, cif->rtype, 0, rvalue); ++} ++ ++extern void ffi_closure_asm(void) FFI_HIDDEN; ++ ++ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) ++{ ++ uint32_t *tramp = (uint32_t *) &closure->tramp[0]; ++ uint64_t fn = (uint64_t) (uintptr_t) ffi_closure_asm; ++ ++ if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) ++ return FFI_BAD_ABI; ++ ++ /* we will call ffi_closure_inner with codeloc, not closure, but as long ++ as the memory is readable it should work */ ++ ++ tramp[0] = 0x00000317; /* auipc t1, 0 (i.e. t0 <- codeloc) */ ++#if __SIZEOF_POINTER__ == 8 ++ tramp[1] = 0x01033383; /* ld t2, 16(t1) */ ++#else ++ tramp[1] = 0x01032383; /* lw t2, 16(t1) */ ++#endif ++ tramp[2] = 0x00038067; /* jr t2 */ ++ tramp[3] = 0x00000013; /* nop */ ++ tramp[4] = fn; ++ tramp[5] = fn >> 32; ++ ++ closure->cif = cif; ++ closure->fun = fun; ++ closure->user_data = user_data; ++ ++ __builtin___clear_cache(codeloc, codeloc + FFI_TRAMPOLINE_SIZE); ++ ++ return FFI_OK; ++} ++ ++/* Called by the assembly code with aregs pointing to saved argument registers ++ and stack pointing to the stacked arguments. Return values passed in ++ registers will be reloaded from aregs. */ ++void FFI_HIDDEN ffi_closure_inner(size_t *stack, call_context *aregs, ffi_closure *closure) { ++ ffi_cif *cif = closure->cif; ++ void **avalue = alloca(cif->nargs * sizeof(void*)); ++ /* storage for arguments which will be copied by unmarshal(). We could ++ theoretically avoid the copies in many cases and use at most 128 bytes ++ of memory, but allocating disjoint storage for each argument is ++ simpler. */ ++ char *astorage = alloca(cif->nargs * MAXCOPYARG); ++ void *rvalue; ++ call_builder cb; ++ int return_by_ref; ++ int i; ++ ++ cb.aregs = aregs; ++ cb.used_integer = cb.used_float = 0; ++ cb.used_stack = stack; ++ ++ return_by_ref = passed_by_ref(&cb, cif->rtype, 0); ++ if (return_by_ref) ++ unmarshal(&cb, &ffi_type_pointer, 0, &rvalue); ++ else ++ rvalue = alloca(cif->rtype->size); ++ ++ for (i = 0; i < cif->nargs; i++) ++ avalue[i] = unmarshal(&cb, cif->arg_types[i], ++ i >= cif->riscv_nfixedargs, astorage + i*MAXCOPYARG); ++ ++ (closure->fun)(cif, rvalue, avalue, closure->user_data); ++ ++ if (!return_by_ref && cif->rtype->type != FFI_TYPE_VOID) { ++ cb.used_integer = cb.used_float = 0; ++ marshal(&cb, cif->rtype, 0, rvalue); ++ } ++} +Index: b/src/libffi/src/riscv/ffitarget.h +=================================================================== +--- /dev/null ++++ b/src/libffi/src/riscv/ffitarget.h +@@ -0,0 +1,68 @@ ++/* -----------------------------------------------------------------*-C-*- ++ ffitarget.h - 2014 Michael Knyszek ++ ++ Target configuration macros for RISC-V. ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ++ ----------------------------------------------------------------------- */ ++ ++#ifndef LIBFFI_TARGET_H ++#define LIBFFI_TARGET_H ++ ++#ifndef LIBFFI_H ++#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." ++#endif ++ ++#ifndef __riscv ++#error "libffi was configured for a RISC-V target but this does not appear to be a RISC-V compiler." ++#endif ++ ++#ifndef LIBFFI_ASM ++ ++typedef unsigned long ffi_arg; ++typedef signed long ffi_sarg; ++ ++/* FFI_UNUSED_NN and riscv_unused are to maintain ABI compatibility with a ++ distributed Berkeley patch from 2014, and can be removed at SONAME bump */ ++typedef enum ffi_abi { ++ FFI_FIRST_ABI = 0, ++ FFI_SYSV, ++ FFI_UNUSED_1, ++ FFI_UNUSED_2, ++ FFI_UNUSED_3, ++ FFI_LAST_ABI, ++ ++ FFI_DEFAULT_ABI = FFI_SYSV ++} ffi_abi; ++ ++#endif /* LIBFFI_ASM */ ++ ++/* ---- Definitions for closures ----------------------------------------- */ ++ ++#define FFI_CLOSURES 1 ++#define FFI_TRAMPOLINE_SIZE 24 ++#define FFI_NATIVE_RAW_API 0 ++#define FFI_EXTRA_CIF_FIELDS unsigned riscv_nfixedargs; unsigned riscv_unused; ++#define FFI_TARGET_SPECIFIC_VARIADIC ++ ++#endif ++ +Index: b/src/libffi/src/riscv/sysv.S +=================================================================== +--- /dev/null ++++ b/src/libffi/src/riscv/sysv.S +@@ -0,0 +1,214 @@ ++/* ----------------------------------------------------------------------- ++ ffi.c - Copyright (c) 2015 Michael Knyszek ++ 2015 Andrew Waterman ++ 2018 Stef O'Rear ++ ++ RISC-V Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ----------------------------------------------------------------------- */ ++ ++#define LIBFFI_ASM ++#include ++#include ++ ++/* Define aliases so that we can handle all ABIs uniformly */ ++ ++#if __SIZEOF_POINTER__ == 8 ++#define PTRS 8 ++#define LARG ld ++#define SARG sd ++#else ++#define PTRS 4 ++#define LARG lw ++#define SARG sw ++#endif ++ ++#if __riscv_float_abi_double ++#define FLTS 8 ++#define FLARG fld ++#define FSARG fsd ++#elif __riscv_float_abi_single ++#define FLTS 4 ++#define FLARG flw ++#define FSARG fsw ++#else ++#define FLTS 0 ++#endif ++ ++#define fp s0 ++ ++ .text ++ .globl ffi_call_asm ++ .type ffi_call_asm, @function ++ .hidden ffi_call_asm ++/* ++ struct call_context { ++ floatreg fa[8]; ++ intreg a[8]; ++ intreg pad[rv32 ? 2 : 0]; ++ intreg save_fp, save_ra; ++ } ++ void ffi_call_asm(size_t *stackargs, struct call_context *regargs, ++ void (*fn)(void)); ++*/ ++ ++#define FRAME_LEN (8 * FLTS + 8 * PTRS + 16) ++ ++ffi_call_asm: ++ .cfi_startproc ++ ++ /* ++ We are NOT going to set up an ordinary stack frame. In order to pass ++ the stacked args to the called function, we adjust our stack pointer to ++ a0, which is in the _caller's_ alloca area. We establish our own stack ++ frame at the end of the call_context. ++ ++ Anything below the arguments will be freed at this point, although we ++ preserve the call_context so that it can be read back in the caller. ++ */ ++ ++ .cfi_def_cfa 11, FRAME_LEN # interim CFA based on a1 ++ SARG fp, FRAME_LEN - 2*PTRS(a1) ++ .cfi_offset 8, -2*PTRS ++ SARG ra, FRAME_LEN - 1*PTRS(a1) ++ .cfi_offset 1, -1*PTRS ++ ++ addi fp, a1, FRAME_LEN ++ mv sp, a0 ++ .cfi_def_cfa 8, 0 # our frame is fully set up ++ ++ # Load arguments ++ mv t1, a2 ++ ++#if FLTS ++ FLARG fa0, -FRAME_LEN+0*FLTS(fp) ++ FLARG fa1, -FRAME_LEN+1*FLTS(fp) ++ FLARG fa2, -FRAME_LEN+2*FLTS(fp) ++ FLARG fa3, -FRAME_LEN+3*FLTS(fp) ++ FLARG fa4, -FRAME_LEN+4*FLTS(fp) ++ FLARG fa5, -FRAME_LEN+5*FLTS(fp) ++ FLARG fa6, -FRAME_LEN+6*FLTS(fp) ++ FLARG fa7, -FRAME_LEN+7*FLTS(fp) ++#endif ++ ++ LARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) ++ LARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) ++ LARG a2, -FRAME_LEN+8*FLTS+2*PTRS(fp) ++ LARG a3, -FRAME_LEN+8*FLTS+3*PTRS(fp) ++ LARG a4, -FRAME_LEN+8*FLTS+4*PTRS(fp) ++ LARG a5, -FRAME_LEN+8*FLTS+5*PTRS(fp) ++ LARG a6, -FRAME_LEN+8*FLTS+6*PTRS(fp) ++ LARG a7, -FRAME_LEN+8*FLTS+7*PTRS(fp) ++ ++ /* Call */ ++ jalr t1 ++ ++ /* Save return values - only a0/a1 (fa0/fa1) are used */ ++#if FLTS ++ FSARG fa0, -FRAME_LEN+0*FLTS(fp) ++ FSARG fa1, -FRAME_LEN+1*FLTS(fp) ++#endif ++ ++ SARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) ++ SARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) ++ ++ /* Restore and return */ ++ addi sp, fp, -FRAME_LEN ++ .cfi_def_cfa 2, FRAME_LEN ++ LARG ra, -1*PTRS(fp) ++ .cfi_restore 1 ++ LARG fp, -2*PTRS(fp) ++ .cfi_restore 8 ++ ret ++ .cfi_endproc ++ .size ffi_call_asm, .-ffi_call_asm ++ ++ ++/* ++ ffi_closure_asm. Expects address of the passed-in ffi_closure in t1. ++ void ffi_closure_inner(size_t *stackargs, struct call_context *regargs, ++ ffi_closure *closure); ++*/ ++ ++ .globl ffi_closure_asm ++ .hidden ffi_closure_asm ++ .type ffi_closure_asm, @function ++ffi_closure_asm: ++ .cfi_startproc ++ ++ addi sp, sp, -FRAME_LEN ++ .cfi_def_cfa_offset FRAME_LEN ++ ++ /* make a frame */ ++ SARG fp, FRAME_LEN - 2*PTRS(sp) ++ .cfi_offset 8, -2*PTRS ++ SARG ra, FRAME_LEN - 1*PTRS(sp) ++ .cfi_offset 1, -1*PTRS ++ addi fp, sp, FRAME_LEN ++ ++ /* save arguments */ ++#if FLTS ++ FSARG fa0, 0*FLTS(sp) ++ FSARG fa1, 1*FLTS(sp) ++ FSARG fa2, 2*FLTS(sp) ++ FSARG fa3, 3*FLTS(sp) ++ FSARG fa4, 4*FLTS(sp) ++ FSARG fa5, 5*FLTS(sp) ++ FSARG fa6, 6*FLTS(sp) ++ FSARG fa7, 7*FLTS(sp) ++#endif ++ ++ SARG a0, 8*FLTS+0*PTRS(sp) ++ SARG a1, 8*FLTS+1*PTRS(sp) ++ SARG a2, 8*FLTS+2*PTRS(sp) ++ SARG a3, 8*FLTS+3*PTRS(sp) ++ SARG a4, 8*FLTS+4*PTRS(sp) ++ SARG a5, 8*FLTS+5*PTRS(sp) ++ SARG a6, 8*FLTS+6*PTRS(sp) ++ SARG a7, 8*FLTS+7*PTRS(sp) ++ ++ /* enter C */ ++ addi a0, sp, FRAME_LEN ++ mv a1, sp ++ mv a2, t1 ++ ++ call ffi_closure_inner ++ ++ /* return values */ ++#if FLTS ++ FLARG fa0, 0*FLTS(sp) ++ FLARG fa1, 1*FLTS(sp) ++#endif ++ ++ LARG a0, 8*FLTS+0*PTRS(sp) ++ LARG a1, 8*FLTS+1*PTRS(sp) ++ ++ /* restore and return */ ++ LARG ra, FRAME_LEN-1*PTRS(sp) ++ .cfi_restore 1 ++ LARG fp, FRAME_LEN-2*PTRS(sp) ++ .cfi_restore 8 ++ addi sp, sp, FRAME_LEN ++ .cfi_def_cfa_offset 0 ++ ret ++ .cfi_endproc ++ .size ffi_closure_asm, .-ffi_closure_asm + --- gcc-7-7.3.0.orig/debian/patches/libffi-ro-eh_frame_sect.diff +++ gcc-7-7.3.0/debian/patches/libffi-ro-eh_frame_sect.diff @@ -0,0 +1,15 @@ +# DP: PR libffi/47248, force a read only eh frame section. + +Index: b/src/libffi/configure.ac +=================================================================== +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -275,6 +275,8 @@ if test "x$GCC" = "xyes"; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi ++ # FIXME: see PR libffi/47248 ++ libffi_cv_ro_eh_frame=yes + rm -f conftest.* + ]) + if test $libffi_cv_hidden_visibility_attribute = yes; then --- gcc-7-7.3.0.orig/debian/patches/libgo-cleanfiles.diff +++ gcc-7-7.3.0/debian/patches/libgo-cleanfiles.diff @@ -0,0 +1,31 @@ +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -1422,7 +1422,9 @@ mostlyclean-local: + find . -name '*-testsum' -print | xargs rm -f + find . -name '*-testlog' -print | xargs rm -f + +-CLEANFILES = *.go *.gox goc2c *.c s-version libgo.sum libgo.log ++CLEANFILES = *.go *.gox goc2c *.c s-* libgo.sum libgo.log \ ++ *.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 +@@ -1346,7 +1346,10 @@ TEST_PACKAGES = \ + unicode/utf8/check + + MOSTLYCLEAN_FILES = libgo.head libgo.sum.sep libgo.log.sep +-CLEANFILES = *.go *.gox goc2c *.c s-version libgo.sum libgo.log ++CLEANFILES = *.go *.gox goc2c *.c s-* libgo.sum libgo.log \ ++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ ++ */*/*/*/*/*.dep ++ + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + --- gcc-7-7.3.0.orig/debian/patches/libgo-ia64.diff +++ gcc-7-7.3.0/debian/patches/libgo-ia64.diff @@ -0,0 +1,11 @@ +--- a/src/libgo/go/runtime/lfstack_64bit.go ++++ b/src/libgo/go/runtime/lfstack_64bit.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 amd64 arm64 mips64 mips64le ppc64 ppc64le s390x arm64be alpha sparc64 ++// +build amd64 arm64 mips64 mips64le ppc64 ppc64le s390x arm64be alpha sparc64 ia64 + + package runtime + --- gcc-7-7.3.0.orig/debian/patches/libgo-revert-timeout-exp.diff +++ gcc-7-7.3.0/debian/patches/libgo-revert-timeout-exp.diff @@ -0,0 +1,12 @@ +Index: b/src/libgo/testsuite/lib/libgo.exp +=================================================================== +--- a/src/libgo/testsuite/lib/libgo.exp ++++ b/src/libgo/testsuite/lib/libgo.exp +@@ -46,7 +46,6 @@ load_gcc_lib wrapper.exp + load_gcc_lib target-supports.exp + load_gcc_lib target-utils.exp + load_gcc_lib gcc-defs.exp +-load_gcc_lib timeout.exp + load_gcc_lib go.exp + + proc libgo_init { args } { --- gcc-7-7.3.0.orig/debian/patches/libgo-setcontext-config.diff +++ gcc-7-7.3.0/debian/patches/libgo-setcontext-config.diff @@ -0,0 +1,21 @@ +# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips* + +Index: b/src/libgo/configure.ac +=================================================================== +--- a/src/libgo/configure.ac ++++ b/src/libgo/configure.ac +@@ -838,6 +838,14 @@ main () + CFLAGS="$CFLAGS_hold" + LIBS="$LIBS_hold" + ]) ++dnl overwrite for the mips* 64bit multilibs, fails on some buildds ++if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then ++ case "$target" in ++ mips*-linux-*) ++ AC_MSG_WARN([FIXME: overwrite setcontext_clobbers_tls for $target:$ptr_type_size]) ++ libgo_cv_lib_setcontext_clobbers_tls=no ;; ++ esac ++fi + if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then + AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1, + [Define if setcontext clobbers TLS variables]) --- gcc-7-7.3.0.orig/debian/patches/libgo-sparc64.diff +++ gcc-7-7.3.0/debian/patches/libgo-sparc64.diff @@ -0,0 +1,99 @@ +From c536feb42f56afd6397697f9ee9e5d8d918bef1b Mon Sep 17 00:00:00 2001 +From: ian +Date: Wed, 31 May 2017 21:36:42 +0000 +Subject: [PATCH] libgo: support for sparc64 GNU/Linux + + Fix lfstack code to work with sparc64 GNU/Linux address map. + + Force alignment of epollevent. To make this work reliably, pass + GOARCH explicitly to mkrsysinfo.sh. + + Patch by Vladimir Mezentsev. + + Reviewed-on: https://go-review.googlesource.com/44494 + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@248765 138bc75d-0d04-0410-961f-82ee72b054a4 +--- +[gcc/go/gofrontend/MERGE | 2 +-] + libgo/Makefile.am | 2 +- + libgo/Makefile.in | 2 +- + libgo/go/runtime/lfstack_64bit.go | 12 ++++++++++++ + libgo/mkrsysinfo.sh | 6 +++++- + 5 files changed, 20 insertions(+), 4 deletions(-) + +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -551,7 +551,7 @@ s-version: Makefile + + runtime_sysinfo.go: s-runtime_sysinfo; @true + s-runtime_sysinfo: $(srcdir)/mkrsysinfo.sh gen-sysinfo.go +- $(SHELL) $(srcdir)/mkrsysinfo.sh ++ GOARCH=$(GOARCH) GOOS=$(GOOS) $(SHELL) $(srcdir)/mkrsysinfo.sh + $(SHELL) $(srcdir)/mvifdiff.sh tmp-runtime_sysinfo.go runtime_sysinfo.go + $(STAMP) $@ + +Index: b/src/libgo/Makefile.in +=================================================================== +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -3199,7 +3199,7 @@ s-version: Makefile + + runtime_sysinfo.go: s-runtime_sysinfo; @true + s-runtime_sysinfo: $(srcdir)/mkrsysinfo.sh gen-sysinfo.go +- $(SHELL) $(srcdir)/mkrsysinfo.sh ++ GOARCH=$(GOARCH) GOOS=$(GOOS) $(SHELL) $(srcdir)/mkrsysinfo.sh + $(SHELL) $(srcdir)/mvifdiff.sh tmp-runtime_sysinfo.go runtime_sysinfo.go + $(STAMP) $@ + +Index: b/src/libgo/go/runtime/lfstack_64bit.go +=================================================================== +--- a/src/libgo/go/runtime/lfstack_64bit.go ++++ b/src/libgo/go/runtime/lfstack_64bit.go +@@ -32,9 +32,18 @@ const ( + // bottom, because node must be pointer-aligned, giving a total of 19 bits + // of count. + cntBits = 64 - addrBits + 3 ++ ++ // On sparc64-linux, user addresses are 52-bit numbers sign extended to 64. ++ // We shift the address left 12 to eliminate the sign extended part and make ++ // room in the bottom for the count. ++ sparcLinuxAddrBits = 52 ++ sparcLinuxCntBits = 64 - sparcLinuxAddrBits + 3 + ) + + func lfstackPack(node *lfnode, cnt uintptr) uint64 { ++ if GOARCH == "sparc64" && GOOS == "linux" { ++ return uint64(uintptr(unsafe.Pointer(node)))<<(64-sparcLinuxAddrBits) | uint64(cnt&(1<> cntBits << 3))) + } ++ if GOARCH == "sparc64" && GOOS == "linux" { ++ return (*lfnode)(unsafe.Pointer(uintptr(int64(val) >> sparcLinuxCntBits << 3))) ++ } + return (*lfnode)(unsafe.Pointer(uintptr(val >> cntBits << 3))) + } +Index: b/src/libgo/mkrsysinfo.sh +=================================================================== +--- a/src/libgo/mkrsysinfo.sh ++++ b/src/libgo/mkrsysinfo.sh +@@ -77,7 +77,11 @@ if grep '^const _epoll_data_offset ' ${O + if test "$val" = "4"; then + echo 'type epollevent struct { events uint32; data [8]byte }' >> ${OUT} + elif test "$val" = "8"; then +- echo 'type epollevent struct { events uint32; pad [4]byte; data [8]byte }' >> ${OUT} ++ if test "$GOARCH" = "sparc64" -a "$GOOS" = "linux"; then ++ echo 'type epollevent struct { events uint32; pad [4]byte; data [8]byte; _align [0]int64 }' >> ${OUT} ++ else ++ echo 'type epollevent struct { events uint32; pad [4]byte; data [8]byte }' >> ${OUT} ++ fi + else + echo 1>&2 "unknown epoll data offset value ${val}" + exit 1 --- gcc-7-7.3.0.orig/debian/patches/libgo-testsuite.diff +++ gcc-7-7.3.0/debian/patches/libgo-testsuite.diff @@ -0,0 +1,70 @@ +# DP: Only run the libgo testsuite for flags configured in RUNTESTFLAGS + +Index: gcc-7-7.2.0/src/libgo/Makefile.am +=================================================================== +--- gcc-7-7.2.0.orig/src/libgo/Makefile.am ++++ gcc-7-7.2.0/src/libgo/Makefile.am +@@ -929,7 +929,7 @@ BUILDGOX = \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` + + GOTESTFLAGS = +-GOBENCH = ++GOBENCH = + + # Check a package. + CHECK = \ +@@ -948,6 +948,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 \ +@@ -963,6 +969,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + # Build all packages before checking any. +Index: gcc-7-7.2.0/src/libgo/Makefile.in +=================================================================== +--- gcc-7-7.2.0.orig/src/libgo/Makefile.in ++++ gcc-7-7.2.0/src/libgo/Makefile.in +@@ -1085,7 +1085,7 @@ BUILDGOX = \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` + + GOTESTFLAGS = +-GOBENCH = ++GOBENCH = + + # Check a package. + CHECK = \ +@@ -1104,6 +1104,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 \ +@@ -1119,6 +1125,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + --- gcc-7-7.3.0.orig/debian/patches/libgomp-kfreebsd-testsuite.diff +++ gcc-7-7.3.0/debian/patches/libgomp-kfreebsd-testsuite.diff @@ -0,0 +1,16 @@ +# DP: Disable lock-2.c test on kfreebsd-* + +Index: b/src/libgomp/testsuite/libgomp.c/lock-2.c +=================================================================== +--- a/src/libgomp/testsuite/libgomp.c/lock-2.c ++++ b/src/libgomp/testsuite/libgomp.c/lock-2.c +@@ -4,6 +4,9 @@ + int + main (void) + { ++#ifdef __FreeBSD_kernel__ ++ return 1; ++#endif + int l = 0; + omp_nest_lock_t lock; + omp_init_nest_lock (&lock); --- gcc-7-7.3.0.orig/debian/patches/libgomp-omp_h-multilib.diff +++ gcc-7-7.3.0/debian/patches/libgomp-omp_h-multilib.diff @@ -0,0 +1,28 @@ +# DP: Fix up omp.h for multilibs. + +2008-06-09 Jakub Jelinek + + * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. + +2015-03-25 Matthias Klose + + * omp.h.in (omp_nest_lock_t): Limit the fix Linux. + +Index: b/src/libgomp/omp.h.in +=================================================================== +--- a/src/libgomp/omp.h.in ++++ b/src/libgomp/omp.h.in +@@ -40,8 +40,13 @@ typedef struct + + typedef struct + { ++#if defined(__linux__) ++ unsigned char _x[8 + sizeof (void *)] ++ __attribute__((__aligned__(sizeof (void *)))); ++#else + unsigned char _x[@OMP_NEST_LOCK_SIZE@] + __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); ++#endif + } omp_nest_lock_t; + #endif + --- gcc-7-7.3.0.orig/debian/patches/libitm-no-fortify-source.diff +++ gcc-7-7.3.0/debian/patches/libitm-no-fortify-source.diff @@ -0,0 +1,19 @@ +# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64. + +Index: b/src/libitm/configure.tgt +=================================================================== +--- a/src/libitm/configure.tgt ++++ b/src/libitm/configure.tgt +@@ -119,6 +119,12 @@ case "${target_cpu}" in + ;; + esac + ++# FIXME: ftbfs with -D_FORTIFY_SOURCE (error: invalid use of '__builtin_va_arg_pack ()) ++case "${target}" in ++ *-*-linux*) ++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE" ++esac ++ + # For the benefit of top-level configure, determine if the cpu is supported. + test -d ${srcdir}/config/$ARCH || UNSUPPORTED=1 + --- gcc-7-7.3.0.orig/debian/patches/libjit-ldflags.diff +++ gcc-7-7.3.0/debian/patches/libjit-ldflags.diff @@ -0,0 +1,13 @@ +Index: b/src/gcc/jit/Make-lang.in +=================================================================== +--- a/src/gcc/jit/Make-lang.in ++++ b/src/gcc/jit/Make-lang.in +@@ -86,7 +86,7 @@ $(LIBGCCJIT_FILENAME): $(jit_OBJS) \ + $(CPPLIB) $(LIBDECNUMBER) $(LIBS) $(BACKENDLIBS) \ + $(EXTRA_GCC_OBJS) \ + -Wl,--version-script=$(srcdir)/jit/libgccjit.map \ +- -Wl,-soname,$(LIBGCCJIT_SONAME) ++ -Wl,-soname,$(LIBGCCJIT_SONAME) $(LDFLAGS) + + $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME) + ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK) --- gcc-7-7.3.0.orig/debian/patches/libphobos-zlib.diff +++ gcc-7-7.3.0/debian/patches/libphobos-zlib.diff @@ -0,0 +1,74 @@ +# 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 +@@ -104,6 +104,7 @@ WITH_LOCAL_DRUNTIME([ + + DRUNTIME_LIBBACKTRACE_SETUP + DRUNTIME_INSTALL_DIRECTORIES ++dnl fake change to regenerate the configure file + + # Add dependencies for libgphobos.spec file + LIBS="$LIBS $LIBADD_DLOPEN" +Index: b/src/libphobos/m4/druntime/libraries.m4 +=================================================================== +--- a/src/libphobos/m4/druntime/libraries.m4 ++++ b/src/libphobos/m4/druntime/libraries.m4 +@@ -39,18 +39,44 @@ AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB], + [ + AC_ARG_WITH(target-system-zlib, + AS_HELP_STRING([--with-target-system-zlib], +- [use installed libz (default: no)])) ++ [use installed libz (default: no)]), ++ [system_zlib=yes],[system_zlib=no]) + +- system_zlib=false +- AS_IF([test "x$with_target_system_zlib" = "xyes"], [ +- AC_CHECK_LIB([z], [deflate], [ +- system_zlib=yes +- ], [ +- AC_MSG_ERROR([System zlib not found])]) +- ], [ +- AC_MSG_CHECKING([for zlib]) +- AC_MSG_RESULT([just compiled]) +- ]) ++ AC_MSG_CHECKING([for system zlib]) ++ save_LIBS=$LIBS ++ LIBS="$LIBS -lz" ++ dnl the link test is not good enough for ARM32 multilib detection, ++ dnl first check to link, then to run ++ AC_LANG_PUSH(C) ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ],[gzopen("none", "rb")])], ++ [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ int main() { ++ gzFile file = gzopen("none", "rb"); ++ return 0; ++ } ++ ]])], ++ [system_zlib_found=yes], ++ [system_zlib_found=no], ++ dnl no system zlib for cross builds ... ++ [system_zlib_found=no] ++ ) ++ ], ++ [system_zlib_found=no]) ++ LIBS=$save_LIBS ++ if test x$system_zlib = xyes; then ++ if test x$system_zlib_found = xyes; then ++ AC_MSG_RESULT([found]) ++ else ++ AC_MSG_RESULT([not found, disabled]) ++ system_zlib=no ++ fi ++ else ++ AC_MSG_RESULT([not enabled]) ++ fi ++ AC_LANG_POP + + AM_CONDITIONAL([DRUNTIME_ZLIB_SYSTEM], [test "$with_target_system_zlib" = yes]) + ]) --- gcc-7-7.3.0.orig/debian/patches/libstdc++-doclink.diff +++ gcc-7-7.3.0/debian/patches/libstdc++-doclink.diff @@ -0,0 +1,74 @@ +# DP: adjust hrefs to point to the local documentation + +--- + libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +Index: b/src/libstdc++-v3/doc/doxygen/mainpage.html +=================================================================== +--- a/src/libstdc++-v3/doc/doxygen/mainpage.html ++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html +@@ -27,10 +27,10 @@ +

Generated on @DATE@.

+ +

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

+ +

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

License, Copyright, and Other Lawyerly Verbosity

+

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

+

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

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

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

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

+\ No newline at end of file ++

+Index: b/src/libstdc++-v3/doc/xml/api.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/api.xml ++++ b/src/libstdc++-v3/doc/xml/api.xml +@@ -40,6 +40,11 @@ + + + ++ The source-level documentation for this release can be viewed offline. ++ ++ ++ ++ + The API documentation, rendered into HTML, can be viewed online + for each GCC release + and --- gcc-7-7.3.0.orig/debian/patches/libstdc++-man-3cxx.diff +++ gcc-7-7.3.0/debian/patches/libstdc++-man-3cxx.diff @@ -0,0 +1,67 @@ +# DP: Install libstdc++ man pages with suffix .3cxx instead of .3 + +Index: b/src/libstdc++-v3/doc/doxygen/user.cfg.in +=================================================================== +--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in ++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in +@@ -1968,7 +1968,7 @@ MAN_OUTPUT = man + # The default value is: .3. + # This tag requires that the tag GENERATE_MAN is set to YES. + +-MAN_EXTENSION = .3 ++MAN_EXTENSION = .3cxx + + # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it + # will generate one additional man file for each entity documented in the real +Index: b/src/libstdc++-v3/scripts/run_doxygen +=================================================================== +--- a/src/libstdc++-v3/scripts/run_doxygen ++++ b/src/libstdc++-v3/scripts/run_doxygen +@@ -243,6 +243,9 @@ fi + if $do_man; then + echo :: + echo :: Fixing up the man pages... ++mkdir -p $outdir/man/man3 ++mv $outdir/man/man3cxx/* $outdir/man/man3/ ++rmdir $outdir/man/man3cxx + cd $outdir/man/man3 + + # File names with embedded spaces (EVIL!) need to be....? renamed or removed? +@@ -264,7 +267,7 @@ rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tc + # and I'm off getting coffee then anyhow, so I didn't care enough to make + # this super-fast. + g++ ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader +-problematic=`egrep -l '#include <.*_.*>' [a-z]*.3` ++problematic=`egrep -l '#include <.*_.*>' [a-z]*.3 [a-z]*.3cxx` + for f in $problematic; do + # this is also slow, but safe and easy to debug + oldh=`sed -n '/fC#include .*/\1/p' $f` +@@ -277,7 +280,7 @@ rm stdheader + # Some of the pages for generated modules have text that confuses certain + # implementations of man(1), e.g. on GNU/Linux. We need to have another + # top-level *roff tag to /stop/ the .SH NAME entry. +-problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` ++problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3cxx` + #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' + + for f in $problematic; do +@@ -291,7 +294,7 @@ a\ + done + + # Also, break this (generated) line up. It's ugly as sin. +-problematic=`grep -l '[^^]Definition at line' *.3` ++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx` + for f in $problematic; do + sed 's/Definition at line/\ + .PP\ +@@ -408,8 +411,8 @@ for f in ios streambuf istream ostream i + istringstream ostringstream stringstream filebuf ifstream \ + ofstream fstream string; + do +- echo ".so man3/std::basic_${f}.3" > std::${f}.3 +- echo ".so man3/std::basic_${f}.3" > std::w${f}.3 ++ echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx ++ echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx + done + + echo :: --- gcc-7-7.3.0.orig/debian/patches/libstdc++-no-testsuite.diff +++ gcc-7-7.3.0/debian/patches/libstdc++-no-testsuite.diff @@ -0,0 +1,12 @@ +# DP: Don't run the libstdc++ testsuite on arm, hppa and mipsel (timeouts on the buildds) + +--- a/src/libstdc++-v3/testsuite/Makefile.in ++++ b/src/libstdc++-v3/testsuite/Makefile.in +@@ -567,6 +567,7 @@ + + # Run the testsuite in normal mode. + check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp ++ case "$(target)" in arm*|hppa*|mipsel*) exit 0;; esac; \ + $(if $*,@)AR="$(AR)"; export AR; \ + RANLIB="$(RANLIB)"; export RANLIB; \ + if [ -z "$*" ] && [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \ --- gcc-7-7.3.0.orig/debian/patches/libstdc++-nothumb-check.diff +++ gcc-7-7.3.0/debian/patches/libstdc++-nothumb-check.diff @@ -0,0 +1,38 @@ +# DP: Don't run the libstdc++-v3 testsuite in thumb mode on armel + +Index: testsuite/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/testsuite/Makefile.in (revision 156820) ++++ b/src/libstdc++-v3/testsuite/Makefile.in (working copy) +@@ -583,6 +583,8 @@ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-marm/-marm/'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + if [ -z "$$runtest" ]; then runtest=runtest; fi; \ + tool=libstdc++; \ + dirs=; \ +@@ -590,7 +592,7 @@ + normal0) \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) abi.exp; \ ++ $$runtestflags abi.exp; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi; \ + dirs="`cd $$srcdir; echo [013-9][0-9]_*/* [abep]*/*`";; \ +@@ -605,11 +607,11 @@ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + if [ -n "$$dirs" ]; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) \ ++ $$runtestflags \ + "conformance.exp=`echo $$dirs | sed 's/ /* /g;s/$$/*/'`"; \ + else \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS); \ ++ $$runtestflags; \ + fi; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi --- gcc-7-7.3.0.orig/debian/patches/libstdc++-pic.diff +++ gcc-7-7.3.0/debian/patches/libstdc++-pic.diff @@ -0,0 +1,95 @@ +# DP: Build and install libstdc++_pic.a library. + +Index: b/src/libstdc++-v3/src/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -311,10 +311,12 @@ if GLIBCXX_BUILD_DEBUG + STAMP_DEBUG = build-debug + STAMP_INSTALL_DEBUG = install-debug + CLEAN_DEBUG = debug ++STAMP_INSTALL_PIC = install-pic + else + STAMP_DEBUG = + STAMP_INSTALL_DEBUG = + CLEAN_DEBUG = ++STAMP_INSTALL_PIC = + endif + + # Build a debug variant. +@@ -349,6 +351,7 @@ build-debug: stamp-debug + mv Makefile Makefile.tmp; \ + sed -e 's,all-local: all-once,all-local:,' \ + -e 's,install-data-local: install-data-once,install-data-local:,' \ ++ -e 's,install-exec-local:.*,install-exec-local:,' \ + -e '/vpath/!s,src/c,src/debug/c,' \ + < Makefile.tmp > Makefile ; \ + rm -f Makefile.tmp ; \ +@@ -359,3 +362,8 @@ build-debug: stamp-debug + install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; ++ ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a +Index: b/src/libstdc++-v3/src/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -534,6 +534,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. +@@ -832,7 +834,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 + +@@ -883,11 +885,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 \ +@@ -1020,6 +1022,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 ; \ +@@ -1031,6 +1034,11 @@ install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; + ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: --- gcc-7-7.3.0.orig/debian/patches/libstdc++-r250464.diff +++ gcc-7-7.3.0/debian/patches/libstdc++-r250464.diff @@ -0,0 +1,267 @@ +# DP: Backport r250464 from the trunk (mersenne twister for AArch64) + + +libstdc++-v3/ + +2017-07-23 Michael Collison + + Add optimized implementation of mersenne twister for aarch64 + * config/cpu/aarch64/opt/ext/opt_random.h: New file. + (__arch64_recursion): New function. + (__aarch64_lsr_128): New function. + (__aarch64_lsl_128): New function. + (operator==): New function. + (simd_fast_mersenne_twister_engine): Implement + method _M_gen_rand. + * config/cpu/aarch64/opt/bits/opt_random.h: New file. + * include/ext/random: (simd_fast_mersenne_twister_engine): + add _M_state private array. + + +--- a/src/libstdc++-v3/include/ext/random ++++ b/src/libstdc++-v3/include/ext/random +@@ -184,6 +184,11 @@ + #ifdef __SSE2__ + __m128i _M_state[_M_nstate]; + #endif ++#ifdef __ARM_NEON ++#ifdef __aarch64__ ++ __Uint32x4_t _M_state[_M_nstate]; ++#endif ++#endif + uint32_t _M_state32[_M_nstate32]; + result_type _M_stateT[state_size]; + } __attribute__ ((__aligned__ (16))); +--- a/src/libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h ++++ b/src/libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h +@@ -0,0 +1,180 @@ ++// Optimizations for random number extensions, aarch64 version -*- C++ -*- ++ ++// Copyright (C) 2017 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. ++ ++// 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 ++// . ++ ++/** @file ext/random.tcc ++ * This is an internal header file, included by other library headers. ++ * Do not attempt to use it directly. @headername{ext/random} ++ */ ++ ++#ifndef _EXT_OPT_RANDOM_H ++#define _EXT_OPT_RANDOM_H 1 ++ ++#pragma GCC system_header ++ ++#ifdef __ARM_NEON ++ ++#ifdef __AARCH64EB__ ++# define __VEXT(_A,_B,_C) __builtin_shuffle (_A, _B, (__Uint8x16_t) \ ++ {16-_C, 17-_C, 18-_C, 19-_C, 20-_C, 21-_C, 22-_C, 23-_C, \ ++ 24-_C, 25-_C, 26-_C, 27-_C, 28-_C, 29-_C, 30-_C, 31-_C}) ++#else ++# define __VEXT(_A,_B,_C) __builtin_shuffle (_B, _A, (__Uint8x16_t) \ ++ {_C, _C+1, _C+2, _C+3, _C+4, _C+5, _C+6, _C+7, \ ++ _C+8, _C+9, _C+10, _C+11, _C+12, _C+13, _C+14, _C+15}) ++#endif ++ ++namespace __gnu_cxx _GLIBCXX_VISIBILITY (default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ namespace { ++ // Logical Shift right 128-bits by c * 8 bits ++ ++ __extension__ extern __inline __Uint32x4_t ++ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++ __aarch64_lsr_128 (__Uint8x16_t __a, __const int __c) ++ { ++ const __Uint8x16_t __zero = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ ++ return (__Uint32x4_t) __VEXT (__zero, __a, __c); ++ } ++ ++ // Logical Shift left 128-bits by c * 8 bits ++ ++ __extension__ extern __inline __Uint32x4_t ++ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++ __aarch64_lsl_128 (__Uint8x16_t __a, __const int __c) ++ { ++ const __Uint8x16_t __zero = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ ++ return (__Uint32x4_t) __VEXT (__a, __zero, 16 - __c); ++ } ++ ++ template ++ inline __Uint32x4_t __aarch64_recursion (__Uint32x4_t __a, ++ __Uint32x4_t __b, ++ __Uint32x4_t __c, ++ __Uint32x4_t __d, ++ __Uint32x4_t __e) ++ { ++ __Uint32x4_t __y = (__b >> __sr1); ++ __Uint32x4_t __z = __aarch64_lsr_128 ((__Uint8x16_t) __c, __sr2); ++ ++ __Uint32x4_t __v = __d << __sl1; ++ ++ __z = __z ^ __a; ++ __z = __z ^ __v; ++ ++ __Uint32x4_t __x = __aarch64_lsl_128 ((__Uint8x16_t) __a, __sl2); ++ ++ __y = __y & __e; ++ __z = __z ^ __x; ++ return __z ^ __y; ++ } ++} ++ ++#define _GLIBCXX_OPT_HAVE_RANDOM_SFMT_GEN_READ 1 ++ template ++ void simd_fast_mersenne_twister_engine<_UIntType, __m, ++ __pos1, __sl1, __sl2, __sr1, __sr2, ++ __msk1, __msk2, __msk3, __msk4, ++ __parity1, __parity2, __parity3, ++ __parity4>:: ++ _M_gen_rand (void) ++ { ++ __Uint32x4_t __r1 = _M_state[_M_nstate - 2]; ++ __Uint32x4_t __r2 = _M_state[_M_nstate - 1]; ++ ++ __Uint32x4_t __aData = {__msk1, __msk2, __msk3, __msk4}; ++ ++ size_t __i; ++ for (__i = 0; __i < _M_nstate - __pos1; ++__i) ++ { ++ __Uint32x4_t __r = __aarch64_recursion<__sl1, __sl2, __sr1, __sr2> ++ (_M_state[__i], _M_state[__i + __pos1], __r1, __r2, __aData); ++ ++ _M_state[__i] = __r; ++ ++ __r1 = __r2; ++ __r2 = __r; ++ } ++ for (; __i < _M_nstate; ++__i) ++ { ++ __Uint32x4_t __r = __aarch64_recursion<__sl1, __sl2, __sr1, __sr2> ++ (_M_state[__i], _M_state[__i + __pos1 - _M_nstate], __r1, __r2, ++ __aData); ++ ++ _M_state[__i] = __r; ++ ++ __r1 = __r2; ++ __r2 = __r; ++ } ++ ++ _M_pos = 0; ++ } ++ ++ ++#define _GLIBCXX_OPT_HAVE_RANDOM_SFMT_OPERATOREQUAL 1 ++ template ++ bool ++ operator==(const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, ++ __m, __pos1, __sl1, __sl2, __sr1, __sr2, ++ __msk1, __msk2, __msk3, __msk4, ++ __parity1, __parity2, __parity3, __parity4>& __lhs, ++ const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, ++ __m, __pos1, __sl1, __sl2, __sr1, __sr2, ++ __msk1, __msk2, __msk3, __msk4, ++ __parity1, __parity2, __parity3, __parity4>& __rhs) ++ { ++ if (__lhs._M_pos != __rhs._M_pos) ++ return false; ++ ++ __Uint32x4_t __res = __lhs._M_state[0] ^ __rhs._M_state[0]; ++ ++ for (size_t __i = 1; __i < __lhs._M_nstate; ++__i) ++ __res |= __lhs._M_state[__i] ^ __rhs._M_state[__i]; ++ ++ return (__int128) __res == 0; ++ } ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++ } // namespace ++ ++#endif // __ARM_NEON ++ ++#endif // _EXT_OPT_RANDOM_H +--- a/src/libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h ++++ b/src/libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h +@@ -0,0 +1,47 @@ ++// Optimizations for random number functions, aarch64 version -*- C++ -*- ++ ++// Copyright (C) 2017 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. ++ ++// 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 ++// . ++ ++/** @file bits/opt_random.h ++ * This is an internal header file, included by other library headers. ++ * Do not attempt to use it directly. @headername{random} ++ */ ++ ++#ifndef _BITS_OPT_RANDOM_H ++#define _BITS_OPT_RANDOM_H 1 ++ ++#pragma GCC system_header ++ ++ ++namespace std _GLIBCXX_VISIBILITY (default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ ++ ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace ++ ++ ++#endif // _BITS_OPT_RANDOM_H --- gcc-7-7.3.0.orig/debian/patches/libstdc++-test-installed.diff +++ gcc-7-7.3.0/debian/patches/libstdc++-test-installed.diff @@ -0,0 +1,78 @@ +# DP: Add support to run the libstdc++-v3 testsuite using the +# DP: installed shared libraries. + +Index: b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +=================================================================== +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -37,6 +37,12 @@ + # the last thing before testing begins. This can be defined in, e.g., + # ~/.dejagnurc or $DEJAGNU. + ++set test_installed 0 ++if [info exists env(TEST_INSTALLED)] { ++ verbose -log "test installed libstdc++-v3" ++ set test_installed 1 ++} ++ + proc load_gcc_lib { filename } { + global srcdir loaded_libs + +@@ -101,6 +107,7 @@ proc libstdc++_init { testfile } { + global tool_timeout + global DEFAULT_CXXFLAGS + global STATIC_LIBCXXFLAGS ++ global test_installed + + # We set LC_ALL and LANG to C so that we get the same error + # messages as expected. +@@ -120,6 +127,9 @@ proc libstdc++_init { testfile } { + + set blddir [lookfor_file [get_multilibs] libstdc++-v3] + set flags_file "${blddir}/scripts/testsuite_flags" ++ if {$test_installed} { ++ set flags_file "${blddir}/scripts/testsuite_flags.installed" ++ } + set shlib_ext [get_shlib_extension] + v3track flags_file 2 + +@@ -154,7 +164,11 @@ proc libstdc++_init { testfile } { + + # Locate libgcc.a so we don't need to account for different values of + # SHLIB_EXT on different platforms +- set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ if {$test_installed} { ++ set gccdir "" ++ } else { ++ set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ } + if {$gccdir != ""} { + set gccdir [file dirname $gccdir] + append ld_library_path_tmp ":${gccdir}" +@@ -163,7 +177,11 @@ proc libstdc++_init { testfile } { + + # Locate libgomp. This is only required for parallel mode. + set v3-libgomp 0 +- set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ if {$test_installed} { ++ set libgompdir "" ++ } else { ++ set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ } + if {$libgompdir != ""} { + set v3-libgomp 1 + set libgompdir [file dirname $libgompdir] +@@ -185,7 +203,12 @@ proc libstdc++_init { testfile } { + + # Locate libstdc++ shared library. (ie libstdc++.so.) + set v3-sharedlib 0 +- set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ if {$test_installed} { ++ set sharedlibdir "" ++ set v3-sharedlib 1 ++ } else { ++ set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ } + if {$sharedlibdir != ""} { + if { ([string match "*-*-gnu*" $target_triplet] + || [string match "*-*-linux*" $target_triplet] --- gcc-7-7.3.0.orig/debian/patches/linaro-issue2575.diff +++ gcc-7-7.3.0/debian/patches/linaro-issue2575.diff @@ -0,0 +1,16 @@ +# DP: Fix ICE in tree_to_shwi, Linaro issue #2575. + +--- a/src/gcc/varasm.c ++++ b/src/gcc/varasm.c +@@ -6777,8 +6777,9 @@ + anchor range to reduce the amount of instructions require to refer + to the entire declaration. */ + if (decl && DECL_SIZE (decl) +- && tree_to_shwi (DECL_SIZE (decl)) +- >= (targetm.max_anchor_offset * BITS_PER_UNIT)) ++ && (!tree_fits_shwi_p (DECL_SIZE (decl)) ++ || tree_to_shwi (DECL_SIZE (decl)) ++ >= (targetm.max_anchor_offset * BITS_PER_UNIT))) + return false; + + } --- gcc-7-7.3.0.orig/debian/patches/note-gnu-stack.diff +++ gcc-7-7.3.0/debian/patches/note-gnu-stack.diff @@ -0,0 +1,139 @@ +# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc +# DP: Taken from FC. + +gcc/ + +2004-09-20 Jakub Jelinek + + * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also + on ppc64-linux. + + * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on + ia64-linux. + * config/ia64/crtbegin.asm: Likewise. + * config/ia64/crtend.asm: Likewise. + * config/ia64/crti.asm: Likewise. + * config/ia64/crtn.asm: Likewise. + +2004-05-14 Jakub Jelinek + + * config/ia64/linux.h (TARGET_ASM_FILE_END): Define. + +libffi/ + +2007-05-11 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2005-02-08 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + +--- + gcc/config/ia64/linux.h | 3 +++ + gcc/config/rs6000/ppc-asm.h | 2 +- + libgcc/config/ia64/crtbegin.S | 4 ++++ + libgcc/config/ia64/crtend.S | 4 ++++ + libgcc/config/ia64/crti.S | 4 ++++ + libgcc/config/ia64/crtn.S | 4 ++++ + libgcc/config/ia64/lib1funcs.S | 4 ++++ + 9 files changed, 39 insertions(+), 13 deletions(-) + +Index: b/src/libgcc/config/ia64/crtbegin.S +=================================================================== +--- a/src/libgcc/config/ia64/crtbegin.S ++++ b/src/libgcc/config/ia64/crtbegin.S +@@ -185,3 +185,7 @@ __do_global_dtors_aux: + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +Index: b/src/libgcc/config/ia64/crtend.S +=================================================================== +--- a/src/libgcc/config/ia64/crtend.S ++++ b/src/libgcc/config/ia64/crtend.S +@@ -114,3 +114,7 @@ __do_global_ctors_aux: + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +Index: b/src/libgcc/config/ia64/crti.S +=================================================================== +--- a/src/libgcc/config/ia64/crti.S ++++ b/src/libgcc/config/ia64/crti.S +@@ -51,3 +51,7 @@ _fini: + .body + + # end of crti.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +Index: b/src/libgcc/config/ia64/crtn.S +=================================================================== +--- a/src/libgcc/config/ia64/crtn.S ++++ b/src/libgcc/config/ia64/crtn.S +@@ -41,3 +41,7 @@ + br.ret.sptk.many b0 + + # end of crtn.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +Index: b/src/libgcc/config/ia64/lib1funcs.S +=================================================================== +--- a/src/libgcc/config/ia64/lib1funcs.S ++++ b/src/libgcc/config/ia64/lib1funcs.S +@@ -793,3 +793,7 @@ __floattitf: + .endp __floattitf + #endif + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +Index: b/src/gcc/config/ia64/linux.h +=================================================================== +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -79,5 +79,8 @@ do { \ + #undef TARGET_INIT_LIBFUNCS + #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs + ++#undef TARGET_ASM_FILE_END ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ + /* Define this to be nonzero if static stack checking is supported. */ + #define STACK_CHECK_STATIC_BUILTIN 1 +Index: b/src/gcc/config/rs6000/ppc-asm.h +=================================================================== +--- a/src/gcc/config/rs6000/ppc-asm.h ++++ b/src/gcc/config/rs6000/ppc-asm.h +@@ -375,7 +375,7 @@ GLUE(.L,name): \ + #endif + #endif + +-#if defined __linux__ && !defined __powerpc64__ ++#if defined __linux__ + .section .note.GNU-stack + .previous + #endif --- gcc-7-7.3.0.orig/debian/patches/powerpc_nofprs.diff +++ gcc-7-7.3.0/debian/patches/powerpc_nofprs.diff @@ -0,0 +1,85 @@ +Index: b/src/libgcc/config/rs6000/crtsavfpr.S +=================================================================== +--- a/src/libgcc/config/rs6000/crtsavfpr.S ++++ b/src/libgcc/config/rs6000/crtsavfpr.S +@@ -32,6 +32,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 */ +@@ -78,3 +79,4 @@ FUNC_END(_savefpr_14) + CFI_ENDPROC + + #endif ++#endif +Index: b/src/libgcc/config/rs6000/crtresfpr.S +=================================================================== +--- a/src/libgcc/config/rs6000/crtresfpr.S ++++ b/src/libgcc/config/rs6000/crtresfpr.S +@@ -32,6 +32,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 */ +@@ -78,3 +79,4 @@ FUNC_END(_restfpr_14) + CFI_ENDPROC + + #endif ++#endif +Index: b/src/libgcc/config/rs6000/crtresxfpr.S +=================================================================== +--- a/src/libgcc/config/rs6000/crtresxfpr.S ++++ b/src/libgcc/config/rs6000/crtresxfpr.S +@@ -32,6 +32,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 */ +@@ -123,3 +124,4 @@ FUNC_END(_restfpr_14_x) + CFI_ENDPROC + + #endif ++#endif +Index: b/src/libgcc/config/rs6000/crtsavevr.S +=================================================================== +--- a/src/libgcc/config/rs6000/crtsavevr.S ++++ b/src/libgcc/config/rs6000/crtsavevr.S +@@ -24,6 +24,7 @@ + + /* On PowerPC64 Linux, these functions are provided by the linker. */ + #ifndef __powerpc64__ ++#ifndef __NO_FPRS__ + + #undef __ALTIVEC__ + #define __ALTIVEC__ 1 +@@ -86,3 +87,4 @@ FUNC_END(_savevr_20) + CFI_ENDPROC + + #endif ++#endif +Index: b/src/libgcc/config/rs6000/crtrestvr.S +=================================================================== +--- a/src/libgcc/config/rs6000/crtrestvr.S ++++ b/src/libgcc/config/rs6000/crtrestvr.S +@@ -24,6 +24,7 @@ + + /* On PowerPC64 Linux, these functions are provided by the linker. */ + #ifndef __powerpc64__ ++#ifndef __NO_FPRS__ + + #undef __ALTIVEC__ + #define __ALTIVEC__ 1 +@@ -86,3 +87,4 @@ FUNC_END(_restvr_20) + CFI_ENDPROC + + #endif ++#endif --- gcc-7-7.3.0.orig/debian/patches/powerpc_remove_many.diff +++ gcc-7-7.3.0/debian/patches/powerpc_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/rs6000/rs6000.h ++++ b/src/gcc/config/rs6000/rs6000.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-rs6000.c to + provide the default assembler options if the user uses -mcpu=native, so if +@@ -175,7 +181,8 @@ + %{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \ + %{mpower8-vector|mcrypto|mdirect-move|mhtm: %{!mcpu*: %(asm_cpu_power8)}} \ + %{mpower9-vector: %{!mcpu*|mcpu=power8: %(asm_cpu_power9)}} \ +--many" ++" \ ++ASM_CPU_SPU_MANY_NOT_SPE + + #define CPP_DEFAULT_SPEC "" + --- gcc-7-7.3.0.orig/debian/patches/pr39491.diff +++ gcc-7-7.3.0/debian/patches/pr39491.diff @@ -0,0 +1,132 @@ +# DP: Proposed patch for PR libstdc++/39491. + +2009-04-16 Benjamin Kosnik + + * src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only. + +Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc +=================================================================== +--- a/src/libstdc++-v3/src/math_stubs_long_double.cc (revision 146216) ++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc (working copy) +@@ -213,4 +221,111 @@ + return tanh((double) x); + } + #endif ++ ++ // From libmath/signbitl.c ++ // XXX ABI mistakenly exported ++#if defined (__hppa__) && defined (__linux__) ++# include ++# include ++ ++typedef unsigned int U_int32_t __attribute ((mode (SI))); ++typedef int Int32_t __attribute ((mode (SI))); ++typedef unsigned int U_int64_t __attribute ((mode (DI))); ++typedef int Int64_t __attribute ((mode (DI))); ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ U_int32_t msw; ++ U_int32_t lsw; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int32_t lsw; ++ U_int32_t msw; ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++ ++/* Get int from the exponent of a long double. */ ++#define GET_LDOUBLE_EXP(exp,d) \ ++do { \ ++ ieee_long_double_shape_type ge_u; \ ++ ge_u.value = (d); \ ++ (exp) = ge_u.parts.sign_exponent; \ ++} while (0) ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t msw; ++ U_int64_t lsw; ++ } parts64; ++ struct ++ { ++ U_int32_t w0, w1, w2, w3; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t lsw; ++ U_int64_t msw; ++ } parts64; ++ struct ++ { ++ U_int32_t w3, w2, w1, w0; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++/* Get most significant 64 bit int from a quad long double. */ ++#define GET_LDOUBLE_MSW64(msw,d) \ ++do { \ ++ ieee_quad_double_shape_type qw_u; \ ++ qw_u.value = (d); \ ++ (msw) = qw_u.parts64.msw; \ ++} while (0) ++ ++int ++__signbitl (long double x) ++{ ++#if LDBL_MANT_DIG == 113 ++ Int64_t msw; ++ ++ GET_LDOUBLE_MSW64 (msw, x); ++ return msw < 0; ++#else ++ Int32_t e; ++ ++ GET_LDOUBLE_EXP (e, x); ++ return e & 0x8000; ++#endif ++} ++#endif ++ ++#ifndef _GLIBCXX_HAVE___SIGNBITL ++ ++#endif + } // extern "C" +--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~ 2009-04-10 01:23:07.000000000 +0200 ++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver 2009-04-21 16:24:24.000000000 +0200 +@@ -635,6 +635,7 @@ + sqrtf; + sqrtl; + copysignf; ++ __signbitl; + + # GLIBCXX_ABI compatibility only. + # std::string --- gcc-7-7.3.0.orig/debian/patches/pr47818.diff +++ gcc-7-7.3.0/debian/patches/pr47818.diff @@ -0,0 +1,26 @@ +Description: allow pragma Assert with No_Implementation_Pragmas restriction. +Author: Eugeniy Meshcheryakov +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47818 + +Index: b/src/gcc/ada/sem_prag.adb +=================================================================== +--- a/src/gcc/ada/sem_prag.adb ++++ b/src/gcc/ada/sem_prag.adb +@@ -16864,7 +16864,16 @@ package body Sem_Prag is + Typ_Arg : Node_Id; + + begin +- GNAT_Pragma; ++ -- This could be a rewritten pragma Assert. If it is the case ++ -- then don't check restrictions, because they are different for ++ -- pragma Assert and were already checked. ++ ++ if Nkind (Original_Node (N)) /= N_Pragma ++ or else Pragma_Name (Original_Node (N)) /= Name_Assert ++ then ++ GNAT_Pragma; ++ end if; ++ + Check_At_Least_N_Arguments (2); + Check_At_Most_N_Arguments (3); + Check_Optional_Identifier (Arg1, Name_Entity); --- gcc-7-7.3.0.orig/debian/patches/pr66368.diff +++ gcc-7-7.3.0/debian/patches/pr66368.diff @@ -0,0 +1,26 @@ +# DP: PR go/66368, build libgo with -fno-stack-protector + +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -41,6 +41,7 @@ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIB + ACLOCAL_AMFLAGS = -I ./config -I ../config + + AM_CFLAGS = -fexceptions -fnon-call-exceptions -fplan9-extensions \ ++ -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 +@@ -458,6 +458,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 -fplan9-extensions \ ++ -fno-stack-protector \ + $(SPLIT_STACK) $(WARN_CFLAGS) \ + $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ + -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ --- gcc-7-7.3.0.orig/debian/patches/pr67165.diff +++ gcc-7-7.3.0/debian/patches/pr67165.diff @@ -0,0 +1,2503 @@ +# DP: Fix PR other/67165, libbacktrace support for compressed debug sections + +2017-09-28 Ian Lance Taylor + + PR other/67165 + * elf.c (__builtin_prefetch): Define if not __GNUC__. + (unlikely): Define. + (SHF_UNCOMPRESSED, ELFCOMPRESS_ZLIB): Define. + (b_elf_chdr): Define type. + (enum debug_section): Add ZDEBUG_xxx values. + (debug_section_names): Add names for new sections. + (struct debug_section_info): Add compressed field. + (elf_zlib_failed, elf_zlib_fetch): New static functions. + (HUFFMAN_TABLE_SIZE, HUFFMAN_VALUE_MASK): Define. + (HUFFMAN_BITS_SHIFT, HUFFMAN_BITS_MASK): Define. + (HUFFMAN_SECONDARY_SHIFT): Define. + (ZDEBUG_TABLE_SIZE): Define. + (ZDEBUG_TABLE_CODELEN_OFFSET, ZDEBUG_TABLE_WORK_OFFSET): Define. + (final_next_secondary): New static variable if + BACKTRACE_GENERATE_FIXED_HUFFMAN_TABLE. + (elf_zlib_inflate_table): New static function. + (BACKTRACE_GENERATE_FIXED_HUFFMAN_TABLE): If define, define main + function to produce fixed Huffman table. + (elf_zlib_default_table): New static variable. + (elf_zlib_inflate): New static function. + (elf_zlib_verify_checksum): Likewise. + (elf_zlib_inflate_and_verify): Likewise. + (elf_uncompress_zdebug): Likewise. + (elf_uncompress_chdr): Likewise. + (backtrace_uncompress_zdebug): New extern function. + (elf_add): Look for .zdebug sections and SHF_COMPRESSED debug + sections, and uncompress them. + * internal.h (backtrace_compress_zdebug): Declare. + * ztest.c: New file. + * configure.ac: Check for -lz and check whether the linker + supports --compress-debug-sections. + * Makefile.am (ztest_SOURCES): New variable. + (ztest_CFLAGS, ztest_LDADD): New variables. + (check_PROGRAMS): Add ztest. + (ctestg_SOURCES): New variable. + (ctestg_CFLAGS, ctestg_LDFLAGS, ctestg_LDADD): New variables. + (ctesta_SOURCES): New variable. + (ctesta_CFLAGS, ctesta_LDFLAGS, ctesta_LDADD): New variables. + (check_PROGRAMS): Add ctestg and ctesta. + * configure, config.h.in, Makefile.in: Rebuild. + +Index: b/src/libbacktrace/Makefile.in +=================================================================== +--- a/src/libbacktrace/Makefile.in ++++ b/src/libbacktrace/Makefile.in +@@ -16,7 +16,7 @@ + @SET_MAKE@ + + # Makefile.am -- Backtrace Makefile. +-# Copyright (C) 2012-2016 Free Software Foundation, Inc. ++# Copyright (C) 2012-2017 Free Software Foundation, Inc. + + # Redistribution and use in source and binary forms, with or without + # modification, are permitted provided that the following conditions are +@@ -83,9 +83,11 @@ POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ + target_triplet = @target@ +-check_PROGRAMS = $(am__EXEEXT_1) +-@NATIVE_TRUE@am__append_1 = btest stest +-@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_2 = dtest ++check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) ++@NATIVE_TRUE@am__append_1 = btest stest ztest ++@HAVE_ZLIB_TRUE@@NATIVE_TRUE@am__append_2 = -lz ++@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_3 = dtest ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am__append_4 = ctestg ctesta + subdir = . + DIST_COMMON = README ChangeLog $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/configure \ +@@ -114,16 +116,44 @@ am__DEPENDENCIES_1 = + am_libbacktrace_la_OBJECTS = atomic.lo dwarf.lo fileline.lo posix.lo \ + print.lo sort.lo state.lo + libbacktrace_la_OBJECTS = $(am_libbacktrace_la_OBJECTS) +-@NATIVE_TRUE@am__EXEEXT_1 = btest$(EXEEXT) stest$(EXEEXT) ++@NATIVE_TRUE@am__EXEEXT_1 = btest$(EXEEXT) stest$(EXEEXT) \ ++@NATIVE_TRUE@ ztest$(EXEEXT) ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am__EXEEXT_2 = \ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctestg$(EXEEXT) \ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctesta$(EXEEXT) + @NATIVE_TRUE@am_btest_OBJECTS = btest-btest.$(OBJEXT) + btest_OBJECTS = $(am_btest_OBJECTS) + @NATIVE_TRUE@btest_DEPENDENCIES = libbacktrace.la + btest_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(btest_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am_ctesta_OBJECTS = ctesta-btest.$(OBJEXT) \ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctesta-testlib.$(OBJEXT) ++ctesta_OBJECTS = $(am_ctesta_OBJECTS) ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_DEPENDENCIES = \ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ libbacktrace.la ++ctesta_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(ctesta_CFLAGS) $(CFLAGS) \ ++ $(ctesta_LDFLAGS) $(LDFLAGS) -o $@ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@am_ctestg_OBJECTS = ctestg-btest.$(OBJEXT) \ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ ctestg-testlib.$(OBJEXT) ++ctestg_OBJECTS = $(am_ctestg_OBJECTS) ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctestg_DEPENDENCIES = \ ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ libbacktrace.la ++ctestg_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(ctestg_CFLAGS) $(CFLAGS) \ ++ $(ctestg_LDFLAGS) $(LDFLAGS) -o $@ + @NATIVE_TRUE@am_stest_OBJECTS = stest.$(OBJEXT) + stest_OBJECTS = $(am_stest_OBJECTS) + @NATIVE_TRUE@stest_DEPENDENCIES = libbacktrace.la ++@NATIVE_TRUE@am_ztest_OBJECTS = ztest-ztest.$(OBJEXT) \ ++@NATIVE_TRUE@ ztest-testlib.$(OBJEXT) ++ztest_OBJECTS = $(am_ztest_OBJECTS) ++@NATIVE_TRUE@ztest_DEPENDENCIES = libbacktrace.la \ ++@NATIVE_TRUE@ $(am__DEPENDENCIES_1) ++ztest_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(ztest_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ + DEFAULT_INCLUDES = -I.@am__isrc@ + depcomp = + am__depfiles_maybe = +@@ -137,7 +167,8 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLF + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ + SOURCES = $(libbacktrace_la_SOURCES) $(EXTRA_libbacktrace_la_SOURCES) \ +- $(btest_SOURCES) $(stest_SOURCES) ++ $(btest_SOURCES) $(ctesta_SOURCES) $(ctestg_SOURCES) \ ++ $(stest_SOURCES) $(ztest_SOURCES) + MULTISRCTOP = + MULTIBUILDTOP = + MULTIDIRS = +@@ -326,12 +357,23 @@ libbacktrace_la_LIBADD = \ + $(ALLOC_FILE) + + libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD) +-TESTS = $(check_PROGRAMS) $(am__append_2) ++TESTS = $(check_PROGRAMS) $(am__append_3) + @NATIVE_TRUE@btest_SOURCES = btest.c + @NATIVE_TRUE@btest_CFLAGS = $(AM_CFLAGS) -g -O + @NATIVE_TRUE@btest_LDADD = libbacktrace.la + @NATIVE_TRUE@stest_SOURCES = stest.c + @NATIVE_TRUE@stest_LDADD = libbacktrace.la ++@NATIVE_TRUE@ztest_SOURCES = ztest.c testlib.c ++@NATIVE_TRUE@ztest_CFLAGS = -DSRCDIR=\"$(srcdir)\" ++@NATIVE_TRUE@ztest_LDADD = libbacktrace.la $(am__append_2) ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctestg_SOURCES = btest.c testlib.c ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctestg_CFLAGS = $(AM_CFLAGS) -g ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctestg_LDFLAGS = -Wl,--compress-debug-sections=zlib-gnu ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctestg_LDADD = libbacktrace.la ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_SOURCES = btest.c testlib.c ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_CFLAGS = $(AM_CFLAGS) -g ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_LDFLAGS = -Wl,--compress-debug-sections=zlib-gabi ++@HAVE_COMPRESSED_DEBUG_TRUE@@NATIVE_TRUE@ctesta_LDADD = libbacktrace.la + + # We can't use automake's automatic dependency tracking, because it + # breaks when using bootstrap-lean. Automatic dependency tracking +@@ -424,9 +466,18 @@ clean-checkPROGRAMS: + btest$(EXEEXT): $(btest_OBJECTS) $(btest_DEPENDENCIES) $(EXTRA_btest_DEPENDENCIES) + @rm -f btest$(EXEEXT) + $(btest_LINK) $(btest_OBJECTS) $(btest_LDADD) $(LIBS) ++ctesta$(EXEEXT): $(ctesta_OBJECTS) $(ctesta_DEPENDENCIES) $(EXTRA_ctesta_DEPENDENCIES) ++ @rm -f ctesta$(EXEEXT) ++ $(ctesta_LINK) $(ctesta_OBJECTS) $(ctesta_LDADD) $(LIBS) ++ctestg$(EXEEXT): $(ctestg_OBJECTS) $(ctestg_DEPENDENCIES) $(EXTRA_ctestg_DEPENDENCIES) ++ @rm -f ctestg$(EXEEXT) ++ $(ctestg_LINK) $(ctestg_OBJECTS) $(ctestg_LDADD) $(LIBS) + stest$(EXEEXT): $(stest_OBJECTS) $(stest_DEPENDENCIES) $(EXTRA_stest_DEPENDENCIES) + @rm -f stest$(EXEEXT) + $(LINK) $(stest_OBJECTS) $(stest_LDADD) $(LIBS) ++ztest$(EXEEXT): $(ztest_OBJECTS) $(ztest_DEPENDENCIES) $(EXTRA_ztest_DEPENDENCIES) ++ @rm -f ztest$(EXEEXT) ++ $(ztest_LINK) $(ztest_OBJECTS) $(ztest_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -449,6 +500,42 @@ btest-btest.o: btest.c + btest-btest.obj: btest.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(btest_CFLAGS) $(CFLAGS) -c -o btest-btest.obj `if test -f 'btest.c'; then $(CYGPATH_W) 'btest.c'; else $(CYGPATH_W) '$(srcdir)/btest.c'; fi` + ++ctesta-btest.o: btest.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctesta_CFLAGS) $(CFLAGS) -c -o ctesta-btest.o `test -f 'btest.c' || echo '$(srcdir)/'`btest.c ++ ++ctesta-btest.obj: btest.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctesta_CFLAGS) $(CFLAGS) -c -o ctesta-btest.obj `if test -f 'btest.c'; then $(CYGPATH_W) 'btest.c'; else $(CYGPATH_W) '$(srcdir)/btest.c'; fi` ++ ++ctesta-testlib.o: testlib.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctesta_CFLAGS) $(CFLAGS) -c -o ctesta-testlib.o `test -f 'testlib.c' || echo '$(srcdir)/'`testlib.c ++ ++ctesta-testlib.obj: testlib.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctesta_CFLAGS) $(CFLAGS) -c -o ctesta-testlib.obj `if test -f 'testlib.c'; then $(CYGPATH_W) 'testlib.c'; else $(CYGPATH_W) '$(srcdir)/testlib.c'; fi` ++ ++ctestg-btest.o: btest.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctestg_CFLAGS) $(CFLAGS) -c -o ctestg-btest.o `test -f 'btest.c' || echo '$(srcdir)/'`btest.c ++ ++ctestg-btest.obj: btest.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctestg_CFLAGS) $(CFLAGS) -c -o ctestg-btest.obj `if test -f 'btest.c'; then $(CYGPATH_W) 'btest.c'; else $(CYGPATH_W) '$(srcdir)/btest.c'; fi` ++ ++ctestg-testlib.o: testlib.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctestg_CFLAGS) $(CFLAGS) -c -o ctestg-testlib.o `test -f 'testlib.c' || echo '$(srcdir)/'`testlib.c ++ ++ctestg-testlib.obj: testlib.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ctestg_CFLAGS) $(CFLAGS) -c -o ctestg-testlib.obj `if test -f 'testlib.c'; then $(CYGPATH_W) 'testlib.c'; else $(CYGPATH_W) '$(srcdir)/testlib.c'; fi` ++ ++ztest-ztest.o: ztest.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ztest_CFLAGS) $(CFLAGS) -c -o ztest-ztest.o `test -f 'ztest.c' || echo '$(srcdir)/'`ztest.c ++ ++ztest-ztest.obj: ztest.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ztest_CFLAGS) $(CFLAGS) -c -o ztest-ztest.obj `if test -f 'ztest.c'; then $(CYGPATH_W) 'ztest.c'; else $(CYGPATH_W) '$(srcdir)/ztest.c'; fi` ++ ++ztest-testlib.o: testlib.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ztest_CFLAGS) $(CFLAGS) -c -o ztest-testlib.o `test -f 'testlib.c' || echo '$(srcdir)/'`testlib.c ++ ++ztest-testlib.obj: testlib.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ztest_CFLAGS) $(CFLAGS) -c -o ztest-testlib.obj `if test -f 'testlib.c'; then $(CYGPATH_W) 'testlib.c'; else $(CYGPATH_W) '$(srcdir)/testlib.c'; fi` ++ + mostlyclean-libtool: + -rm -f *.lo + +Index: b/src/libbacktrace/elf.c +=================================================================== +--- a/src/libbacktrace/elf.c ++++ b/src/libbacktrace/elf.c +@@ -56,6 +56,13 @@ POSSIBILITY OF SUCH DAMAGE. */ + #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) + #endif + ++#ifndef __GNUC__ ++#define __builtin_prefetch(p, r, l) ++#define unlikely(x) (x) ++#else ++#define unlikely(x) __builtin_expect(!!(x), 0) ++#endif ++ + #if !defined(HAVE_DECL_STRNLEN) || !HAVE_DECL_STRNLEN + + /* If strnlen is not declared, provide our own version. */ +@@ -139,6 +146,7 @@ dl_iterate_phdr (int (*callback) (struct + #undef STT_OBJECT + #undef STT_FUNC + #undef NT_GNU_BUILD_ID ++#undef ELFCOMPRESS_ZLIB + + /* Basic types. */ + +@@ -231,6 +239,8 @@ typedef struct { + + #define SHF_COMPRESSED 0x800 + ++#define SHF_COMPRESSED 0x800 ++ + #if BACKTRACE_ELF_SIZE == 32 + + typedef struct +@@ -270,6 +280,29 @@ typedef struct + + #define NT_GNU_BUILD_ID 3 + ++#if BACKTRACE_ELF_SIZE == 32 ++ ++typedef struct ++{ ++ b_elf_word ch_type; /* Compresstion algorithm */ ++ b_elf_word ch_size; /* Uncompressed size */ ++ b_elf_word ch_addralign; /* Alignment for uncompressed data */ ++} b_elf_chdr; /* Elf_Chdr */ ++ ++#else /* BACKTRACE_ELF_SIZE != 32 */ ++ ++typedef struct ++{ ++ b_elf_word ch_type; /* Compression algorithm */ ++ b_elf_word ch_reserved; /* Reserved */ ++ b_elf_xword ch_size; /* Uncompressed size */ ++ b_elf_xword ch_addralign; /* Alignment for uncompressed data */ ++} b_elf_chdr; /* Elf_Chdr */ ++ ++#endif /* BACKTRACE_ELF_SIZE != 32 */ ++ ++#define ELFCOMPRESS_ZLIB 1 ++ + /* An index of ELF sections we care about. */ + + enum debug_section +@@ -279,6 +312,15 @@ enum debug_section + DEBUG_ABBREV, + DEBUG_RANGES, + DEBUG_STR, ++ ++ /* The old style compressed sections. This list must correspond to ++ the list of normal debug sections. */ ++ ZDEBUG_INFO, ++ ZDEBUG_LINE, ++ ZDEBUG_ABBREV, ++ ZDEBUG_RANGES, ++ ZDEBUG_STR, ++ + DEBUG_MAX + }; + +@@ -290,7 +332,12 @@ static const char * const debug_section_ + ".debug_line", + ".debug_abbrev", + ".debug_ranges", +- ".debug_str" ++ ".debug_str", ++ ".zdebug_info", ++ ".zdebug_line", ++ ".zdebug_abbrev", ++ ".zdebug_ranges", ++ ".zdebug_str" + }; + + /* Information we gather for the sections we care about. */ +@@ -303,6 +350,8 @@ struct debug_section_info + size_t size; + /* Section contents, after read from file. */ + const unsigned char *data; ++ /* Whether the SHF_COMPRESSED flag is set for the section. */ ++ int compressed; + }; + + /* Information we keep for an ELF symbol. */ +@@ -939,6 +988,1493 @@ elf_open_debugfile_by_debuglink (struct + return ddescriptor; + } + ++/* A function useful for setting a breakpoint for an inflation failure ++ when this code is compiled with -g. */ ++ ++static void ++elf_zlib_failed(void) ++{ ++} ++ ++/* *PVAL is the current value being read from the stream, and *PBITS ++ is the number of valid bits. Ensure that *PVAL holds at least 15 ++ bits by reading additional bits from *PPIN, up to PINEND, as ++ needed. Updates *PPIN, *PVAL and *PBITS. Returns 1 on success, 0 ++ on error. */ ++ ++static int ++elf_zlib_fetch (const unsigned char **ppin, const unsigned char *pinend, ++ uint32_t *pval, unsigned int *pbits) ++{ ++ unsigned int bits; ++ const unsigned char *pin; ++ uint32_t val; ++ ++ bits = *pbits; ++ if (bits >= 15) ++ return 1; ++ pin = *ppin; ++ val = *pval; ++ ++ if (unlikely (pinend - pin < 2)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ val |= pin[0] << bits; ++ val |= pin[1] << (bits + 8); ++ bits += 16; ++ pin += 2; ++ ++ /* We will need the next two bytes soon. We ask for high temporal ++ locality because we will need the whole cache line soon. */ ++ __builtin_prefetch (pin, 0, 3); ++ __builtin_prefetch (pin + 1, 0, 3); ++ ++ *ppin = pin; ++ *pval = val; ++ *pbits = bits; ++ return 1; ++} ++ ++/* Huffman code tables, like the rest of the zlib format, are defined ++ by RFC 1951. We store a Huffman code table as a series of tables ++ stored sequentially in memory. Each entry in a table is 16 bits. ++ The first, main, table has 256 entries. It is followed by a set of ++ secondary tables of length 2 to 128 entries. The maximum length of ++ a code sequence in the deflate format is 15 bits, so that is all we ++ need. Each secondary table has an index, which is the offset of ++ the table in the overall memory storage. ++ ++ The deflate format says that all codes of a given bit length are ++ lexicographically consecutive. Perhaps we could have 130 values ++ that require a 15-bit code, perhaps requiring three secondary ++ tables of size 128. I don't know if this is actually possible, but ++ it suggests that the maximum size required for secondary tables is ++ 3 * 128 + 3 * 64 ... == 768. The zlib enough program reports 660 ++ as the maximum. We permit 768, since in addition to the 256 for ++ the primary table, with two bytes per entry, and with the two ++ tables we need, that gives us a page. ++ ++ A single table entry needs to store a value or (for the main table ++ only) the index and size of a secondary table. Values range from 0 ++ to 285, inclusive. Secondary table indexes, per above, range from ++ 0 to 510. For a value we need to store the number of bits we need ++ to determine that value (one value may appear multiple times in the ++ table), which is 1 to 8. For a secondary table we need to store ++ the number of bits used to index into the table, which is 1 to 7. ++ And of course we need 1 bit to decide whether we have a value or a ++ secondary table index. So each entry needs 9 bits for value/table ++ index, 3 bits for size, 1 bit what it is. For simplicity we use 16 ++ bits per entry. */ ++ ++/* Number of entries we allocate to for one code table. We get a page ++ for the two code tables we need. */ ++ ++#define HUFFMAN_TABLE_SIZE (1024) ++ ++/* Bit masks and shifts for the values in the table. */ ++ ++#define HUFFMAN_VALUE_MASK 0x01ff ++#define HUFFMAN_BITS_SHIFT 9 ++#define HUFFMAN_BITS_MASK 0x7 ++#define HUFFMAN_SECONDARY_SHIFT 12 ++ ++/* For working memory while inflating we need two code tables, we need ++ an array of code lengths (max value 15, so we use unsigned char), ++ and an array of unsigned shorts used while building a table. The ++ latter two arrays must be large enough to hold the maximum number ++ of code lengths, which RFC 1951 defines as 286 + 30. */ ++ ++#define ZDEBUG_TABLE_SIZE \ ++ (2 * HUFFMAN_TABLE_SIZE * sizeof (uint16_t) \ ++ + (286 + 30) * sizeof (uint16_t) \ ++ + (286 + 30) * sizeof (unsigned char)) ++ ++#define ZDEBUG_TABLE_CODELEN_OFFSET \ ++ (2 * HUFFMAN_TABLE_SIZE * sizeof (uint16_t) \ ++ + (286 + 30) * sizeof (uint16_t)) ++ ++#define ZDEBUG_TABLE_WORK_OFFSET \ ++ (2 * HUFFMAN_TABLE_SIZE * sizeof (uint16_t)) ++ ++#ifdef BACKTRACE_GENERATE_FIXED_HUFFMAN_TABLE ++ ++/* Used by the main function that generates the fixed table to learn ++ the table size. */ ++static size_t final_next_secondary; ++ ++#endif ++ ++/* Build a Huffman code table from an array of lengths in CODES of ++ length CODES_LEN. The table is stored into *TABLE. ZDEBUG_TABLE ++ is the same as for elf_zlib_inflate, used to find some work space. ++ Returns 1 on success, 0 on error. */ ++ ++static int ++elf_zlib_inflate_table (unsigned char *codes, size_t codes_len, ++ uint16_t *zdebug_table, uint16_t *table) ++{ ++ uint16_t count[16]; ++ uint16_t start[16]; ++ uint16_t prev[16]; ++ uint16_t firstcode[7]; ++ uint16_t *next; ++ size_t i; ++ size_t j; ++ unsigned int code; ++ size_t next_secondary; ++ ++ /* Count the number of code of each length. Set NEXT[val] to be the ++ next value after VAL with the same bit length. */ ++ ++ next = (uint16_t *) (((unsigned char *) zdebug_table) ++ + ZDEBUG_TABLE_WORK_OFFSET); ++ ++ memset (&count[0], 0, 16 * sizeof (uint16_t)); ++ for (i = 0; i < codes_len; ++i) ++ { ++ if (unlikely (codes[i] >= 16)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ if (count[codes[i]] == 0) ++ { ++ start[codes[i]] = i; ++ prev[codes[i]] = i; ++ } ++ else ++ { ++ next[prev[codes[i]]] = i; ++ prev[codes[i]] = i; ++ } ++ ++ ++count[codes[i]]; ++ } ++ ++ /* For each length, fill in the table for the codes of that ++ length. */ ++ ++ memset (table, 0, HUFFMAN_TABLE_SIZE * sizeof (uint16_t)); ++ ++ /* Handle the values that do not require a secondary table. */ ++ ++ code = 0; ++ for (j = 1; j <= 8; ++j) ++ { ++ unsigned int jcnt; ++ unsigned int val; ++ ++ jcnt = count[j]; ++ if (jcnt == 0) ++ continue; ++ ++ if (unlikely (jcnt > (1U << j))) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ /* There are JCNT values that have this length, the values ++ starting from START[j] continuing through NEXT[VAL]. Those ++ values are assigned consecutive values starting at CODE. */ ++ ++ val = start[j]; ++ for (i = 0; i < jcnt; ++i) ++ { ++ uint16_t tval; ++ size_t ind; ++ unsigned int incr; ++ ++ /* In the compressed bit stream, the value VAL is encoded as ++ J bits with the value C. */ ++ ++ if (unlikely ((val & ~HUFFMAN_VALUE_MASK) != 0)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ tval = val | ((j - 1) << HUFFMAN_BITS_SHIFT); ++ ++ /* The table lookup uses 8 bits. If J is less than 8, we ++ don't know what the other bits will be. We need to fill ++ in all possibilities in the table. Since the Huffman ++ code is unambiguous, those entries can't be used for any ++ other code. */ ++ ++ for (ind = code; ind < 0x100; ind += 1 << j) ++ { ++ if (unlikely (table[ind] != 0)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ table[ind] = tval; ++ } ++ ++ /* Advance to the next value with this length. */ ++ if (i + 1 < jcnt) ++ val = next[val]; ++ ++ /* The Huffman codes are stored in the bitstream with the ++ most significant bit first, as is required to make them ++ unambiguous. The effect is that when we read them from ++ the bitstream we see the bit sequence in reverse order: ++ the most significant bit of the Huffman code is the least ++ significant bit of the value we read from the bitstream. ++ That means that to make our table lookups work, we need ++ to reverse the bits of CODE. Since reversing bits is ++ tedious and in general requires using a table, we instead ++ increment CODE in reverse order. That is, if the number ++ of bits we are currently using, here named J, is 3, we ++ count as 000, 100, 010, 110, 001, 101, 011, 111, which is ++ to say the numbers from 0 to 7 but with the bits ++ reversed. Going to more bits, aka incrementing J, ++ effectively just adds more zero bits as the beginning, ++ and as such does not change the numeric value of CODE. ++ ++ To increment CODE of length J in reverse order, find the ++ most significant zero bit and set it to one while ++ clearing all higher bits. In other words, add 1 modulo ++ 2^J, only reversed. */ ++ ++ incr = 1U << (j - 1); ++ while ((code & incr) != 0) ++ incr >>= 1; ++ if (incr == 0) ++ code = 0; ++ else ++ { ++ code &= incr - 1; ++ code += incr; ++ } ++ } ++ } ++ ++ /* Handle the values that require a secondary table. */ ++ ++ /* Set FIRSTCODE, the number at which the codes start, for each ++ length. */ ++ ++ for (j = 9; j < 16; j++) ++ { ++ unsigned int jcnt; ++ unsigned int k; ++ ++ jcnt = count[j]; ++ if (jcnt == 0) ++ continue; ++ ++ /* There are JCNT values that have this length, the values ++ starting from START[j]. Those values are assigned ++ consecutive values starting at CODE. */ ++ ++ firstcode[j - 9] = code; ++ ++ /* Reverse add JCNT to CODE modulo 2^J. */ ++ for (k = 0; k < j; ++k) ++ { ++ if ((jcnt & (1U << k)) != 0) ++ { ++ unsigned int m; ++ unsigned int bit; ++ ++ bit = 1U << (j - k - 1); ++ for (m = 0; m < j - k; ++m, bit >>= 1) ++ { ++ if ((code & bit) == 0) ++ { ++ code += bit; ++ break; ++ } ++ code &= ~bit; ++ } ++ jcnt &= ~(1U << k); ++ } ++ } ++ if (unlikely (jcnt != 0)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ } ++ ++ /* For J from 9 to 15, inclusive, we store COUNT[J] consecutive ++ values starting at START[J] with consecutive codes starting at ++ FIRSTCODE[J - 9]. In the primary table we need to point to the ++ secondary table, and the secondary table will be indexed by J - 9 ++ bits. We count down from 15 so that we install the larger ++ secondary tables first, as the smaller ones may be embedded in ++ the larger ones. */ ++ ++ next_secondary = 0; /* Index of next secondary table (after primary). */ ++ for (j = 15; j >= 9; j--) ++ { ++ unsigned int jcnt; ++ unsigned int val; ++ size_t primary; /* Current primary index. */ ++ size_t secondary; /* Offset to current secondary table. */ ++ size_t secondary_bits; /* Bit size of current secondary table. */ ++ ++ jcnt = count[j]; ++ if (jcnt == 0) ++ continue; ++ ++ val = start[j]; ++ code = firstcode[j - 9]; ++ primary = 0x100; ++ secondary = 0; ++ secondary_bits = 0; ++ for (i = 0; i < jcnt; ++i) ++ { ++ uint16_t tval; ++ size_t ind; ++ unsigned int incr; ++ ++ if ((code & 0xff) != primary) ++ { ++ uint16_t tprimary; ++ ++ /* Fill in a new primary table entry. */ ++ ++ primary = code & 0xff; ++ ++ tprimary = table[primary]; ++ if (tprimary == 0) ++ { ++ /* Start a new secondary table. */ ++ ++ if (unlikely ((next_secondary & HUFFMAN_VALUE_MASK) ++ != next_secondary)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ secondary = next_secondary; ++ secondary_bits = j - 8; ++ next_secondary += 1 << secondary_bits; ++ table[primary] = (secondary ++ + ((j - 8) << HUFFMAN_BITS_SHIFT) ++ + (1U << HUFFMAN_SECONDARY_SHIFT)); ++ } ++ else ++ { ++ /* There is an existing entry. It had better be a ++ secondary table with enough bits. */ ++ if (unlikely ((tprimary & (1U << HUFFMAN_SECONDARY_SHIFT)) ++ == 0)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ secondary = tprimary & HUFFMAN_VALUE_MASK; ++ secondary_bits = ((tprimary >> HUFFMAN_BITS_SHIFT) ++ & HUFFMAN_BITS_MASK); ++ if (unlikely (secondary_bits < j - 8)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ } ++ } ++ ++ /* Fill in secondary table entries. */ ++ ++ tval = val | ((j - 8) << HUFFMAN_BITS_SHIFT); ++ ++ for (ind = code >> 8; ++ ind < (1U << secondary_bits); ++ ind += 1U << (j - 8)) ++ { ++ if (unlikely (table[secondary + 0x100 + ind] != 0)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ table[secondary + 0x100 + ind] = tval; ++ } ++ ++ if (i + 1 < jcnt) ++ val = next[val]; ++ ++ incr = 1U << (j - 1); ++ while ((code & incr) != 0) ++ incr >>= 1; ++ if (incr == 0) ++ code = 0; ++ else ++ { ++ code &= incr - 1; ++ code += incr; ++ } ++ } ++ } ++ ++#ifdef BACKTRACE_GENERATE_FIXED_HUFFMAN_TABLE ++ final_next_secondary = next_secondary; ++#endif ++ ++ return 1; ++} ++ ++#ifdef BACKTRACE_GENERATE_FIXED_HUFFMAN_TABLE ++ ++/* Used to generate the fixed Huffman table for block type 1. */ ++ ++#include ++ ++static uint16_t table[ZDEBUG_TABLE_SIZE]; ++static unsigned char codes[287]; ++ ++int ++main () ++{ ++ size_t i; ++ ++ for (i = 0; i <= 143; ++i) ++ codes[i] = 8; ++ for (i = 144; i <= 255; ++i) ++ codes[i] = 9; ++ for (i = 256; i <= 279; ++i) ++ codes[i] = 7; ++ for (i = 280; i <= 287; ++i) ++ codes[i] = 8; ++ if (!elf_zlib_inflate_table (&codes[0], 287, &table[0], &table[0])) ++ { ++ fprintf (stderr, "elf_zlib_inflate_table failed\n"); ++ exit (EXIT_FAILURE); ++ } ++ ++ printf ("static const uint16_t elf_zlib_default_table[%#zx] =\n", ++ final_next_secondary + 0x100); ++ printf ("{\n"); ++ for (i = 0; i < final_next_secondary + 0x100; i += 8) ++ { ++ size_t j; ++ ++ printf (" "); ++ for (j = i; j < final_next_secondary + 0x100 && j < i + 8; ++j) ++ printf (" %#x,", table[j]); ++ printf ("\n"); ++ } ++ printf ("};\n"); ++ return 0; ++} ++ ++#endif ++ ++/* The fixed table generated by the #ifdef'ed out main function ++ above. */ ++ ++static const uint16_t elf_zlib_default_table[0x170] = ++{ ++ 0xd00, 0xe50, 0xe10, 0xf18, 0xd10, 0xe70, 0xe30, 0x1232, ++ 0xd08, 0xe60, 0xe20, 0x1212, 0xe00, 0xe80, 0xe40, 0x1252, ++ 0xd04, 0xe58, 0xe18, 0x1202, 0xd14, 0xe78, 0xe38, 0x1242, ++ 0xd0c, 0xe68, 0xe28, 0x1222, 0xe08, 0xe88, 0xe48, 0x1262, ++ 0xd02, 0xe54, 0xe14, 0xf1c, 0xd12, 0xe74, 0xe34, 0x123a, ++ 0xd0a, 0xe64, 0xe24, 0x121a, 0xe04, 0xe84, 0xe44, 0x125a, ++ 0xd06, 0xe5c, 0xe1c, 0x120a, 0xd16, 0xe7c, 0xe3c, 0x124a, ++ 0xd0e, 0xe6c, 0xe2c, 0x122a, 0xe0c, 0xe8c, 0xe4c, 0x126a, ++ 0xd01, 0xe52, 0xe12, 0xf1a, 0xd11, 0xe72, 0xe32, 0x1236, ++ 0xd09, 0xe62, 0xe22, 0x1216, 0xe02, 0xe82, 0xe42, 0x1256, ++ 0xd05, 0xe5a, 0xe1a, 0x1206, 0xd15, 0xe7a, 0xe3a, 0x1246, ++ 0xd0d, 0xe6a, 0xe2a, 0x1226, 0xe0a, 0xe8a, 0xe4a, 0x1266, ++ 0xd03, 0xe56, 0xe16, 0xf1e, 0xd13, 0xe76, 0xe36, 0x123e, ++ 0xd0b, 0xe66, 0xe26, 0x121e, 0xe06, 0xe86, 0xe46, 0x125e, ++ 0xd07, 0xe5e, 0xe1e, 0x120e, 0xd17, 0xe7e, 0xe3e, 0x124e, ++ 0xd0f, 0xe6e, 0xe2e, 0x122e, 0xe0e, 0xe8e, 0xe4e, 0x126e, ++ 0xd00, 0xe51, 0xe11, 0xf19, 0xd10, 0xe71, 0xe31, 0x1234, ++ 0xd08, 0xe61, 0xe21, 0x1214, 0xe01, 0xe81, 0xe41, 0x1254, ++ 0xd04, 0xe59, 0xe19, 0x1204, 0xd14, 0xe79, 0xe39, 0x1244, ++ 0xd0c, 0xe69, 0xe29, 0x1224, 0xe09, 0xe89, 0xe49, 0x1264, ++ 0xd02, 0xe55, 0xe15, 0xf1d, 0xd12, 0xe75, 0xe35, 0x123c, ++ 0xd0a, 0xe65, 0xe25, 0x121c, 0xe05, 0xe85, 0xe45, 0x125c, ++ 0xd06, 0xe5d, 0xe1d, 0x120c, 0xd16, 0xe7d, 0xe3d, 0x124c, ++ 0xd0e, 0xe6d, 0xe2d, 0x122c, 0xe0d, 0xe8d, 0xe4d, 0x126c, ++ 0xd01, 0xe53, 0xe13, 0xf1b, 0xd11, 0xe73, 0xe33, 0x1238, ++ 0xd09, 0xe63, 0xe23, 0x1218, 0xe03, 0xe83, 0xe43, 0x1258, ++ 0xd05, 0xe5b, 0xe1b, 0x1208, 0xd15, 0xe7b, 0xe3b, 0x1248, ++ 0xd0d, 0xe6b, 0xe2b, 0x1228, 0xe0b, 0xe8b, 0xe4b, 0x1268, ++ 0xd03, 0xe57, 0xe17, 0x1200, 0xd13, 0xe77, 0xe37, 0x1240, ++ 0xd0b, 0xe67, 0xe27, 0x1220, 0xe07, 0xe87, 0xe47, 0x1260, ++ 0xd07, 0xe5f, 0xe1f, 0x1210, 0xd17, 0xe7f, 0xe3f, 0x1250, ++ 0xd0f, 0xe6f, 0xe2f, 0x1230, 0xe0f, 0xe8f, 0xe4f, 0, ++ 0x290, 0x291, 0x292, 0x293, 0x294, 0x295, 0x296, 0x297, ++ 0x298, 0x299, 0x29a, 0x29b, 0x29c, 0x29d, 0x29e, 0x29f, ++ 0x2a0, 0x2a1, 0x2a2, 0x2a3, 0x2a4, 0x2a5, 0x2a6, 0x2a7, ++ 0x2a8, 0x2a9, 0x2aa, 0x2ab, 0x2ac, 0x2ad, 0x2ae, 0x2af, ++ 0x2b0, 0x2b1, 0x2b2, 0x2b3, 0x2b4, 0x2b5, 0x2b6, 0x2b7, ++ 0x2b8, 0x2b9, 0x2ba, 0x2bb, 0x2bc, 0x2bd, 0x2be, 0x2bf, ++ 0x2c0, 0x2c1, 0x2c2, 0x2c3, 0x2c4, 0x2c5, 0x2c6, 0x2c7, ++ 0x2c8, 0x2c9, 0x2ca, 0x2cb, 0x2cc, 0x2cd, 0x2ce, 0x2cf, ++ 0x2d0, 0x2d1, 0x2d2, 0x2d3, 0x2d4, 0x2d5, 0x2d6, 0x2d7, ++ 0x2d8, 0x2d9, 0x2da, 0x2db, 0x2dc, 0x2dd, 0x2de, 0x2df, ++ 0x2e0, 0x2e1, 0x2e2, 0x2e3, 0x2e4, 0x2e5, 0x2e6, 0x2e7, ++ 0x2e8, 0x2e9, 0x2ea, 0x2eb, 0x2ec, 0x2ed, 0x2ee, 0x2ef, ++ 0x2f0, 0x2f1, 0x2f2, 0x2f3, 0x2f4, 0x2f5, 0x2f6, 0x2f7, ++ 0x2f8, 0x2f9, 0x2fa, 0x2fb, 0x2fc, 0x2fd, 0x2fe, 0x2ff, ++}; ++ ++/* Inflate a zlib stream from PIN/SIN to POUT/SOUT. Return 1 on ++ success, 0 on some error parsing the stream. */ ++ ++static int ++elf_zlib_inflate (const unsigned char *pin, size_t sin, uint16_t *zdebug_table, ++ unsigned char *pout, size_t sout) ++{ ++ unsigned char *porigout; ++ const unsigned char *pinend; ++ unsigned char *poutend; ++ ++ /* We can apparently see multiple zlib streams concatenated ++ together, so keep going as long as there is something to read. ++ The last 4 bytes are the checksum. */ ++ porigout = pout; ++ pinend = pin + sin; ++ poutend = pout + sout; ++ while ((pinend - pin) > 4) ++ { ++ uint32_t val; ++ unsigned int bits; ++ int last; ++ ++ /* Read the two byte zlib header. */ ++ ++ if (unlikely ((pin[0] & 0xf) != 8)) /* 8 is zlib encoding. */ ++ { ++ /* Unknown compression method. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ if (unlikely ((pin[0] >> 4) > 7)) ++ { ++ /* Window size too large. Other than this check, we don't ++ care about the window size. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ if (unlikely ((pin[1] & 0x20) != 0)) ++ { ++ /* Stream expects a predefined dictionary, but we have no ++ dictionary. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ val = (pin[0] << 8) | pin[1]; ++ if (unlikely (val % 31 != 0)) ++ { ++ /* Header check failure. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ pin += 2; ++ ++ /* Read blocks until one is marked last. */ ++ ++ val = 0; ++ bits = 0; ++ last = 0; ++ ++ while (!last) ++ { ++ unsigned int type; ++ const uint16_t *tlit; ++ const uint16_t *tdist; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ last = val & 1; ++ type = (val >> 1) & 3; ++ val >>= 3; ++ bits -= 3; ++ ++ if (unlikely (type == 3)) ++ { ++ /* Invalid block type. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ if (type == 0) ++ { ++ uint16_t len; ++ uint16_t lenc; ++ ++ /* An uncompressed block. */ ++ ++ /* If we've read ahead more than a byte, back up. */ ++ while (bits > 8) ++ { ++ --pin; ++ bits -= 8; ++ } ++ ++ val = 0; ++ bits = 0; ++ if (unlikely ((pinend - pin) < 4)) ++ { ++ /* Missing length. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ len = pin[0] | (pin[1] << 8); ++ lenc = pin[2] | (pin[3] << 8); ++ pin += 4; ++ lenc = ~lenc; ++ if (unlikely (len != lenc)) ++ { ++ /* Corrupt data. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ if (unlikely (len > (unsigned int) (pinend - pin) ++ || len > (unsigned int) (poutend - pout))) ++ { ++ /* Not enough space in buffers. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ memcpy (pout, pin, len); ++ pout += len; ++ pin += len; ++ ++ /* Go around to read the next block. */ ++ continue; ++ } ++ ++ if (type == 1) ++ { ++ tlit = elf_zlib_default_table; ++ tdist = elf_zlib_default_table; ++ } ++ else ++ { ++ unsigned int nlit; ++ unsigned int ndist; ++ unsigned int nclen; ++ unsigned char codebits[19]; ++ unsigned char *plenbase; ++ unsigned char *plen; ++ unsigned char *plenend; ++ ++ /* Read a Huffman encoding table. The various magic ++ numbers here are from RFC 1951. */ ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ nlit = (val & 0x1f) + 257; ++ val >>= 5; ++ ndist = (val & 0x1f) + 1; ++ val >>= 5; ++ nclen = (val & 0xf) + 4; ++ val >>= 4; ++ bits -= 14; ++ if (unlikely (nlit > 286 || ndist > 30)) ++ { ++ /* Values out of range. */ ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ /* Read and build the table used to compress the ++ literal, length, and distance codes. */ ++ ++ memset(&codebits[0], 0, 19); ++ ++ /* There are always at least 4 elements in the ++ table. */ ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ codebits[16] = val & 7; ++ codebits[17] = (val >> 3) & 7; ++ codebits[18] = (val >> 6) & 7; ++ codebits[0] = (val >> 9) & 7; ++ val >>= 12; ++ bits -= 12; ++ ++ if (nclen == 4) ++ goto codebitsdone; ++ ++ codebits[8] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 5) ++ goto codebitsdone; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ codebits[7] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 6) ++ goto codebitsdone; ++ ++ codebits[9] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 7) ++ goto codebitsdone; ++ ++ codebits[6] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 8) ++ goto codebitsdone; ++ ++ codebits[10] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 9) ++ goto codebitsdone; ++ ++ codebits[5] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 10) ++ goto codebitsdone; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ codebits[11] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 11) ++ goto codebitsdone; ++ ++ codebits[4] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 12) ++ goto codebitsdone; ++ ++ codebits[12] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 13) ++ goto codebitsdone; ++ ++ codebits[3] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 14) ++ goto codebitsdone; ++ ++ codebits[13] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 15) ++ goto codebitsdone; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ codebits[2] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 16) ++ goto codebitsdone; ++ ++ codebits[14] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 17) ++ goto codebitsdone; ++ ++ codebits[1] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ if (nclen == 18) ++ goto codebitsdone; ++ ++ codebits[15] = val & 7; ++ val >>= 3; ++ bits -= 3; ++ ++ codebitsdone: ++ ++ if (!elf_zlib_inflate_table (codebits, 19, zdebug_table, ++ zdebug_table)) ++ return 0; ++ ++ /* Read the compressed bit lengths of the literal, ++ length, and distance codes. We have allocated space ++ at the end of zdebug_table to hold them. */ ++ ++ plenbase = (((unsigned char *) zdebug_table) ++ + ZDEBUG_TABLE_CODELEN_OFFSET); ++ plen = plenbase; ++ plenend = plen + nlit + ndist; ++ while (plen < plenend) ++ { ++ uint16_t t; ++ unsigned int b; ++ uint16_t v; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ t = zdebug_table[val & 0xff]; ++ ++ /* The compression here uses bit lengths up to 7, so ++ a secondary table is never necessary. */ ++ if (unlikely ((t & (1U << HUFFMAN_SECONDARY_SHIFT)) != 0)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ b = (t >> HUFFMAN_BITS_SHIFT) & HUFFMAN_BITS_MASK; ++ val >>= b + 1; ++ bits -= b + 1; ++ ++ v = t & HUFFMAN_VALUE_MASK; ++ if (v < 16) ++ *plen++ = v; ++ else if (v == 16) ++ { ++ unsigned int c; ++ unsigned int prev; ++ ++ /* Copy previous entry 3 to 6 times. */ ++ ++ if (unlikely (plen == plenbase)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ /* We used up to 7 bits since the last ++ elf_zlib_fetch, so we have at least 8 bits ++ available here. */ ++ ++ c = 3 + (val & 0x3); ++ val >>= 2; ++ bits -= 2; ++ if (unlikely ((unsigned int) (plenend - plen) < c)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ prev = plen[-1]; ++ switch (c) ++ { ++ case 6: ++ *plen++ = prev; ++ /* fallthrough */ ++ case 5: ++ *plen++ = prev; ++ /* fallthrough */ ++ case 4: ++ *plen++ = prev; ++ } ++ *plen++ = prev; ++ *plen++ = prev; ++ *plen++ = prev; ++ } ++ else if (v == 17) ++ { ++ unsigned int c; ++ ++ /* Store zero 3 to 10 times. */ ++ ++ /* We used up to 7 bits since the last ++ elf_zlib_fetch, so we have at least 8 bits ++ available here. */ ++ ++ c = 3 + (val & 0x7); ++ val >>= 3; ++ bits -= 3; ++ if (unlikely ((unsigned int) (plenend - plen) < c)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ switch (c) ++ { ++ case 10: ++ *plen++ = 0; ++ /* fallthrough */ ++ case 9: ++ *plen++ = 0; ++ /* fallthrough */ ++ case 8: ++ *plen++ = 0; ++ /* fallthrough */ ++ case 7: ++ *plen++ = 0; ++ /* fallthrough */ ++ case 6: ++ *plen++ = 0; ++ /* fallthrough */ ++ case 5: ++ *plen++ = 0; ++ /* fallthrough */ ++ case 4: ++ *plen++ = 0; ++ } ++ *plen++ = 0; ++ *plen++ = 0; ++ *plen++ = 0; ++ } ++ else if (v == 18) ++ { ++ unsigned int c; ++ ++ /* Store zero 11 to 138 times. */ ++ ++ /* We used up to 7 bits since the last ++ elf_zlib_fetch, so we have at least 8 bits ++ available here. */ ++ ++ c = 11 + (val & 0x7f); ++ val >>= 7; ++ bits -= 7; ++ if (unlikely ((unsigned int) (plenend - plen) < c)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ memset (plen, 0, c); ++ plen += c; ++ } ++ else ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ } ++ ++ /* Make sure that the stop code can appear. */ ++ ++ plen = plenbase; ++ if (unlikely (plen[256] == 0)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ /* Build the decompression tables. */ ++ ++ if (!elf_zlib_inflate_table (plen, nlit, zdebug_table, ++ zdebug_table)) ++ return 0; ++ if (!elf_zlib_inflate_table (plen + nlit, ndist, zdebug_table, ++ zdebug_table + HUFFMAN_TABLE_SIZE)) ++ return 0; ++ tlit = zdebug_table; ++ tdist = zdebug_table + HUFFMAN_TABLE_SIZE; ++ } ++ ++ /* Inflate values until the end of the block. This is the ++ main loop of the inflation code. */ ++ ++ while (1) ++ { ++ uint16_t t; ++ unsigned int b; ++ uint16_t v; ++ unsigned int lit; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ t = tlit[val & 0xff]; ++ b = (t >> HUFFMAN_BITS_SHIFT) & HUFFMAN_BITS_MASK; ++ v = t & HUFFMAN_VALUE_MASK; ++ ++ if ((t & (1U << HUFFMAN_SECONDARY_SHIFT)) == 0) ++ { ++ lit = v; ++ val >>= b + 1; ++ bits -= b + 1; ++ } ++ else ++ { ++ t = tlit[v + 0x100 + ((val >> 8) & ((1U << b) - 1))]; ++ b = (t >> HUFFMAN_BITS_SHIFT) & HUFFMAN_BITS_MASK; ++ lit = t & HUFFMAN_VALUE_MASK; ++ val >>= b + 8; ++ bits -= b + 8; ++ } ++ ++ if (lit < 256) ++ { ++ if (unlikely (pout == poutend)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ *pout++ = lit; ++ ++ /* We will need to write the next byte soon. We ask ++ for high temporal locality because we will write ++ to the whole cache line soon. */ ++ __builtin_prefetch (pout, 1, 3); ++ } ++ else if (lit == 256) ++ { ++ /* The end of the block. */ ++ break; ++ } ++ else ++ { ++ unsigned int dist; ++ unsigned int len; ++ ++ /* Convert lit into a length. */ ++ ++ if (lit < 265) ++ len = lit - 257 + 3; ++ else if (lit == 285) ++ len = 258; ++ else if (unlikely (lit > 285)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ else ++ { ++ unsigned int extra; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ /* This is an expression for the table of length ++ codes in RFC 1951 3.2.5. */ ++ lit -= 265; ++ extra = (lit >> 2) + 1; ++ len = (lit & 3) << extra; ++ len += 11; ++ len += ((1U << (extra - 1)) - 1) << 3; ++ len += val & ((1U << extra) - 1); ++ val >>= extra; ++ bits -= extra; ++ } ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ t = tdist[val & 0xff]; ++ b = (t >> HUFFMAN_BITS_SHIFT) & HUFFMAN_BITS_MASK; ++ v = t & HUFFMAN_VALUE_MASK; ++ ++ if ((t & (1U << HUFFMAN_SECONDARY_SHIFT)) == 0) ++ { ++ dist = v; ++ val >>= b + 1; ++ bits -= b + 1; ++ } ++ else ++ { ++ t = tdist[v + 0x100 + ((val >> 8) & ((1U << b) - 1))]; ++ b = (t >> HUFFMAN_BITS_SHIFT) & HUFFMAN_BITS_MASK; ++ dist = t & HUFFMAN_VALUE_MASK; ++ val >>= b + 8; ++ bits -= b + 8; ++ } ++ ++ /* Convert dist to a distance. */ ++ ++ if (dist == 0) ++ { ++ /* A distance of 1. A common case, meaning ++ repeat the last character LEN times. */ ++ ++ if (unlikely (pout == porigout)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ if (unlikely ((unsigned int) (poutend - pout) < len)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ memset (pout, pout[-1], len); ++ pout += len; ++ } ++ else if (unlikely (dist > 29)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ else ++ { ++ if (dist < 4) ++ dist = dist + 1; ++ else ++ { ++ unsigned int extra; ++ ++ if (!elf_zlib_fetch (&pin, pinend, &val, &bits)) ++ return 0; ++ ++ /* This is an expression for the table of ++ distance codes in RFC 1951 3.2.5. */ ++ dist -= 4; ++ extra = (dist >> 1) + 1; ++ dist = (dist & 1) << extra; ++ dist += 5; ++ dist += ((1U << (extra - 1)) - 1) << 2; ++ dist += val & ((1U << extra) - 1); ++ val >>= extra; ++ bits -= extra; ++ } ++ ++ /* Go back dist bytes, and copy len bytes from ++ there. */ ++ ++ if (unlikely ((unsigned int) (pout - porigout) < dist)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ if (unlikely ((unsigned int) (poutend - pout) < len)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ if (dist >= len) ++ { ++ memcpy (pout, pout - dist, len); ++ pout += len; ++ } ++ else ++ { ++ while (len > 0) ++ { ++ unsigned int copy; ++ ++ copy = len < dist ? len : dist; ++ memcpy (pout, pout - dist, copy); ++ len -= copy; ++ pout += copy; ++ } ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ /* We should have filled the output buffer. */ ++ if (unlikely (pout != poutend)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ return 1; ++} ++ ++/* Verify the zlib checksum. The checksum is in the 4 bytes at ++ CHECKBYTES, and the uncompressed data is at UNCOMPRESSED / ++ UNCOMPRESSED_SIZE. Returns 1 on success, 0 on failure. */ ++ ++static int ++elf_zlib_verify_checksum (const unsigned char *checkbytes, ++ const unsigned char *uncompressed, ++ size_t uncompressed_size) ++{ ++ unsigned int i; ++ unsigned int cksum; ++ const unsigned char *p; ++ uint32_t s1; ++ uint32_t s2; ++ size_t hsz; ++ ++ cksum = 0; ++ for (i = 0; i < 4; i++) ++ cksum = (cksum << 8) | checkbytes[i]; ++ ++ s1 = 1; ++ s2 = 0; ++ ++ /* Minimize modulo operations. */ ++ ++ p = uncompressed; ++ hsz = uncompressed_size; ++ while (hsz >= 5552) ++ { ++ for (i = 0; i < 5552; i += 16) ++ { ++ /* Manually unroll loop 16 times. */ ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ } ++ hsz -= 5552; ++ s1 %= 65521; ++ s2 %= 65521; ++ } ++ ++ while (hsz >= 16) ++ { ++ /* Manually unroll loop 16 times. */ ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ ++ hsz -= 16; ++ } ++ ++ for (i = 0; i < hsz; ++i) ++ { ++ s1 = s1 + *p++; ++ s2 = s2 + s1; ++ } ++ ++ s1 %= 65521; ++ s2 %= 65521; ++ ++ if (unlikely ((s2 << 16) + s1 != cksum)) ++ { ++ elf_zlib_failed (); ++ return 0; ++ } ++ ++ return 1; ++} ++ ++/* Inflate a zlib stream from PIN/SIN to POUT/SOUT, and verify the ++ checksum. Return 1 on success, 0 on error. */ ++ ++static int ++elf_zlib_inflate_and_verify (const unsigned char *pin, size_t sin, ++ uint16_t *zdebug_table, unsigned char *pout, ++ size_t sout) ++{ ++ if (!elf_zlib_inflate (pin, sin, zdebug_table, pout, sout)) ++ return 0; ++ if (!elf_zlib_verify_checksum (pin + sin - 4, pout, sout)) ++ return 0; ++ return 1; ++} ++ ++/* Uncompress the old compressed debug format, the one emitted by ++ --compress-debug-sections=zlib-gnu. The compressed data is in ++ COMPRESSED / COMPRESSED_SIZE, and the function writes to ++ *UNCOMPRESSED / *UNCOMPRESSED_SIZE. ZDEBUG_TABLE is work space to ++ hold Huffman tables. Returns 0 on error, 1 on successful ++ decompression or if something goes wrong. In general we try to ++ carry on, by returning 1, even if we can't decompress. */ ++ ++static int ++elf_uncompress_zdebug (struct backtrace_state *state, ++ const unsigned char *compressed, size_t compressed_size, ++ uint16_t *zdebug_table, ++ backtrace_error_callback error_callback, void *data, ++ unsigned char **uncompressed, size_t *uncompressed_size) ++{ ++ size_t sz; ++ size_t i; ++ unsigned char *po; ++ ++ *uncompressed = NULL; ++ *uncompressed_size = 0; ++ ++ /* The format starts with the four bytes ZLIB, followed by the 8 ++ byte length of the uncompressed data in big-endian order, ++ followed by a zlib stream. */ ++ ++ if (compressed_size < 12 || memcmp (compressed, "ZLIB", 4) != 0) ++ return 1; ++ ++ sz = 0; ++ for (i = 0; i < 8; i++) ++ sz = (sz << 8) | compressed[i + 4]; ++ ++ if (*uncompressed != NULL && *uncompressed_size >= sz) ++ po = *uncompressed; ++ else ++ { ++ po = (unsigned char *) backtrace_alloc (state, sz, error_callback, data); ++ if (po == NULL) ++ return 0; ++ } ++ ++ if (!elf_zlib_inflate_and_verify (compressed + 12, compressed_size - 12, ++ zdebug_table, po, sz)) ++ return 1; ++ ++ *uncompressed = po; ++ *uncompressed_size = sz; ++ ++ return 1; ++} ++ ++/* Uncompress the new compressed debug format, the official standard ++ ELF approach emitted by --compress-debug-sections=zlib-gabi. The ++ compressed data is in COMPRESSED / COMPRESSED_SIZE, and the ++ function writes to *UNCOMPRESSED / *UNCOMPRESSED_SIZE. ++ ZDEBUG_TABLE is work space as for elf_uncompress_zdebug. Returns 0 ++ on error, 1 on successful decompression or if something goes wrong. ++ In general we try to carry on, by returning 1, even if we can't ++ decompress. */ ++ ++static int ++elf_uncompress_chdr (struct backtrace_state *state, ++ const unsigned char *compressed, size_t compressed_size, ++ uint16_t *zdebug_table, ++ backtrace_error_callback error_callback, void *data, ++ unsigned char **uncompressed, size_t *uncompressed_size) ++{ ++ const b_elf_chdr *chdr; ++ unsigned char *po; ++ ++ *uncompressed = NULL; ++ *uncompressed_size = 0; ++ ++ /* The format starts with an ELF compression header. */ ++ if (compressed_size < sizeof (b_elf_chdr)) ++ return 1; ++ ++ chdr = (const b_elf_chdr *) compressed; ++ ++ if (chdr->ch_type != ELFCOMPRESS_ZLIB) ++ { ++ /* Unsupported compression algorithm. */ ++ return 1; ++ } ++ ++ if (*uncompressed != NULL && *uncompressed_size >= chdr->ch_size) ++ po = *uncompressed; ++ else ++ { ++ po = (unsigned char *) backtrace_alloc (state, chdr->ch_size, ++ error_callback, data); ++ if (po == NULL) ++ return 0; ++ } ++ ++ if (!elf_zlib_inflate_and_verify (compressed + sizeof (b_elf_chdr), ++ compressed_size - sizeof (b_elf_chdr), ++ zdebug_table, po, chdr->ch_size)) ++ return 1; ++ ++ *uncompressed = po; ++ *uncompressed_size = chdr->ch_size; ++ ++ return 1; ++} ++ ++/* This function is a hook for testing the zlib support. It is only ++ used by tests. */ ++ ++int ++backtrace_uncompress_zdebug (struct backtrace_state *state, ++ const unsigned char *compressed, ++ size_t compressed_size, ++ backtrace_error_callback error_callback, ++ void *data, unsigned char **uncompressed, ++ size_t *uncompressed_size) ++{ ++ uint16_t *zdebug_table; ++ int ret; ++ ++ zdebug_table = ((uint16_t *) backtrace_alloc (state, ZDEBUG_TABLE_SIZE, ++ error_callback, data)); ++ if (zdebug_table == NULL) ++ return 0; ++ ret = elf_uncompress_zdebug (state, compressed, compressed_size, ++ zdebug_table, error_callback, data, ++ uncompressed, uncompressed_size); ++ backtrace_free (state, zdebug_table, ZDEBUG_TABLE_SIZE, ++ error_callback, data); ++ return ret; ++} ++ + /* Add the backtrace data for one ELF file. Returns 1 on success, + 0 on failure (in both cases descriptor is closed) or -1 if exe + is non-zero and the ELF file is ET_DYN, which tells the caller that +@@ -985,6 +2521,8 @@ elf_add (struct backtrace_state *state, + off_t max_offset; + struct backtrace_view debug_view; + int debug_view_valid; ++ unsigned int using_debug_view; ++ uint16_t *zdebug_table; + + *found_sym = 0; + *found_dwarf = 0; +@@ -1149,6 +2687,7 @@ elf_add (struct backtrace_state *state, + { + sections[j].offset = shdr->sh_offset; + sections[j].size = shdr->sh_size; ++ sections[j].compressed = (shdr->sh_flags & SHF_COMPRESSED) != 0; + break; + } + } +@@ -1260,8 +2799,6 @@ elf_add (struct backtrace_state *state, + elf_add_syminfo_data (state, sdata); + } + +- /* FIXME: Need to handle compressed debug sections. */ +- + backtrace_release_view (state, &shdrs_view, error_callback, data); + shdrs_view_valid = 0; + backtrace_release_view (state, &names_view, error_callback, data); +@@ -1349,13 +2886,94 @@ elf_add (struct backtrace_state *state, + goto fail; + descriptor = -1; + ++ using_debug_view = 0; + for (i = 0; i < (int) DEBUG_MAX; ++i) + { + if (sections[i].size == 0) + sections[i].data = NULL; + else +- sections[i].data = ((const unsigned char *) debug_view.data +- + (sections[i].offset - min_offset)); ++ { ++ sections[i].data = ((const unsigned char *) debug_view.data ++ + (sections[i].offset - min_offset)); ++ if (i < ZDEBUG_INFO) ++ ++using_debug_view; ++ } ++ } ++ ++ /* Uncompress the old format (--compress-debug-sections=zlib-gnu). */ ++ ++ zdebug_table = NULL; ++ for (i = 0; i < ZDEBUG_INFO; ++i) ++ { ++ struct debug_section_info *pz; ++ ++ pz = §ions[i + ZDEBUG_INFO - DEBUG_INFO]; ++ if (sections[i].size == 0 && pz->size > 0) ++ { ++ unsigned char *uncompressed_data; ++ size_t uncompressed_size; ++ ++ if (zdebug_table == NULL) ++ { ++ zdebug_table = ((uint16_t *) ++ backtrace_alloc (state, ZDEBUG_TABLE_SIZE, ++ error_callback, data)); ++ if (zdebug_table == NULL) ++ goto fail; ++ } ++ ++ uncompressed_data = NULL; ++ uncompressed_size = 0; ++ if (!elf_uncompress_zdebug (state, pz->data, pz->size, zdebug_table, ++ error_callback, data, ++ &uncompressed_data, &uncompressed_size)) ++ goto fail; ++ sections[i].data = uncompressed_data; ++ sections[i].size = uncompressed_size; ++ sections[i].compressed = 0; ++ } ++ } ++ ++ /* Uncompress the official ELF format ++ (--compress-debug-sections=zlib-gabi). */ ++ for (i = 0; i < ZDEBUG_INFO; ++i) ++ { ++ unsigned char *uncompressed_data; ++ size_t uncompressed_size; ++ ++ if (sections[i].size == 0 || !sections[i].compressed) ++ continue; ++ ++ if (zdebug_table == NULL) ++ { ++ zdebug_table = ((uint16_t *) ++ backtrace_alloc (state, ZDEBUG_TABLE_SIZE, ++ error_callback, data)); ++ if (zdebug_table == NULL) ++ goto fail; ++ } ++ ++ uncompressed_data = NULL; ++ uncompressed_size = 0; ++ if (!elf_uncompress_chdr (state, sections[i].data, sections[i].size, ++ zdebug_table, error_callback, data, ++ &uncompressed_data, &uncompressed_size)) ++ goto fail; ++ sections[i].data = uncompressed_data; ++ sections[i].size = uncompressed_size; ++ sections[i].compressed = 0; ++ ++ --using_debug_view; ++ } ++ ++ if (zdebug_table != NULL) ++ backtrace_free (state, zdebug_table, ZDEBUG_TABLE_SIZE, ++ error_callback, data); ++ ++ if (debug_view_valid && using_debug_view == 0) ++ { ++ backtrace_release_view (state, &debug_view, error_callback, data); ++ debug_view_valid = 0; + } + + if (!backtrace_dwarf_add (state, base_address, +Index: b/src/libbacktrace/configure.ac +=================================================================== +--- a/src/libbacktrace/configure.ac ++++ b/src/libbacktrace/configure.ac +@@ -355,6 +355,23 @@ if test "$have_getexecname" = "yes"; the + AC_DEFINE(HAVE_GETEXECNAME, 1, [Define if getexecname is available.]) + fi + ++AC_CHECK_LIB([z], [compress], []) ++if test $ac_cv_lib_z_compress = "yes"; then ++ AC_DEFINE(HAVE_ZLIB, 1, [Define if -lz is available.]) ++fi ++AM_CONDITIONAL(HAVE_ZLIB, test "$ac_cv_lib_z_compress" = yes) ++ ++dnl Test whether the linker supports the --compress_debug_sections option. ++AC_CACHE_CHECK([whether --compress-debug-sections is supported], ++[libgo_cv_ld_compress], ++[LDFLAGS_hold=$LDFLAGS ++LDFLAGS="$LDFLAGS -Wl,--compress-debug-sections=zlib-gnu" ++AC_LINK_IFELSE([AC_LANG_PROGRAM(,)], ++[libgo_cv_ld_compress=yes], ++[libgo_cv_ld_compress=no]) ++LDFLAGS=$LDFLAGS_hold]) ++AM_CONDITIONAL(HAVE_COMPRESSED_DEBUG, test "$libgo_cv_ld_compress" = yes) ++ + AC_ARG_VAR(OBJCOPY, [location of objcopy]) + AC_CHECK_PROG(OBJCOPY, objcopy, objcopy,) + AC_CACHE_CHECK([whether objcopy supports debuglink], +Index: b/src/libbacktrace/ztest.c +=================================================================== +--- /dev/null ++++ b/src/libbacktrace/ztest.c +@@ -0,0 +1,446 @@ ++/* ztest.c -- Test for libbacktrace inflate code. ++ Copyright (C) 2017 Free Software Foundation, Inc. ++ Written by Ian Lance Taylor, Google. ++ ++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. */ ++ ++#include "config.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#ifdef HAVE_ZLIB ++#include ++#endif ++ ++#include "backtrace.h" ++#include "backtrace-supported.h" ++ ++#include "internal.h" ++#include "testlib.h" ++ ++/* Some tests for the local zlib inflation code. */ ++ ++struct zlib_test ++{ ++ const char *name; ++ const char *uncompressed; ++ const char *compressed; ++ size_t compressed_len; ++}; ++ ++/* Error callback. */ ++ ++static void ++error_callback_compress (void *vdata, const char *msg, int errnum) ++{ ++ fprintf (stderr, "%s", msg); ++ if (errnum > 0) ++ fprintf (stderr, ": %s", strerror (errnum)); ++ fprintf (stderr, "\n"); ++ exit (EXIT_FAILURE); ++} ++ ++static const struct zlib_test tests[] = ++{ ++ { ++ "empty", ++ "", ++ "\x78\x9c\x03\x00\x00\x00\x00\x01", ++ 8, ++ }, ++ { ++ "hello", ++ "hello, world\n", ++ ("\x78\x9c\xca\x48\xcd\xc9\xc9\xd7\x51\x28\xcf" ++ "\x2f\xca\x49\xe1\x02\x04\x00\x00\xff\xff\x21\xe7\x04\x93"), ++ 25, ++ }, ++ { ++ "goodbye", ++ "goodbye, world", ++ ("\x78\x9c\x4b\xcf\xcf\x4f\x49\xaa" ++ "\x4c\xd5\x51\x28\xcf\x2f\xca\x49" ++ "\x01\x00\x28\xa5\x05\x5e"), ++ 22, ++ } ++}; ++ ++/* Test the hand coded samples. */ ++ ++static void ++test_samples (struct backtrace_state *state) ++{ ++ size_t i; ++ ++ for (i = 0; i < sizeof tests / sizeof tests[0]; ++i) ++ { ++ char *p; ++ size_t v; ++ size_t j; ++ unsigned char *uncompressed; ++ size_t uncompressed_len; ++ ++ p = malloc (12 + tests[i].compressed_len); ++ memcpy (p, "ZLIB", 4); ++ v = strlen (tests[i].uncompressed); ++ for (j = 0; j < 8; ++j) ++ p[j + 4] = (v >> ((7 - j) * 8)) & 0xff; ++ memcpy (p + 12, tests[i].compressed, tests[i].compressed_len); ++ uncompressed = NULL; ++ uncompressed_len = 0; ++ if (!backtrace_uncompress_zdebug (state, (unsigned char *) p, ++ tests[i].compressed_len + 12, ++ error_callback_compress, NULL, ++ &uncompressed, &uncompressed_len)) ++ { ++ fprintf (stderr, "test %s: uncompress failed\n", tests[i].name); ++ ++failures; ++ } ++ else ++ { ++ if (uncompressed_len != v) ++ { ++ fprintf (stderr, ++ "test %s: got uncompressed length %zu, want %zu\n", ++ tests[i].name, uncompressed_len, v); ++ ++failures; ++ } ++ else if (memcmp (tests[i].uncompressed, uncompressed, v) != 0) ++ { ++ size_t j; ++ ++ fprintf (stderr, "test %s: uncompressed data mismatch\n", ++ tests[i].name); ++ for (j = 0; j < v; ++j) ++ if (tests[i].uncompressed[j] != uncompressed[j]) ++ fprintf (stderr, " %zu: got %#x want %#x\n", j, ++ uncompressed[j], tests[i].uncompressed[j]); ++ ++failures; ++ } ++ else ++ printf ("PASS: inflate %s\n", tests[i].name); ++ ++ backtrace_free (state, uncompressed, uncompressed_len, ++ error_callback_compress, NULL); ++ } ++ } ++} ++ ++#ifdef HAVE_ZLIB ++ ++/* Given a set of TRIALS timings, discard the lowest and highest ++ values and return the mean average of the rest. */ ++ ++static size_t ++average_time (const size_t *times, size_t trials) ++{ ++ size_t imax; ++ size_t max; ++ size_t imin; ++ size_t min; ++ size_t i; ++ size_t sum; ++ ++ imin = 0; ++ imax = 0; ++ min = times[0]; ++ max = times[0]; ++ for (i = 1; i < trials; ++i) ++ { ++ if (times[i] < min) ++ { ++ imin = i; ++ min = times[i]; ++ } ++ if (times[i] > max) ++ { ++ imax = i; ++ max = times[i]; ++ } ++ } ++ ++ sum = 0; ++ for (i = 0; i < trials; ++i) ++ { ++ if (i != imax && i != imin) ++ sum += times[i]; ++ } ++ return sum / (trials - 2); ++} ++ ++#endif ++ ++/* Test a larger text, if available. */ ++ ++static void ++test_large (struct backtrace_state *state) ++{ ++#ifdef HAVE_ZLIB ++ unsigned char *orig_buf; ++ size_t orig_bufsize; ++ size_t i; ++ char *compressed_buf; ++ size_t compressed_bufsize; ++ unsigned long compress_sizearg; ++ unsigned char *uncompressed_buf; ++ size_t uncompressed_bufsize; ++ int r; ++ clockid_t cid; ++ struct timespec ts1; ++ struct timespec ts2; ++ size_t ctime; ++ size_t ztime; ++ const size_t trials = 16; ++ size_t ctimes[16]; ++ size_t ztimes[16]; ++ static const char * const names[] = { ++ "Mark.Twain-Tom.Sawyer.txt", ++ "../libgo/go/compress/testdata/Mark.Twain-Tom.Sawyer.txt" ++ }; ++ ++ orig_buf = NULL; ++ orig_bufsize = 0; ++ uncompressed_buf = NULL; ++ compressed_buf = NULL; ++ ++ for (i = 0; i < sizeof names / sizeof names[0]; ++i) ++ { ++ size_t len; ++ char *namebuf; ++ FILE *e; ++ struct stat st; ++ char *rbuf; ++ size_t got; ++ ++ len = strlen (SRCDIR) + strlen (names[i]) + 2; ++ namebuf = malloc (len); ++ if (namebuf == NULL) ++ { ++ perror ("malloc"); ++ goto fail; ++ } ++ snprintf (namebuf, len, "%s/%s", SRCDIR, names[i]); ++ e = fopen (namebuf, "r"); ++ free (namebuf); ++ if (e == NULL) ++ continue; ++ if (fstat (fileno (e), &st) < 0) ++ { ++ perror ("fstat"); ++ fclose (e); ++ continue; ++ } ++ rbuf = malloc (st.st_size); ++ if (rbuf == NULL) ++ { ++ perror ("malloc"); ++ goto fail; ++ } ++ got = fread (rbuf, 1, st.st_size, e); ++ fclose (e); ++ if (got > 0) ++ { ++ orig_buf = rbuf; ++ orig_bufsize = got; ++ break; ++ } ++ free (rbuf); ++ } ++ ++ if (orig_buf == NULL) ++ { ++ /* We couldn't find an input file. */ ++ printf ("UNSUPPORTED: inflate large\n"); ++ return; ++ } ++ ++ compressed_bufsize = compressBound (orig_bufsize) + 12; ++ compressed_buf = malloc (compressed_bufsize); ++ if (compressed_buf == NULL) ++ { ++ perror ("malloc"); ++ goto fail; ++ } ++ ++ compress_sizearg = compressed_bufsize - 12; ++ r = compress (compressed_buf + 12, &compress_sizearg, ++ orig_buf, orig_bufsize); ++ if (r != Z_OK) ++ { ++ fprintf (stderr, "zlib compress failed: %d\n", r); ++ goto fail; ++ } ++ ++ compressed_bufsize = compress_sizearg + 12; ++ ++ /* Prepare the header that our library expects. */ ++ memcpy (compressed_buf, "ZLIB", 4); ++ for (i = 0; i < 8; ++i) ++ compressed_buf[i + 4] = (orig_bufsize >> ((7 - i) * 8)) & 0xff; ++ ++ uncompressed_buf = malloc (orig_bufsize); ++ if (uncompressed_buf == NULL) ++ { ++ perror ("malloc"); ++ goto fail; ++ } ++ uncompressed_bufsize = orig_bufsize; ++ ++ if (!backtrace_uncompress_zdebug (state, compressed_buf, compressed_bufsize, ++ error_callback_compress, NULL, ++ &uncompressed_buf, &uncompressed_bufsize)) ++ { ++ fprintf (stderr, "inflate large: backtrace_uncompress_zdebug failed\n"); ++ goto fail; ++ } ++ ++ if (uncompressed_bufsize != orig_bufsize) ++ { ++ fprintf (stderr, ++ "inflate large: got uncompressed length %zu, want %zu\n", ++ uncompressed_bufsize, orig_bufsize); ++ goto fail; ++ } ++ ++ if (memcmp (uncompressed_buf, orig_buf, uncompressed_bufsize) != 0) ++ { ++ fprintf (stderr, "inflate large: uncompressed data mismatch\n"); ++ goto fail; ++ } ++ ++ printf ("PASS: inflate large\n"); ++ ++ for (i = 0; i < trials; ++i) ++ { ++ cid = CLOCK_REALTIME; ++#ifdef CLOCK_PROCESS_CPUTIME_ID ++ cid = CLOCK_PROCESS_CPUTIME_ID; ++#endif ++ if (clock_gettime (cid, &ts1) < 0) ++ { ++ perror ("clock_gettime"); ++ return; ++ } ++ ++ if (!backtrace_uncompress_zdebug (state, compressed_buf, ++ compressed_bufsize, ++ error_callback_compress, NULL, ++ &uncompressed_buf, ++ &uncompressed_bufsize)) ++ { ++ fprintf (stderr, ++ ("inflate large: " ++ "benchmark backtrace_uncompress_zdebug failed\n")); ++ return; ++ } ++ ++ if (clock_gettime (cid, &ts2) < 0) ++ { ++ perror ("clock_gettime"); ++ return; ++ } ++ ++ ctime = (ts2.tv_sec - ts1.tv_sec) * 1000000000; ++ ctime += ts2.tv_nsec - ts1.tv_nsec; ++ ctimes[i] = ctime; ++ ++ if (clock_gettime (cid, &ts1) < 0) ++ { ++ perror("clock_gettime"); ++ return; ++ } ++ ++ r = uncompress (uncompressed_buf, &uncompressed_bufsize, ++ compressed_buf + 12, compressed_bufsize - 12); ++ ++ if (clock_gettime (cid, &ts2) < 0) ++ { ++ perror ("clock_gettime"); ++ return; ++ } ++ ++ if (r != Z_OK) ++ { ++ fprintf (stderr, ++ "inflate large: benchmark zlib uncompress failed: %d\n", ++ r); ++ return; ++ } ++ ++ ztime = (ts2.tv_sec - ts1.tv_sec) * 1000000000; ++ ztime += ts2.tv_nsec - ts1.tv_nsec; ++ ztimes[i] = ztime; ++ } ++ ++ /* Toss the highest and lowest times and average the rest. */ ++ ctime = average_time (ctimes, trials); ++ ztime = average_time (ztimes, trials); ++ ++ printf ("backtrace time: %zu ns\n", ctime); ++ printf ("zlib time: : %zu ns\n", ztime); ++ printf ("percentage : %g\n", (double) ztime / (double) ctime); ++ ++ return; ++ ++ fail: ++ printf ("FAIL: inflate large\n"); ++ ++failures; ++ ++ if (orig_buf != NULL) ++ free (orig_buf); ++ if (compressed_buf != NULL) ++ free (compressed_buf); ++ if (uncompressed_buf != NULL) ++ free (uncompressed_buf); ++ ++#else /* !HAVE_ZLIB */ ++ ++ printf ("UNSUPPORTED: inflate large\n"); ++ ++#endif /* !HAVE_ZLIB */ ++} ++ ++int ++main (int argc ATTRIBUTE_UNUSED, char **argv) ++{ ++ struct backtrace_state *state; ++ ++ state = backtrace_create_state (argv[0], BACKTRACE_SUPPORTS_THREADS, ++ error_callback_create, NULL); ++ ++ test_samples (state); ++ test_large (state); ++ ++ exit (failures != 0 ? EXIT_FAILURE : EXIT_SUCCESS); ++} +Index: b/src/libbacktrace/config.h.in +=================================================================== +--- a/src/libbacktrace/config.h.in ++++ b/src/libbacktrace/config.h.in +@@ -28,6 +28,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_INTTYPES_H + ++/* Define to 1 if you have the `z' library (-lz). */ ++#undef HAVE_LIBZ ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_LINK_H + +@@ -61,6 +64,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_UNISTD_H + ++/* Define if -lz is available. */ ++#undef HAVE_ZLIB ++ + /* Define to the sub-directory in which libtool stores uninstalled libraries. + */ + #undef LT_OBJDIR +Index: b/src/libbacktrace/internal.h +=================================================================== +--- a/src/libbacktrace/internal.h ++++ b/src/libbacktrace/internal.h +@@ -292,4 +292,13 @@ extern int backtrace_dwarf_add (struct b + backtrace_error_callback error_callback, + void *data, fileline *fileline_fn); + ++/* A test-only hook for elf_uncompress_zdebug. */ ++ ++extern int backtrace_uncompress_zdebug (struct backtrace_state *, ++ const unsigned char *compressed, ++ size_t compressed_size, ++ backtrace_error_callback, void *data, ++ unsigned char **uncompressed, ++ size_t *uncompressed_size); ++ + #endif +Index: b/src/libbacktrace/Makefile.am +=================================================================== +--- a/src/libbacktrace/Makefile.am ++++ b/src/libbacktrace/Makefile.am +@@ -100,6 +100,16 @@ stest_LDADD = libbacktrace.la + + check_PROGRAMS += stest + ++ztest_SOURCES = ztest.c testlib.c ++ztest_CFLAGS = -DSRCDIR=\"$(srcdir)\" ++ztest_LDADD = libbacktrace.la ++ ++if HAVE_ZLIB ++ztest_LDADD += -lz ++endif ++ ++check_PROGRAMS += ztest ++ + if HAVE_OBJCOPY_DEBUGLINK + + TESTS += dtest +@@ -110,6 +120,22 @@ dtest: btest + + endif HAVE_OBJCOPY_DEBUGLINK + ++if HAVE_COMPRESSED_DEBUG ++ ++ctestg_SOURCES = btest.c testlib.c ++ctestg_CFLAGS = $(AM_CFLAGS) -g ++ctestg_LDFLAGS = -Wl,--compress-debug-sections=zlib-gnu ++ctestg_LDADD = libbacktrace.la ++ ++ctesta_SOURCES = btest.c testlib.c ++ctesta_CFLAGS = $(AM_CFLAGS) -g ++ctesta_LDFLAGS = -Wl,--compress-debug-sections=zlib-gabi ++ctesta_LDADD = libbacktrace.la ++ ++check_PROGRAMS += ctestg ctesta ++ ++endif ++ + endif NATIVE + + # We can't use automake's automatic dependency tracking, because it --- gcc-7-7.3.0.orig/debian/patches/pr67590.diff +++ gcc-7-7.3.0/debian/patches/pr67590.diff @@ -0,0 +1,38 @@ +# DP: Fix PR67590, setting objdump macro. + +Index: b/src/libcc1/configure.ac +=================================================================== +--- a/src/libcc1/configure.ac ++++ b/src/libcc1/configure.ac +@@ -72,6 +72,31 @@ if test "$GXX" = yes; then + fi + AC_SUBST(libsuffix) + ++# Figure out what objdump we will be using. ++AS_VAR_SET_IF(gcc_cv_objdump,, [ ++if test -f $gcc_cv_binutils_srcdir/configure.ac \ ++ && test -f ../binutils/Makefile \ ++ && test x$build = x$host; then ++ # Single tree build which includes binutils. ++ gcc_cv_objdump=../binutils/objdump$build_exeext ++elif test -x objdump$build_exeext; then ++ gcc_cv_objdump=./objdump$build_exeext ++elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then ++ gcc_cv_objdump="$OBJDUMP_FOR_TARGET" ++else ++ AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET) ++fi]) ++ ++AC_MSG_CHECKING(what objdump to use) ++if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then ++ # Single tree build which includes binutils. ++ AC_MSG_RESULT(newly built objdump) ++elif test x$gcc_cv_objdump = x; then ++ AC_MSG_RESULT(not found) ++else ++ AC_MSG_RESULT($gcc_cv_objdump) ++fi ++ + dnl Test for -lsocket and -lnsl. Copied from libgo/configure.ac. + AC_CACHE_CHECK([for socket libraries], libcc1_cv_lib_sockets, + [libcc1_cv_lib_sockets= --- gcc-7-7.3.0.orig/debian/patches/pr67899.diff +++ gcc-7-7.3.0/debian/patches/pr67899.diff @@ -0,0 +1,31 @@ +# DP: Proposed patch for PR sanitizer/67899 + +Index: b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -606,11 +606,10 @@ namespace __sanitizer { + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ +-#if defined(__sparc__) +- unsigned long sa_flags; +-#else +- int sa_flags; ++#if defined(__sparc__) && defined(__arch64__) ++ int __pad; + #endif ++ int sa_flags; + #endif + #endif + #if SANITIZER_LINUX +@@ -640,7 +639,8 @@ namespace __sanitizer { + void (*handler)(int signo); + void (*sigaction)(int signo, void *info, void *ctx); + }; +- unsigned long sa_flags; ++ int __pad; ++ int sa_flags; + void (*sa_restorer)(void); + __sanitizer_kernel_sigset_t sa_mask; + }; --- gcc-7-7.3.0.orig/debian/patches/pr77631.diff +++ gcc-7-7.3.0/debian/patches/pr77631.diff @@ -0,0 +1,884 @@ +# DP: Fix PR sanitizer/77631, support separate debug info in libbacktrace. + +Index: b/src/libbacktrace/Makefile.am +=================================================================== +--- a/src/libbacktrace/Makefile.am ++++ b/src/libbacktrace/Makefile.am +@@ -100,6 +100,16 @@ stest_LDADD = libbacktrace.la + + check_PROGRAMS += stest + ++if HAVE_OBJCOPY_DEBUGLINK ++ ++TESTS += dtest ++ ++dtest: btest ++ $(OBJCOPY) --only-keep-debug btest btest.debug ++ $(OBJCOPY) --strip-debug --add-gnu-debuglink=btest.debug btest dtest ++ ++endif HAVE_OBJCOPY_DEBUGLINK ++ + endif NATIVE + + # We can't use automake's automatic dependency tracking, because it +Index: b/src/libbacktrace/Makefile.in +=================================================================== +--- a/src/libbacktrace/Makefile.in ++++ b/src/libbacktrace/Makefile.in +@@ -85,6 +85,7 @@ host_triplet = @host@ + target_triplet = @target@ + check_PROGRAMS = $(am__EXEEXT_1) + @NATIVE_TRUE@am__append_1 = btest stest ++@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@am__append_2 = dtest + subdir = . + DIST_COMMON = README ChangeLog $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/configure \ +@@ -200,6 +201,7 @@ MAKEINFO = @MAKEINFO@ + MKDIR_P = @MKDIR_P@ + NM = @NM@ + NMEDIT = @NMEDIT@ ++OBJCOPY = @OBJCOPY@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ + OTOOL = @OTOOL@ +@@ -324,7 +326,7 @@ libbacktrace_la_LIBADD = \ + $(ALLOC_FILE) + + libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD) +-TESTS = $(check_PROGRAMS) ++TESTS = $(check_PROGRAMS) $(am__append_2) + @NATIVE_TRUE@btest_SOURCES = btest.c + @NATIVE_TRUE@btest_CFLAGS = $(AM_CFLAGS) -g -O + @NATIVE_TRUE@btest_LDADD = libbacktrace.la +@@ -745,6 +747,10 @@ uninstall-am: + mostlyclean-multi pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + ++ ++@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@dtest: btest ++@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@ $(OBJCOPY) --only-keep-debug btest btest.debug ++@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@ $(OBJCOPY) --strip-debug --add-gnu-debuglink=btest.debug btest dtest + alloc.lo: config.h backtrace.h internal.h + backtrace.lo: config.h backtrace.h internal.h + btest.lo: (INCDIR)/filenames.h backtrace.h backtrace-supported.h +Index: b/src/libbacktrace/configure.ac +=================================================================== +--- a/src/libbacktrace/configure.ac ++++ b/src/libbacktrace/configure.ac +@@ -355,6 +355,20 @@ if test "$have_getexecname" = "yes"; the + AC_DEFINE(HAVE_GETEXECNAME, 1, [Define if getexecname is available.]) + fi + ++AC_ARG_VAR(OBJCOPY, [location of objcopy]) ++AC_CHECK_PROG(OBJCOPY, objcopy, objcopy,) ++AC_CACHE_CHECK([whether objcopy supports debuglink], ++[libbacktrace_cv_objcopy_debuglink], ++[if test -n "${with_target_subdir}"; then ++ libbacktrace_cv_objcopy_debuglink=no ++elif ${OBJCOPY} --add-gnu-debuglink=x /bin/ls /tmp/ls$$; then ++ rm -f /tmp/ls$$ ++ libbacktrace_cv_objcopy_debuglink=yes ++else ++ libbacktrace_cv_objcopy_debuglink=no ++fi]) ++AM_CONDITIONAL(HAVE_OBJCOPY_DEBUGLINK, test "$libbacktrace_cv_objcopy_debuglink" = yes) ++ + AC_CACHE_CHECK([whether tests can run], + [libbacktrace_cv_sys_native], + [AC_RUN_IFELSE([AC_LANG_PROGRAM([], [return 0;])], +Index: b/src/libbacktrace/elf.c +=================================================================== +--- a/src/libbacktrace/elf.c ++++ b/src/libbacktrace/elf.c +@@ -32,9 +32,12 @@ POSSIBILITY OF SUCH DAMAGE. */ + + #include "config.h" + ++#include + #include + #include + #include ++#include ++#include + + #ifdef HAVE_DL_ITERATE_PHDR + #include +@@ -43,6 +46,35 @@ POSSIBILITY OF SUCH DAMAGE. */ + #include "backtrace.h" + #include "internal.h" + ++#ifndef S_ISLNK ++ #ifndef S_IFLNK ++ #define S_IFLNK 0120000 ++ #endif ++ #ifndef S_IFMT ++ #define S_IFMT 0170000 ++ #endif ++ #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) ++#endif ++ ++#if !defined(HAVE_DECL_STRNLEN) || !HAVE_DECL_STRNLEN ++ ++/* If strnlen is not declared, provide our own version. */ ++ ++static size_t ++xstrnlen (const char *s, size_t maxlen) ++{ ++ size_t i; ++ ++ for (i = 0; i < maxlen; ++i) ++ if (s[i] == '\0') ++ break; ++ return i; ++} ++ ++#define strnlen xstrnlen ++ ++#endif ++ + #ifndef HAVE_DL_ITERATE_PHDR + + /* Dummy version of dl_iterate_phdr for systems that don't have it. */ +@@ -106,6 +138,7 @@ dl_iterate_phdr (int (*callback) (struct + #undef SHF_COMPRESSED + #undef STT_OBJECT + #undef STT_FUNC ++#undef NT_GNU_BUILD_ID + + /* Basic types. */ + +@@ -227,6 +260,16 @@ typedef struct + #define STT_OBJECT 1 + #define STT_FUNC 2 + ++typedef struct ++{ ++ uint32_t namesz; ++ uint32_t descsz; ++ uint32_t type; ++ char name[1]; ++} b_elf_note; ++ ++#define NT_GNU_BUILD_ID 3 ++ + /* An index of ELF sections we care about. */ + + enum debug_section +@@ -286,6 +329,102 @@ struct elf_syminfo_data + size_t count; + }; + ++/* Compute the CRC-32 of BUF/LEN. This uses the CRC used for ++ .gnu_debuglink files. */ ++ ++static uint32_t ++elf_crc32 (uint32_t crc, const unsigned char *buf, size_t len) ++{ ++ static const uint32_t crc32_table[256] = ++ { ++ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, ++ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, ++ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, ++ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, ++ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, ++ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, ++ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, ++ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, ++ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, ++ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, ++ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, ++ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, ++ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, ++ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, ++ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, ++ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, ++ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, ++ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, ++ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, ++ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, ++ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, ++ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, ++ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, ++ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, ++ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, ++ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, ++ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, ++ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, ++ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, ++ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, ++ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, ++ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, ++ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, ++ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, ++ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, ++ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, ++ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, ++ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, ++ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, ++ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, ++ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, ++ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, ++ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, ++ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, ++ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, ++ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, ++ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, ++ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, ++ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, ++ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, ++ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, ++ 0x2d02ef8d ++ }; ++ const unsigned char *end; ++ ++ crc = ~crc; ++ for (end = buf + len; buf < end; ++ buf) ++ crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); ++ return ~crc; ++} ++ ++/* Return the CRC-32 of the entire file open at DESCRIPTOR. */ ++ ++static uint32_t ++elf_crc32_file (struct backtrace_state *state, int descriptor, ++ backtrace_error_callback error_callback, void *data) ++{ ++ struct stat st; ++ struct backtrace_view file_view; ++ uint32_t ret; ++ ++ if (fstat (descriptor, &st) < 0) ++ { ++ error_callback (data, "fstat", errno); ++ return 0; ++ } ++ ++ if (!backtrace_get_view (state, descriptor, 0, st.st_size, error_callback, ++ data, &file_view)) ++ return 0; ++ ++ ret = elf_crc32 (0, (const unsigned char *) file_view.data, st.st_size); ++ ++ backtrace_release_view (state, &file_view, error_callback, data); ++ ++ return ret; ++} ++ + /* A dummy callback function used when we can't find any debug info. */ + + static int +@@ -513,6 +652,293 @@ elf_syminfo (struct backtrace_state *sta + callback (data, addr, sym->name, sym->address, sym->size); + } + ++/* Return whether FILENAME is a symlink. */ ++ ++static int ++elf_is_symlink (const char *filename) ++{ ++ struct stat st; ++ ++ if (lstat (filename, &st) < 0) ++ return 0; ++ return S_ISLNK (st.st_mode); ++} ++ ++/* Return the results of reading the symlink FILENAME in a buffer ++ allocated by backtrace_alloc. Return the length of the buffer in ++ *LEN. */ ++ ++static char * ++elf_readlink (struct backtrace_state *state, const char *filename, ++ backtrace_error_callback error_callback, void *data, ++ size_t *plen) ++{ ++ size_t len; ++ char *buf; ++ ++ len = 128; ++ while (1) ++ { ++ ssize_t rl; ++ ++ buf = backtrace_alloc (state, len, error_callback, data); ++ if (buf == NULL) ++ return NULL; ++ rl = readlink (filename, buf, len); ++ if (rl < 0) ++ { ++ backtrace_free (state, buf, len, error_callback, data); ++ return NULL; ++ } ++ if ((size_t) rl < len - 1) ++ { ++ buf[rl] = '\0'; ++ *plen = len; ++ return buf; ++ } ++ backtrace_free (state, buf, len, error_callback, data); ++ len *= 2; ++ } ++} ++ ++/* Open a separate debug info file, using the build ID to find it. ++ Returns an open file descriptor, or -1. ++ ++ The GDB manual says that the only place gdb looks for a debug file ++ when the build ID is known is in /usr/lib/debug/.build-id. */ ++ ++static int ++elf_open_debugfile_by_buildid (struct backtrace_state *state, ++ const char *buildid_data, size_t buildid_size, ++ backtrace_error_callback error_callback, ++ void *data) ++{ ++ const char * const prefix = "/usr/lib/debug/.build-id/"; ++ const size_t prefix_len = strlen (prefix); ++ const char * const suffix = ".debug"; ++ const size_t suffix_len = strlen (suffix); ++ size_t len; ++ char *bd_filename; ++ char *t; ++ size_t i; ++ int ret; ++ int does_not_exist; ++ ++ len = prefix_len + buildid_size * 2 + suffix_len + 2; ++ bd_filename = backtrace_alloc (state, len, error_callback, data); ++ if (bd_filename == NULL) ++ return -1; ++ ++ t = bd_filename; ++ memcpy (t, prefix, prefix_len); ++ t += prefix_len; ++ for (i = 0; i < buildid_size; i++) ++ { ++ unsigned char b; ++ unsigned char nib; ++ ++ b = (unsigned char) buildid_data[i]; ++ nib = (b & 0xf0) >> 4; ++ *t++ = nib < 10 ? '0' + nib : 'a' + nib - 10; ++ nib = b & 0x0f; ++ *t++ = nib < 10 ? '0' + nib : 'a' + nib - 10; ++ if (i == 0) ++ *t++ = '/'; ++ } ++ memcpy (t, suffix, suffix_len); ++ t[suffix_len] = '\0'; ++ ++ ret = backtrace_open (bd_filename, error_callback, data, &does_not_exist); ++ ++ backtrace_free (state, bd_filename, len, error_callback, data); ++ ++ /* gdb checks that the debuginfo file has the same build ID note. ++ That seems kind of pointless to me--why would it have the right ++ name but not the right build ID?--so skipping the check. */ ++ ++ return ret; ++} ++ ++/* Try to open a file whose name is PREFIX (length PREFIX_LEN) ++ concatenated with PREFIX2 (length PREFIX2_LEN) concatenated with ++ DEBUGLINK_NAME. Returns an open file descriptor, or -1. */ ++ ++static int ++elf_try_debugfile (struct backtrace_state *state, const char *prefix, ++ size_t prefix_len, const char *prefix2, size_t prefix2_len, ++ const char *debuglink_name, ++ backtrace_error_callback error_callback, void *data) ++{ ++ size_t debuglink_len; ++ size_t try_len; ++ char *try; ++ int does_not_exist; ++ int ret; ++ ++ debuglink_len = strlen (debuglink_name); ++ try_len = prefix_len + prefix2_len + debuglink_len + 1; ++ try = backtrace_alloc (state, try_len, error_callback, data); ++ if (try == NULL) ++ return -1; ++ ++ memcpy (try, prefix, prefix_len); ++ memcpy (try + prefix_len, prefix2, prefix2_len); ++ memcpy (try + prefix_len + prefix2_len, debuglink_name, debuglink_len); ++ try[prefix_len + prefix2_len + debuglink_len] = '\0'; ++ ++ ret = backtrace_open (try, error_callback, data, &does_not_exist); ++ ++ backtrace_free (state, try, try_len, error_callback, data); ++ ++ return ret; ++} ++ ++/* Find a separate debug info file, using the debuglink section data ++ to find it. Returns an open file descriptor, or -1. */ ++ ++static int ++elf_find_debugfile_by_debuglink (struct backtrace_state *state, ++ const char *filename, ++ const char *debuglink_name, ++ backtrace_error_callback error_callback, ++ void *data) ++{ ++ int ret; ++ char *alc; ++ size_t alc_len; ++ const char *slash; ++ int ddescriptor; ++ const char *prefix; ++ size_t prefix_len; ++ ++ /* Resolve symlinks in FILENAME. Since FILENAME is fairly likely to ++ be /proc/self/exe, symlinks are common. We don't try to resolve ++ the whole path name, just the base name. */ ++ ret = -1; ++ alc = NULL; ++ alc_len = 0; ++ while (elf_is_symlink (filename)) ++ { ++ char *new_buf; ++ size_t new_len; ++ ++ new_buf = elf_readlink (state, filename, error_callback, data, &new_len); ++ if (new_buf == NULL) ++ break; ++ ++ if (new_buf[0] == '/') ++ filename = new_buf; ++ else ++ { ++ slash = strrchr (filename, '/'); ++ if (slash == NULL) ++ filename = new_buf; ++ else ++ { ++ size_t clen; ++ char *c; ++ ++ slash++; ++ clen = slash - filename + strlen (new_buf) + 1; ++ c = backtrace_alloc (state, clen, error_callback, data); ++ if (c == NULL) ++ goto done; ++ ++ memcpy (c, filename, slash - filename); ++ memcpy (c + (slash - filename), new_buf, strlen (new_buf)); ++ c[slash - filename + strlen (new_buf)] = '\0'; ++ backtrace_free (state, new_buf, new_len, error_callback, data); ++ filename = c; ++ new_buf = c; ++ new_len = clen; ++ } ++ } ++ ++ if (alc != NULL) ++ backtrace_free (state, alc, alc_len, error_callback, data); ++ alc = new_buf; ++ alc_len = new_len; ++ } ++ ++ /* Look for DEBUGLINK_NAME in the same directory as FILENAME. */ ++ ++ slash = strrchr (filename, '/'); ++ if (slash == NULL) ++ { ++ prefix = ""; ++ prefix_len = 0; ++ } ++ else ++ { ++ slash++; ++ prefix = filename; ++ prefix_len = slash - filename; ++ } ++ ++ ddescriptor = elf_try_debugfile (state, prefix, prefix_len, "", 0, ++ debuglink_name, error_callback, data); ++ if (ddescriptor >= 0) ++ { ++ ret = ddescriptor; ++ goto done; ++ } ++ ++ /* Look for DEBUGLINK_NAME in a .debug subdirectory of FILENAME. */ ++ ++ ddescriptor = elf_try_debugfile (state, prefix, prefix_len, ".debug/", ++ strlen (".debug/"), debuglink_name, ++ error_callback, data); ++ if (ddescriptor >= 0) ++ { ++ ret = ddescriptor; ++ goto done; ++ } ++ ++ /* Look for DEBUGLINK_NAME in /usr/lib/debug. */ ++ ++ ddescriptor = elf_try_debugfile (state, "/usr/lib/debug/", ++ strlen ("/usr/lib/debug/"), prefix, ++ prefix_len, debuglink_name, ++ error_callback, data); ++ if (ddescriptor >= 0) ++ ret = ddescriptor; ++ ++ done: ++ if (alc != NULL && alc_len > 0) ++ backtrace_free (state, alc, alc_len, error_callback, data); ++ return ret; ++} ++ ++/* Open a separate debug info file, using the debuglink section data ++ to find it. Returns an open file descriptor, or -1. */ ++ ++static int ++elf_open_debugfile_by_debuglink (struct backtrace_state *state, ++ const char *filename, ++ const char *debuglink_name, ++ uint32_t debuglink_crc, ++ backtrace_error_callback error_callback, ++ void *data) ++{ ++ int ddescriptor; ++ uint32_t got_crc; ++ ++ ddescriptor = elf_find_debugfile_by_debuglink (state, filename, ++ debuglink_name, ++ error_callback, data); ++ if (ddescriptor < 0) ++ return -1; ++ ++ got_crc = elf_crc32_file (state, ddescriptor, error_callback, data); ++ if (got_crc != debuglink_crc) ++ { ++ backtrace_close (ddescriptor, error_callback, data); ++ return -1; ++ } ++ ++ return ddescriptor; ++} ++ + /* Add the backtrace data for one ELF file. Returns 1 on success, + 0 on failure (in both cases descriptor is closed) or -1 if exe + is non-zero and the ELF file is ET_DYN, which tells the caller that +@@ -520,9 +946,10 @@ elf_syminfo (struct backtrace_state *sta + base_address is determined. */ + + static int +-elf_add (struct backtrace_state *state, int descriptor, uintptr_t base_address, +- backtrace_error_callback error_callback, void *data, +- fileline *fileline_fn, int *found_sym, int *found_dwarf, int exe) ++elf_add (struct backtrace_state *state, const char *filename, int descriptor, ++ uintptr_t base_address, backtrace_error_callback error_callback, ++ void *data, fileline *fileline_fn, int *found_sym, int *found_dwarf, ++ int exe, int debuginfo) + { + struct backtrace_view ehdr_view; + b_elf_ehdr ehdr; +@@ -546,6 +973,14 @@ elf_add (struct backtrace_state *state, + int symtab_view_valid; + struct backtrace_view strtab_view; + int strtab_view_valid; ++ struct backtrace_view buildid_view; ++ int buildid_view_valid; ++ const char *buildid_data; ++ uint32_t buildid_size; ++ struct backtrace_view debuglink_view; ++ int debuglink_view_valid; ++ const char *debuglink_name; ++ uint32_t debuglink_crc; + off_t min_offset; + off_t max_offset; + struct backtrace_view debug_view; +@@ -558,6 +993,12 @@ elf_add (struct backtrace_state *state, + names_view_valid = 0; + symtab_view_valid = 0; + strtab_view_valid = 0; ++ buildid_view_valid = 0; ++ buildid_data = NULL; ++ buildid_size = 0; ++ debuglink_view_valid = 0; ++ debuglink_name = NULL; ++ debuglink_crc = 0; + debug_view_valid = 0; + + if (!backtrace_get_view (state, descriptor, 0, sizeof ehdr, error_callback, +@@ -711,11 +1152,62 @@ elf_add (struct backtrace_state *state, + break; + } + } ++ ++ ++ /* Read the build ID if present. This could check for any ++ SHT_NOTE section with the right note name and type, but gdb ++ looks for a specific section name. */ ++ if (!debuginfo ++ && !buildid_view_valid ++ && strcmp (name, ".note.gnu.build-id") == 0) ++ { ++ const b_elf_note *note; ++ ++ if (!backtrace_get_view (state, descriptor, shdr->sh_offset, ++ shdr->sh_size, error_callback, data, ++ &buildid_view)) ++ goto fail; ++ ++ buildid_view_valid = 1; ++ note = (const b_elf_note *) buildid_view.data; ++ if (note->type == NT_GNU_BUILD_ID ++ && note->namesz == 4 ++ && strncmp (note->name, "GNU", 4) == 0 ++ && shdr->sh_size < 12 + ((note->namesz + 3) & ~ 3) + note->descsz) ++ { ++ buildid_data = ¬e->name[0] + ((note->namesz + 3) & ~ 3); ++ buildid_size = note->descsz; ++ } ++ } ++ ++ /* Read the debuglink file if present. */ ++ if (!debuginfo ++ && !debuglink_view_valid ++ && strcmp (name, ".gnu_debuglink") == 0) ++ { ++ const char *debuglink_data; ++ size_t crc_offset; ++ ++ if (!backtrace_get_view (state, descriptor, shdr->sh_offset, ++ shdr->sh_size, error_callback, data, ++ &debuglink_view)) ++ goto fail; ++ ++ debuglink_view_valid = 1; ++ debuglink_data = (const char *) debuglink_view.data; ++ crc_offset = strnlen (debuglink_data, shdr->sh_size); ++ crc_offset = (crc_offset + 3) & ~3; ++ if (crc_offset + 4 <= shdr->sh_size) ++ { ++ debuglink_name = debuglink_data; ++ debuglink_crc = *(const uint32_t*)(debuglink_data + crc_offset); ++ } ++ } + } + + if (symtab_shndx == 0) + symtab_shndx = dynsym_shndx; +- if (symtab_shndx != 0) ++ if (symtab_shndx != 0 && !debuginfo) + { + const b_elf_shdr *symtab_shdr; + unsigned int strtab_shndx; +@@ -761,6 +1253,7 @@ elf_add (struct backtrace_state *state, + /* We no longer need the symbol table, but we hold on to the + string table permanently. */ + backtrace_release_view (state, &symtab_view, error_callback, data); ++ symtab_view_valid = 0; + + *found_sym = 1; + +@@ -774,6 +1267,53 @@ elf_add (struct backtrace_state *state, + backtrace_release_view (state, &names_view, error_callback, data); + names_view_valid = 0; + ++ /* If the debug info is in a separate file, read that one instead. */ ++ ++ if (buildid_data != NULL) ++ { ++ int d; ++ ++ d = elf_open_debugfile_by_buildid (state, buildid_data, buildid_size, ++ error_callback, data); ++ if (d >= 0) ++ { ++ backtrace_release_view (state, &buildid_view, error_callback, data); ++ if (debuglink_view_valid) ++ backtrace_release_view (state, &debuglink_view, error_callback, ++ data); ++ return elf_add (state, NULL, d, base_address, error_callback, data, ++ fileline_fn, found_sym, found_dwarf, 0, 1); ++ } ++ } ++ ++ if (buildid_view_valid) ++ { ++ backtrace_release_view (state, &buildid_view, error_callback, data); ++ buildid_view_valid = 0; ++ } ++ ++ if (debuglink_name != NULL) ++ { ++ int d; ++ ++ d = elf_open_debugfile_by_debuglink (state, filename, debuglink_name, ++ debuglink_crc, error_callback, ++ data); ++ if (d >= 0) ++ { ++ backtrace_release_view (state, &debuglink_view, error_callback, ++ data); ++ return elf_add (state, NULL, d, base_address, error_callback, data, ++ fileline_fn, found_sym, found_dwarf, 0, 1); ++ } ++ } ++ ++ if (debuglink_view_valid) ++ { ++ backtrace_release_view (state, &debuglink_view, error_callback, data); ++ debuglink_view_valid = 0; ++ } ++ + /* Read all the debug sections in a single view, since they are + probably adjacent in the file. We never release this view. */ + +@@ -846,6 +1386,10 @@ elf_add (struct backtrace_state *state, + backtrace_release_view (state, &symtab_view, error_callback, data); + if (strtab_view_valid) + backtrace_release_view (state, &strtab_view, error_callback, data); ++ if (debuglink_view_valid) ++ backtrace_release_view (state, &debuglink_view, error_callback, data); ++ if (buildid_view_valid) ++ backtrace_release_view (state, &buildid_view, error_callback, data); + if (debug_view_valid) + backtrace_release_view (state, &debug_view, error_callback, data); + if (descriptor != -1) +@@ -863,6 +1407,7 @@ struct phdr_data + fileline *fileline_fn; + int *found_sym; + int *found_dwarf; ++ const char *exe_filename; + int exe_descriptor; + }; + +@@ -877,6 +1422,7 @@ phdr_callback (struct dl_phdr_info *info + void *pdata) + { + struct phdr_data *pd = (struct phdr_data *) pdata; ++ const char *filename; + int descriptor; + int does_not_exist; + fileline elf_fileline_fn; +@@ -889,6 +1435,7 @@ phdr_callback (struct dl_phdr_info *info + { + if (pd->exe_descriptor == -1) + return 0; ++ filename = pd->exe_filename; + descriptor = pd->exe_descriptor; + pd->exe_descriptor = -1; + } +@@ -900,14 +1447,16 @@ phdr_callback (struct dl_phdr_info *info + pd->exe_descriptor = -1; + } + ++ filename = info->dlpi_name; + descriptor = backtrace_open (info->dlpi_name, pd->error_callback, + pd->data, &does_not_exist); + if (descriptor < 0) + return 0; + } + +- if (elf_add (pd->state, descriptor, info->dlpi_addr, pd->error_callback, +- pd->data, &elf_fileline_fn, pd->found_sym, &found_dwarf, 0)) ++ if (elf_add (pd->state, filename, descriptor, info->dlpi_addr, ++ pd->error_callback, pd->data, &elf_fileline_fn, pd->found_sym, ++ &found_dwarf, 0, 0)) + { + if (found_dwarf) + { +@@ -924,8 +1473,8 @@ phdr_callback (struct dl_phdr_info *info + sections. */ + + int +-backtrace_initialize (struct backtrace_state *state, int descriptor, +- backtrace_error_callback error_callback, ++backtrace_initialize (struct backtrace_state *state, const char *filename, ++ int descriptor, backtrace_error_callback error_callback, + void *data, fileline *fileline_fn) + { + int ret; +@@ -934,8 +1483,8 @@ backtrace_initialize (struct backtrace_s + fileline elf_fileline_fn = elf_nodebug; + struct phdr_data pd; + +- ret = elf_add (state, descriptor, 0, error_callback, data, &elf_fileline_fn, +- &found_sym, &found_dwarf, 1); ++ ret = elf_add (state, filename, descriptor, 0, error_callback, data, ++ &elf_fileline_fn, &found_sym, &found_dwarf, 1, 0); + if (!ret) + return 0; + +@@ -945,6 +1494,7 @@ backtrace_initialize (struct backtrace_s + pd.fileline_fn = &elf_fileline_fn; + pd.found_sym = &found_sym; + pd.found_dwarf = &found_dwarf; ++ pd.exe_filename = filename; + pd.exe_descriptor = ret < 0 ? descriptor : -1; + + dl_iterate_phdr (phdr_callback, (void *) &pd); +Index: b/src/libbacktrace/fileline.c +=================================================================== +--- a/src/libbacktrace/fileline.c ++++ b/src/libbacktrace/fileline.c +@@ -57,6 +57,7 @@ fileline_initialize (struct backtrace_st + int pass; + int called_error_callback; + int descriptor; ++ const char *filename; + + if (!state->threaded) + failed = state->fileline_initialization_failed; +@@ -82,7 +83,6 @@ fileline_initialize (struct backtrace_st + called_error_callback = 0; + for (pass = 0; pass < 4; ++pass) + { +- const char *filename; + int does_not_exist; + + switch (pass) +@@ -133,8 +133,8 @@ fileline_initialize (struct backtrace_st + + if (!failed) + { +- if (!backtrace_initialize (state, descriptor, error_callback, data, +- &fileline_fn)) ++ if (!backtrace_initialize (state, filename, descriptor, error_callback, ++ data, &fileline_fn)) + failed = 1; + } + +Index: b/src/libbacktrace/internal.h +=================================================================== +--- a/src/libbacktrace/internal.h ++++ b/src/libbacktrace/internal.h +@@ -268,6 +268,7 @@ extern int backtrace_vector_release (str + appropriate one. */ + + extern int backtrace_initialize (struct backtrace_state *state, ++ const char *filename, + int descriptor, + backtrace_error_callback error_callback, + void *data, +Index: b/src/libbacktrace/pecoff.c +=================================================================== +--- a/src/libbacktrace/pecoff.c ++++ b/src/libbacktrace/pecoff.c +@@ -890,7 +890,8 @@ coff_add (struct backtrace_state *state, + sections. */ + + int +-backtrace_initialize (struct backtrace_state *state, int descriptor, ++backtrace_initialize (struct backtrace_state *state, ++ const char *filename ATTRIBUTE_UNUSED, int descriptor, + backtrace_error_callback error_callback, + void *data, fileline *fileline_fn) + { +Index: b/src/libbacktrace/unknown.c +=================================================================== +--- a/src/libbacktrace/unknown.c ++++ b/src/libbacktrace/unknown.c +@@ -54,6 +54,7 @@ unknown_fileline (struct backtrace_state + + int + backtrace_initialize (struct backtrace_state *state ATTRIBUTE_UNUSED, ++ const char *filename ATTRIBUTE_UNUSED, + int descriptor ATTRIBUTE_UNUSED, + backtrace_error_callback error_callback ATTRIBUTE_UNUSED, + void *data ATTRIBUTE_UNUSED, fileline *fileline_fn) --- gcc-7-7.3.0.orig/debian/patches/pr81356.diff +++ gcc-7-7.3.0/debian/patches/pr81356.diff @@ -0,0 +1,62 @@ +# DP: Fix PR target/81356 (AArch64) +# DP: Avoid memory access w/ __builtin_strcpy of empty string. + +diff -urpN a/src/gcc/config/aarch64/aarch64.c b/src/gcc/config/aarch64/aarch64.c +--- a/src/gcc/config/aarch64/aarch64.c 2018-01-08 17:26:17.048619887 -0500 ++++ b/src/gcc/config/aarch64/aarch64.c 2018-01-08 17:37:19.677001978 -0500 +@@ -14083,22 +14083,6 @@ aarch64_asan_shadow_offset (void) + return (HOST_WIDE_INT_1 << 36); + } + +-static bool +-aarch64_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, +- unsigned int align, +- enum by_pieces_operation op, +- bool speed_p) +-{ +- /* STORE_BY_PIECES can be used when copying a constant string, but +- in that case each 64-bit chunk takes 5 insns instead of 2 (LDR/STR). +- For now we always fail this and let the move_by_pieces code copy +- the string from read-only memory. */ +- if (op == STORE_BY_PIECES) +- return false; +- +- return default_use_by_pieces_infrastructure_p (size, align, op, speed_p); +-} +- + static rtx + aarch64_gen_ccmp_first (rtx_insn **prep_seq, rtx_insn **gen_seq, + int code, tree treeop0, tree treeop1) +@@ -15591,10 +15575,6 @@ aarch64_libgcc_floating_mode_supported_p + #undef TARGET_LEGITIMIZE_ADDRESS + #define TARGET_LEGITIMIZE_ADDRESS aarch64_legitimize_address + +-#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P +-#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \ +- aarch64_use_by_pieces_infrastructure_p +- + #undef TARGET_SCHED_CAN_SPECULATE_INSN + #define TARGET_SCHED_CAN_SPECULATE_INSN aarch64_sched_can_speculate_insn + +diff -urpN a/src/gcc/testsuite/gcc.target/aarch64/pr81356.c b/src/gcc/testsuite/gcc.target/aarch64/pr81356.c +--- a/src/gcc/testsuite/gcc.target/aarch64/pr81356.c 1969-12-31 19:00:00.000000000 -0500 ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr81356.c 2018-01-08 17:37:48.251938066 -0500 +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++void f(char *a) ++{ ++ __builtin_strcpy (a, ""); ++} ++ ++/* { dg-final { scan-assembler-not "ldrb" } } */ +diff -urpN a/src/gcc/testsuite/gfortran.dg/pr45636.f90 b/src/gcc/testsuite/gfortran.dg/pr45636.f90 +--- a/src/gcc/testsuite/gfortran.dg/pr45636.f90 2015-05-29 04:20:29.810091000 -0400 ++++ b/src/gcc/testsuite/gfortran.dg/pr45636.f90 2018-01-08 17:38:20.779324980 -0500 +@@ -12,4 +12,4 @@ program main + end program main + ! This test will fail on targets which prefer memcpy/memset over + ! move_by_pieces/store_by_pieces. +-! { dg-final { scan-tree-dump-times "memset" 0 "forwprop2" { xfail { { hppa*-*-* && { ! lp64 } } || { { mips*-*-* && { ! nomips16 } } || { aarch64*-*-* } } } } } } ++! { dg-final { scan-tree-dump-times "memset" 0 "forwprop2" { xfail { { hppa*-*-* && { ! lp64 } } || { mips*-*-* && { ! nomips16 } } } } } } --- gcc-7-7.3.0.orig/debian/patches/pr83204.diff +++ gcc-7-7.3.0/debian/patches/pr83204.diff @@ -0,0 +1,63 @@ +# DP: Fix PR c++/83204, taken from the trunk + +gcc/cp/ + +2018-02-08 Paolo Carlini + + PR c++/83204 + * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF. + +gcc/testsuite/ + +2018-02-08 Paolo Carlini + + PR c++/83204 + * g++.dg/cpp0x/lambda/lambda-ice25.C: New. + +Index: b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice25.C +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice25.C +@@ -0,0 +1,27 @@ ++// PR c++/83204 ++// { dg-do compile { target c++11 } } ++ ++int rand(); ++ ++template ++struct s ++{ ++ int count() { return rand(); } ++}; ++ ++template ++void f(s a) ++{ ++ int const x = a.count(); ++ int r = 0; ++ auto l = [&](int& r) ++ { ++ for(int y = 0, yend = (x); y < yend; ++y) ++ { ++ r += y; ++ } ++ }; ++ l(r); ++} ++ ++template void f(s); +Index: b/src/gcc/cp/pt.c +=================================================================== +--- a/src/gcc/cp/pt.c ++++ b/src/gcc/cp/pt.c +@@ -16810,8 +16810,8 @@ tsubst_copy_and_build (tree t, + r = build_x_indirect_ref (input_location, r, RO_UNARY_STAR, + complain|decltype_flag); + +- if (TREE_CODE (r) == INDIRECT_REF) +- REF_PARENTHESIZED_P (r) = REF_PARENTHESIZED_P (t); ++ if (REF_PARENTHESIZED_P (t)) ++ r = force_paren_expr (r); + + RETURN (r); + } --- gcc-7-7.3.0.orig/debian/patches/pr84475.diff +++ gcc-7-7.3.0/debian/patches/pr84475.diff @@ -0,0 +1,21 @@ +# DP: Fix PR target/84475, taken from the trunk + +gcc/ + +2018-02-13 Andreas Schwab + + * config/riscv/linux.h (CPP_SPEC): Define. + +Index: b/src/gcc/config/riscv/linux.h +=================================================================== +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -47,6 +47,8 @@ along with GCC; see the file COPYING3. + + #define ICACHE_FLUSH_FUNC "__riscv_flush_icache" + ++#define CPP_SPEC "%{pthread:-D_REENTRANT}" ++ + #define LINK_SPEC "\ + -hash-style=gnu \ + -melf" XLEN_SPEC "lriscv \ --- gcc-7-7.3.0.orig/debian/patches/rename-info-files.diff +++ gcc-7-7.3.0/debian/patches/rename-info-files.diff @@ -0,0 +1,710 @@ +# DP: Allow transformations on info file names. Reference the +# DP: transformed info file names in the texinfo files. + + +2004-02-17 Matthias Klose + +gcc/ChangeLog: + * Makefile.in: Allow transformations on info file names. + Define MAKEINFODEFS, macros to pass transformated info file + names to makeinfo. + * doc/cpp.texi: Use macros defined in MAKEINFODEFS for references. + * doc/cppinternals.texi: Likewise. + * doc/extend.texi: Likewise. + * doc/gcc.texi: Likewise. + * doc/gccint.texi: Likewise. + * doc/invoke.texi: Likewise. + * doc/libgcc.texi: Likewise. + * doc/makefile.texi: Likewise. + * doc/passes.texi: Likewise. + * doc/sourcebuild.texi: Likewise. + * doc/standards.texi: Likewise. + * doc/trouble.texi: Likewise. + +gcc/fortran/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * gfortran.texi: Use macros defined in MAKEINFODEFS for references. + +Index: b/src/gcc/fortran/gfortran.texi +=================================================================== +--- a/src/gcc/fortran/gfortran.texi ++++ b/src/gcc/fortran/gfortran.texi +@@ -101,7 +101,7 @@ Texts being (a) (see below), and with th + @ifinfo + @dircategory Software development + @direntry +-* gfortran: (gfortran). The GNU Fortran Compiler. ++* @value{fngfortran}: (@value{fngfortran}). The GNU Fortran Compiler. + @end direntry + This file documents the use and the internals of + the GNU Fortran compiler, (@command{gfortran}). +Index: b/src/gcc/fortran/Make-lang.in +=================================================================== +--- a/src/gcc/fortran/Make-lang.in ++++ b/src/gcc/fortran/Make-lang.in +@@ -114,7 +114,8 @@ fortran.tags: force + cd $(srcdir)/fortran; etags -o TAGS.sub *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-fortran.info: doc/gfortran.info doc/gfc-internals.info ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++fortran.info: doc/$(INFO_FORTRAN_NAME).info + fortran.dvi: doc/gfortran.dvi doc/gfc-internals.dvi + + F95_HTMLFILES = $(build_htmldir)/gfortran +@@ -181,10 +182,10 @@ GFORTRAN_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfortran.info: $(GFORTRAN_TEXI) ++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfortran.info-*; \ +- $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++ $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ + -o $@ $<; \ + else true; fi + +@@ -249,7 +250,7 @@ fortran.install-common: install-finclude + + fortran.install-plugin: + +-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info ++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info + + fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext) + +@@ -267,7 +268,7 @@ fortran.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \ + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ +- rm -rf $(DESTDIR)$(infodir)/gfortran.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info* + + # + # Clean hooks: +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3060,8 +3060,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 + +@@ -3108,7 +3131,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 $@ + + +@@ -3116,21 +3152,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 + +@@ -3549,11 +3605,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 +@@ -3774,8 +3830,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 +@@ -11612,7 +11612,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 +@@ -11621,7 +11621,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 +@@ -26626,7 +26626,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 +@@ -26786,7 +26786,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 +@@ -21890,7 +21890,7 @@ want to write code that checks whether t + test for the GNU compiler the same way as for C programs: check for a + predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to + test specifically for GNU C++ (@pxref{Common Predefined Macros,, +-Predefined Macros,cpp,The GNU C Preprocessor}). ++Predefined Macros,@value{fncpp},The GNU C Preprocessor}). + + @menu + * C++ Volatiles:: What constitutes an access to a volatile object. +Index: b/src/gcc/doc/standards.texi +=================================================================== +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -315,5 +315,5 @@ freely available at @uref{http://www.hsa + GNAT Reference Manual}, for information on standard + conformance and compatibility of the Ada compiler. + +-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details ++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details + of standards supported by GNU Fortran. +Index: b/src/gcc/doc/libgcc.texi +=================================================================== +--- a/src/gcc/doc/libgcc.texi ++++ b/src/gcc/doc/libgcc.texi +@@ -24,7 +24,7 @@ that needs them. + GCC will also generate calls to C library routines, such as + @code{memcpy} and @code{memset}, in some cases. The set of routines + that GCC may possibly use is documented in @ref{Other +-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}. ++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}. + + These routines take arguments and return values of a specific machine + mode, not a specific C type. @xref{Machine Modes}, for an explanation +Index: b/src/gcc/doc/gccint.texi +=================================================================== +--- a/src/gcc/doc/gccint.texi ++++ b/src/gcc/doc/gccint.texi +@@ -49,7 +49,7 @@ Texts being (a) (see below), and with th + @ifnottex + @dircategory Software development + @direntry +-* gccint: (gccint). Internals of the GNU Compiler Collection. ++* @value{fngccint}: (@value{fngccint}). Internals of the GNU Compiler Collection. + @end direntry + This file documents the internals of the GNU compilers. + @sp 1 +@@ -81,7 +81,7 @@ write front ends for new languages. It + @value{VERSION_PACKAGE} + @end ifset + version @value{version-GCC}. The use of the GNU compilers is documented in a +-separate manual. @xref{Top,, Introduction, gcc, Using the GNU ++separate manual. @xref{Top,, Introduction, @value{fngcc}, Using the GNU + Compiler Collection (GCC)}. + + This manual is mainly a reference manual rather than a tutorial. It +Index: b/src/gcc/doc/cpp.texi +=================================================================== +--- a/src/gcc/doc/cpp.texi ++++ b/src/gcc/doc/cpp.texi +@@ -50,7 +50,7 @@ This manual contains no Invariant Sectio + @ifinfo + @dircategory Software development + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +Index: b/src/gcc/doc/gcc.texi +=================================================================== +--- a/src/gcc/doc/gcc.texi ++++ b/src/gcc/doc/gcc.texi +@@ -127,7 +127,7 @@ version @value{version-GCC}. + The internals of the GNU compilers, including how to port them to new + targets and some information about how to write front ends for new + languages, are documented in a separate manual. @xref{Top,, +-Introduction, gccint, GNU Compiler Collection (GCC) Internals}. ++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}. + + @menu + * G++ and GCC:: You can compile C or C++ programs. +Index: b/src/gcc/doc/install.texi +=================================================================== +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -94,7 +94,7 @@ Free Documentation License}''. + @end ifinfo + @dircategory Software development + @direntry +-* gccinstall: (gccinstall). Installing the GNU Compiler Collection. ++* @value{fngccinstall}: (@value{fngccinstall}). Installing the GNU Compiler Collection. + @end direntry + + @c Part 3 Titlepage and Copyright +Index: b/src/gcc/doc/cppinternals.texi +=================================================================== +--- a/src/gcc/doc/cppinternals.texi ++++ b/src/gcc/doc/cppinternals.texi +@@ -7,7 +7,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +Index: b/src/libgomp/libgomp.texi +=================================================================== +--- a/src/libgomp/libgomp.texi ++++ b/src/libgomp/libgomp.texi +@@ -31,7 +31,7 @@ texts being (a) (see below), and with th + @ifinfo + @dircategory GNU Libraries + @direntry +-* libgomp: (libgomp). GNU Offloading and Multi Processing Runtime Library. ++* @value{fnlibgomp}: (@value{fnlibgomp}). GNU Offloading and Multi Processing Runtime Library. + @end direntry + + This manual documents libgomp, the GNU Offloading and Multi Processing +Index: b/src/libgomp/Makefile.in +=================================================================== +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -487,7 +487,8 @@ info_TEXINFOS = libgomp.texi + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive +@@ -1302,15 +1303,16 @@ env.lo: libgomp_f.h + env.o: libgomp_f.h + + all-local: $(STAMP_GENINSRC) +- +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ [ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + # Tell versions [3.59,3.63) of GNU make to not export all variables. +Index: b/src/libgomp/Makefile.am +=================================================================== +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -125,16 +125,19 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info +Index: b/src/libitm/libitm.texi +=================================================================== +--- a/src/libitm/libitm.texi ++++ b/src/libitm/libitm.texi +@@ -20,7 +20,7 @@ Free Documentation License''. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libitm: (libitm). GNU Transactional Memory Library ++* @value{fnlibitm}: (@value{fnlibitm}). GNU Transactional Memory Library + @end direntry + + This manual documents the GNU Transactional Memory Library. +Index: b/src/libitm/Makefile.am +=================================================================== +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -107,14 +107,17 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)'-o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + +Index: b/src/libitm/Makefile.in +=================================================================== +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -1105,14 +1105,17 @@ vpath % $(strip $(search_path)) + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)' -o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + # Tell versions [3.59,3.63) of GNU make to not export all variables. +Index: b/src/gcc/go/Make-lang.in +=================================================================== +--- a/src/gcc/go/Make-lang.in ++++ b/src/gcc/go/Make-lang.in +@@ -89,10 +89,11 @@ GO_TEXI_FILES = \ + $(gcc_docdir)/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gccgo.info: $(GO_TEXI_FILES) ++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') ++doc/$(INFO_GCCGO_NAME).info: $(GO_TEXI_FILES) + if test "x$(BUILD_INFO)" = xinfo; then \ +- rm -f doc/gccgo.info*; \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ rm -f doc/$(INFO_GCCGO_NAME).info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + else true; fi + +@@ -118,7 +119,7 @@ gccgo.pod: go/gccgo.texi + go.all.cross: gccgo-cross$(exeext) + go.start.encap: gccgo$(exeext) + go.rest.encap: +-go.info: doc/gccgo.info ++go.info: doc/$(INFO_GCCGO_NAME).info + go.dvi: doc/gccgo.dvi + go.pdf: doc/gccgo.pdf + go.html: $(build_htmldir)/go/index.html +@@ -154,7 +155,7 @@ go.install-common: installdirs + + go.install-plugin: + +-go.install-info: $(DESTDIR)$(infodir)/gccgo.info ++go.install-info: $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info + + go.install-pdf: doc/gccgo.pdf + @$(NORMAL_INSTALL) +@@ -194,7 +195,7 @@ go.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_INSTALL_NAME)$(exeext) + rm -rf $(DESTDIR)$(man1dir)/$(GCCGO_INSTALL_NAME)$(man1ext) + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_TARGET_INSTALL_NAME)$(exeext) +- rm -rf $(DESTDIR)$(infodir)/gccgo.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info* + + # Clean hooks. + +Index: b/src/gcc/go/gccgo.texi +=================================================================== +--- a/src/gcc/go/gccgo.texi ++++ b/src/gcc/go/gccgo.texi +@@ -50,7 +50,7 @@ man page gfdl(7). + @format + @dircategory Software development + @direntry +-* Gccgo: (gccgo). A GCC-based compiler for the Go language ++* @value{fngccgo}: (@value{fngccgo}). A GCC-based compiler for the Go language + @end direntry + @end format + +@@ -124,7 +124,7 @@ and the Info entries for @file{gccgo} an + + The @command{gccgo} command is a frontend to @command{gcc} and + supports many of the same options. @xref{Option Summary, , Option +-Summary, gcc, Using the GNU Compiler Collection (GCC)}. This manual ++Summary, @value{fngcc}, Using the GNU Compiler Collection (GCC)}. This manual + only documents the options specific to @command{gccgo}. + + The @command{gccgo} command may be used to compile Go source code into +Index: b/src/libquadmath/libquadmath.texi +=================================================================== +--- a/src/libquadmath/libquadmath.texi ++++ b/src/libquadmath/libquadmath.texi +@@ -25,7 +25,7 @@ copy and modify this GNU manual. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libquadmath: (libquadmath). GCC Quad-Precision Math Library ++* @value{fnlibquadmath}: (@value{fnlibquadmath}). GCC Quad-Precision Math Library + @end direntry + + This manual documents the GCC Quad-Precision Math Library API. +Index: b/src/libquadmath/Makefile.am +=================================================================== +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -133,22 +133,24 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libquadmath.info +- cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++ ++stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.info + @touch $@ + + stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @touch $@ + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libquadmath.info +-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + endif BUILD_LIBQUADMATH + + # Unconditionally override this target, so that automake's definition + # does not wrongly interfere. +-libquadmath.info: $(STAMP_BUILD_INFO) ++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO) + + + # Automake Documentation: +Index: b/src/libquadmath/Makefile.in +=================================================================== +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -193,7 +193,8 @@ MULTIDIRS = + MULTISUBDIR = + MULTIDO = true + MULTICLEAN = true +-INFO_DEPS = libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++INFO_DEPS = $(INFO_LIBQMATH_NAME).info + am__TEXINFO_TEX_DIR = $(srcdir)/../gcc/doc/include + DVIS = libquadmath.dvi + PDFS = libquadmath.pdf +@@ -436,8 +437,8 @@ AUTOMAKE_OPTIONS = 1.8 foreign + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@@BUILD_LIBQUADMATH_TRUE@STAMP_BUILD_INFO = stamp-build-info +-@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libquadmath.info +-@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + # Automake Documentation: + # If your package has Texinfo files in many directories, you can use the +@@ -1518,17 +1519,17 @@ uninstall-am: uninstall-dvi-am uninstall + + @BUILD_LIBQUADMATH_TRUE@all-local: $(STAMP_GENINSRC) + +-@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: libquadmath.info +-@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/$(INFO_LIBQMATH_NAME).info + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + @BUILD_LIBQUADMATH_TRUE@stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +-@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + # Unconditionally override this target, so that automake's definition + # does not wrongly interfere. +-libquadmath.info: $(STAMP_BUILD_INFO) ++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO) + + libquadmath-vers.texi: + echo "@set BUGURL $(REPORT_BUGS_TEXI)" > $@ --- gcc-7-7.3.0.orig/debian/patches/sh-builtin-trap.diff +++ gcc-7-7.3.0/debian/patches/sh-builtin-trap.diff @@ -0,0 +1,303 @@ +# DP: Proposed patch for PR target/70216, __builtin_trap() on SH + +Index: b/src/gcc/config/sh/sh-c.c +=================================================================== +--- a/src/gcc/config/sh/sh-c.c ++++ b/src/gcc/config/sh/sh-c.c +@@ -139,4 +139,7 @@ sh_cpu_cpp_builtins (cpp_reader* pfile) + + cpp_define_formatted (pfile, "__SH_ATOMIC_MODEL_%s__", + selected_atomic_model ().cdef_name); ++ ++ if (TARGET_SH4_TRAPA_SLEEP_BUG) ++ builtin_define ("__SH4_TRAPA_SLEEP_BUG__"); + } +Index: b/src/gcc/config/sh/sh-protos.h +=================================================================== +--- a/src/gcc/config/sh/sh-protos.h ++++ b/src/gcc/config/sh/sh-protos.h +@@ -35,6 +35,46 @@ enum sh_function_kind { + SFUNC_STATIC + }; + ++/* __builtin_trapa handling options. */ ++struct sh_builtin_trap_handler ++{ ++ enum enum_type ++ { ++ none = 0, ++ libcall, ++ trapa, ++ ++ num_handlers ++ }; ++ ++ enum_type type; ++ int trapa_imm_val; ++}; ++ ++extern const sh_builtin_trap_handler& selected_builtin_trap_handler (void); ++ ++#define TARGET_BUILTIN_TRAP_NONE \ ++ (selected_builtin_trap_handler ().type == sh_builtin_trap_handler::none) ++ ++#define TARGET_BUILTIN_TRAP_TRAPA \ ++ (selected_builtin_trap_handler ().type == sh_builtin_trap_handler::trapa) ++ ++#define TARGET_BUILTIN_TRAP_TRAPA_VAL_RTX \ ++ GEN_INT (selected_builtin_trap_handler ().trapa_imm_val) ++ ++#define TARGET_BUILTIN_TRAP_LIBCALL \ ++ (selected_builtin_trap_handler ().type == sh_builtin_trap_handler::libcall) ++ ++#ifdef SH4_TRAPA_SLEEP_BUG_DEFAULT ++#define TARGET_SH4_TRAPA_SLEEP_BUG \ ++ (sh4_trapa_sleep_bug_option == -1 ? (SH4_TRAPA_SLEEP_BUG_DEFAULT != 0) \ ++ : (sh4_trapa_sleep_bug_option != 0)) ++#else ++#define TARGET_SH4_TRAPA_SLEEP_BUG \ ++ ((sh4_trapa_sleep_bug_option == -1 && TARGET_SH4 && !TARGET_SH4A) \ ++ || sh4_trapa_sleep_bug_option == 1) ++#endif ++ + #ifdef RTX_CODE + extern rtx sh_fsca_sf2int (void); + extern rtx sh_fsca_int2sf (void); +Index: b/src/gcc/config/sh/sh.c +=================================================================== +--- a/src/gcc/config/sh/sh.c ++++ b/src/gcc/config/sh/sh.c +@@ -752,6 +752,102 @@ got_mode_name:; + #undef err_ret + } + ++/* Information on the currently selected __builtin_trap handler. */ ++static sh_builtin_trap_handler selected_builtin_trap_handler_; ++ ++const sh_builtin_trap_handler& ++selected_builtin_trap_handler (void) ++{ ++ return selected_builtin_trap_handler_; ++} ++ ++static sh_builtin_trap_handler ++parse_validate_builtin_trap_option (const char* str) ++{ ++ const char* names[sh_builtin_trap_handler::num_handlers]; ++ names[sh_builtin_trap_handler::none] = "none"; ++ names[sh_builtin_trap_handler::libcall] = "libcall"; ++ names[sh_builtin_trap_handler::trapa] = "trapa"; ++ ++ sh_builtin_trap_handler ret; ++ ++ #if defined (SH_BUILTIN_TRAP_DEFAULT_TRAPA) ++ #if SH_BUILTIN_TRAP_DEFAULT_TRAPA < 0 || SH_BUILTIN_TRAP_DEFAULT_TRAPA > 255 ++ #error default builtin trap trapa handler value out of range ++ #endif ++ ret.type = sh_builtin_trap_handler::trapa; ++ ret.trapa_imm_val = SH_BUILTIN_TRAP_DEFAULT_TRAPA; ++ #elif defined (SH_BUILTIN_TRAP_DEFAULT_LIBCALL) ++ ret.type = sh_builtin_trap_handler::libcall; ++ ret.trapa_imm_val = 0; ++ #else ++ ret.type = sh_builtin_trap_handler::none; ++ ret.trapa_imm_val = 0; ++ #endif ++ ++ /* Handle empty string as 'none'. */ ++ if (str == NULL || *str == '\0') ++ return ret; ++ ++#define err_ret(...) do { error (__VA_ARGS__); return ret; } while (0) ++ ++ std::vector tokens; ++ for (std::stringstream ss (str); ss.good (); ) ++ { ++ tokens.push_back (std::string ()); ++ std::getline (ss, tokens.back (), ','); ++ } ++ ++ if (tokens.empty ()) ++ err_ret ("invalid builtin trap handler option"); ++ ++ /* The first token must be the handler name. */ ++ { ++ for (size_t i = 0; i < sh_builtin_trap_handler::num_handlers; ++i) ++ if (tokens.front () == names[i]) ++ { ++ ret.type = (sh_builtin_trap_handler::enum_type)i; ++ goto got_mode_name; ++ } ++ ++ err_ret ("invalid builtin trap handler name \"%s\"", ++ tokens.front ().c_str ()); ++got_mode_name:; ++ } ++ ++ /* Go through the remaining tokens. */ ++ bool have_imm = false; ++ ++ for (size_t i = 1; i < tokens.size (); ++i) ++ { ++ if (tokens[i].find ("imm=") == 0) ++ { ++ have_imm = true; ++ std::string imm_str = tokens[i].substr (strlen ("imm=")); ++ ret.trapa_imm_val = integral_argument (imm_str.c_str ()); ++ if (imm_str.empty () || ret.trapa_imm_val == -1) ++ err_ret ("could not parse imm value \"%s\" in builtin trap handler " ++ "option", imm_str.c_str ()); ++ } ++ else ++ err_ret ("unknown parameter \"%s\" in builtin trap handler option", ++ tokens[i].c_str ()); ++ } ++ ++ /* Check that the selection makes sense. */ ++ if (ret.type == sh_builtin_trap_handler::trapa && have_imm == false) ++ err_ret ("immediate value not specified for trapa builtin trap handler"); ++ ++ if (ret.type == sh_builtin_trap_handler::trapa ++ && (ret.trapa_imm_val < 0 || ret.trapa_imm_val > 255)) ++ err_ret ("immediate value for trapa builtin trap handler must be in the " ++ "range 0-255"); ++ ++ return ret; ++ ++#undef err_ret ++} ++ + /* Register SH specific RTL passes. */ + extern opt_pass* make_pass_sh_treg_combine (gcc::context* ctx, bool split_insns, + const char* name); +@@ -967,6 +1063,10 @@ sh_option_override (void) + selected_atomic_model_ + = parse_validate_atomic_model_option (sh_atomic_model_str); + ++ /* Parse __builtin_trap handler option. */ ++ selected_builtin_trap_handler_ ++ = parse_validate_builtin_trap_option (sh_builtin_trap_handler_str); ++ + register_sh_passes (); + } + +Index: b/src/gcc/config/sh/sh.md +=================================================================== +--- a/src/gcc/config/sh/sh.md ++++ b/src/gcc/config/sh/sh.md +@@ -8902,6 +8902,55 @@ + ;; Misc + ;; ------------------------------------------------------------------------- + ++;; __builtin_trap ++(define_expand "trap" ++ [(trap_if (const_int 1) (const_int 0))] ++ "TARGET_SH1 && !TARGET_BUILTIN_TRAP_NONE" ++{ ++ if (TARGET_BUILTIN_TRAP_TRAPA) ++ emit_insn (gen_trapa (TARGET_BUILTIN_TRAP_TRAPA_VAL_RTX)); ++ else if (TARGET_BUILTIN_TRAP_LIBCALL) ++ { ++ rtx funcaddr = gen_reg_rtx (Pmode); ++ rtx lab = function_symbol (funcaddr, "__builtin_trap", SFUNC_STATIC).lab; ++ emit_insn (gen_trap_call (funcaddr, lab)); ++ } ++ else ++ gcc_unreachable (); ++ ++ DONE; ++}) ++ ++(define_insn "trapa" ++ [(trap_if (const_int 1) (match_operand:SI 0 "const_logical_operand"))] ++ "TARGET_SH1" ++{ ++ if (TARGET_SH4_TRAPA_SLEEP_BUG) ++ return "trapa %0" "\n" ++ " or r0,r0" "\n" ++ " or r0,r0" "\n" ++ " or r0,r0" "\n" ++ " or r0,r0" "\n" ++ " or r0,r0"; ++ else ++ return "trapa %0"; ++} ++ [(set (attr "length") (if_then_else (match_test "TARGET_SH4_TRAPA_SLEEP_BUG") ++ (const_int 12) (const_int 2))) ++ (set_attr "in_delay_slot" "no")]) ++ ++(define_insn "trap_call" ++ [(trap_if (const_int 1) (const_int 0)) ++ (use (match_operand:SI 0 "arith_reg_operand" "r,r")) ++ (use (match_operand:SI 1 "" "Z,Ccl")) ++ (clobber (reg:SI PR_REG))] ++ "TARGET_SH1" ++ "@ ++ jsr @%0%# ++ bsrf %0\n%01:%#" ++ [(set_attr "type" "sfunc") ++ (set_attr "needs_delay_slot" "yes")]) ++ + ;; String/block move insn. + + (define_expand "movmemsi" +Index: b/src/gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -2692,6 +2692,39 @@ sh-*-elf* | sh[12346l]*-*-elf* | \ + case ${with_endian} in + little*) tm_file="sh/little.h ${tm_file}" ;; + esac ++ ++ case ${with_builtin_trap} in ++ "") ++ case ${target} in ++ sh*-*-linux*) ++ tm_defines="$tm_defines SH_BUILTIN_TRAP_DEFAULT_TRAPA=0x54" ++ esac ++ ;; ++ libcall) ++ tm_defines="$tm_defines SH_BUILTIN_TRAP_DEFAULT_LIBCALL=1" ++ ;; ++ trapa-[0123456789]*) ++ trapa_value=`echo $with_builtin_trap | tr -d -c 0-9` ++ ++ if [ $trapa_value -gt 255 ]; then ++ echo "Invalid trapa number in --with-builtin-trap=$with_builtin_trap" ++ exit 1 ++ fi ++ ++ tm_defines="$tm_defines SH_BUILTIN_TRAP_DEFAULT_TRAPA=$trapa_value" ++ ;; ++ *) ++ echo "Invalid builtin trap handler in --with-builtin-trap=$with_builtin_trap" ++ exit 1 ++ esac ++ ++ if test x$enable_sh4_trapa_sleep_bug = xyes; then ++ tm_defines="$tm_defines SH4_TRAPA_SLEEP_BUG_DEFAULT=1" ++ fi ++ if test x$enable_sh4_trapa_sleep_bug = xno; then ++ tm_defines="$tm_defines SH4_TRAPA_SLEEP_BUG_DEFAULT=0" ++ fi ++ + tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h" + case ${target} in + sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux" +Index: b/src/gcc/config/sh/sh.opt +=================================================================== +--- a/src/gcc/config/sh/sh.opt ++++ b/src/gcc/config/sh/sh.opt +@@ -301,3 +301,11 @@ Enable the use of the fsrra instruction. + mlra + Target Report Var(sh_lra_flag) Init(0) Save + Use LRA instead of reload (transitional). ++ ++msh4-trapa-sleep-bug ++Target Report Var(sh4_trapa_sleep_bug_option) Init(-1) ++Handle the trapa/sleep/undefined instruction 0xFFFD bug. ++ ++mbuiltin-trap= ++Target Report RejectNegative Joined Var(sh_builtin_trap_handler_str) ++Specify what code to emit for __builtin_trap. --- gcc-7-7.3.0.orig/debian/patches/skip-bootstrap-multilib.diff +++ gcc-7-7.3.0/debian/patches/skip-bootstrap-multilib.diff @@ -0,0 +1,49 @@ +# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds + +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -479,6 +479,17 @@ esac + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` + ++# stage1 and stage2 builds of the non-default multilib configurations ++# are not needed; skip these to save some build time. ++if [ -f ../../stage_final ] && [ -f ../../stage_current ]; then ++ stage_final=`cat ../../stage_final` ++ stage_current=`cat ../../stage_current` ++ if [ "$stage_current" != "$stage_final" ]; then ++ echo "Skip `basename $ml_realsrcdir` non-default multilibs for bootstrap stage $stage_current" ++ multidirs= ++ fi ++fi ++ + # Add code to library's top level makefile to handle building the multilib + # subdirs. + +Index: b/src/libstdc++-v3/acinclude.m4 +=================================================================== +--- a/src/libstdc++-v3/acinclude.m4 ++++ b/src/libstdc++-v3/acinclude.m4 +@@ -2895,7 +2895,20 @@ dnl + AC_DEFUN([GLIBCXX_ENABLE_DEBUG], [ + AC_MSG_CHECKING([for additional debug build]) + GLIBCXX_ENABLE(libstdcxx-debug,$1,,[build extra debug library]) ++ if test x$enable_libstdcxx_debug = xyes; then ++ if test -f $toplevel_builddir/../stage_final && test -f $toplevel_builddir/../stage_current; then ++ stage_final=`cat $toplevel_builddir/../stage_final` ++ stage_current=`cat $toplevel_builddir/../stage_current` ++ if test x$stage_current != x$stage_final ; then ++ skip_debug_build=yes ++ enable_libstdcxx_debug=no ++ fi ++ fi ++ fi + AC_MSG_RESULT($enable_libstdcxx_debug) ++ if test x$skip_debug_build = xyes ; then ++ AC_MSG_NOTICE([Skip libstdc++-v3 debug build for bootstrap stage $stage_current]) ++ fi + GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_DEBUG, test $enable_libstdcxx_debug = yes) + ]) + --- gcc-7-7.3.0.orig/debian/patches/sparc64-biarch-long-double-128.diff +++ gcc-7-7.3.0/debian/patches/sparc64-biarch-long-double-128.diff @@ -0,0 +1,35 @@ +# DP: Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + +On sparc, the --with-long-double-128 option doesn't change anything for +a 64-bit compiler, as it always default to 128-bit long doubles. For +a 32/64-bit compiler defaulting to 32-bit this correctly control the +size of long double of the 32-bit compiler, however for a 32/64-bit +compiler defaulting to 64-bit, the built-in specs force the +-mlong-double-64 option. This makes the option useless in this case. + +The patch below fixes that by removing the -mlong-double-64 from the +built-in spec, using the default instead. + +Changelog gcc/ + +2013-12-04 Aurelien Jarno + + * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit, + don't force -mlong-double-64 when -m32 or -mv8plus is given. + +Index: b/src/gcc/config/sparc/linux64.h +=================================================================== +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -154,9 +154,9 @@ extern const char *host_detect_local_cpu + #else + #define CC1_SPEC "%{profile:-p} \ + %{m32:%{m64:%emay not use both -m32 and -m64}} \ +-%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{m32:-mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=cypress}} \ +-%{mv8plus:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{mv8plus:-mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=v9}} \ + %{!m32:%{!mcpu*:-mcpu=ultrasparc}} \ + %{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}} \ --- gcc-7-7.3.0.orig/debian/patches/src_gcc_config_i386_gnu.h.diff +++ gcc-7-7.3.0/debian/patches/src_gcc_config_i386_gnu.h.diff @@ -0,0 +1,25 @@ +Index: gcc-7-7.2.0-12.1/src/gcc/config/i386/gnu.h +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/gcc/config/i386/gnu.h ++++ gcc-7-7.2.0-12.1/src/gcc/config/i386/gnu.h +@@ -37,11 +37,14 @@ along with GCC. If not, see /dev/null 2>&1; then ++echo ' _SIGIOT: {_SigNotify + _SigThrow, "SIGIOT: abort"},' ++else + echo ' _SIGABRT: {_SigNotify + _SigThrow, "SIGABRT: abort"},' ++fi + echo ' _SIGBUS: {_SigPanic + _SigUnblock, "SIGBUS: bus error"},' + echo ' _SIGFPE: {_SigPanic + _SigUnblock, "SIGFPE: floating-point exception"},' + echo ' _SIGKILL: {0, "SIGKILL: kill"},' +@@ -77,6 +83,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. +@@ -91,6 +98,11 @@ if test -z "$nsig"; then + 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-7-7.2.0-12.1/src/libgo/mksysinfo.sh +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/mksysinfo.sh ++++ gcc-7-7.2.0-12.1/src/libgo/mksysinfo.sh +@@ -43,8 +43,19 @@ grep -v '^// ' gen-sysinfo.go | \ + >> ${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_]+ [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 + + # The O_xxx flags. + egrep '^const _(O|F|FD)_' gen-sysinfo.go | \ +@@ -61,6 +68,11 @@ if ! grep '^const F_DUPFD_CLOEXEC' ${OUT + echo "const F_DUPFD_CLOEXEC = 0" >> ${OUT} + fi + ++# 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 ++ + # These flags can be lost on i386 GNU/Linux when using + # -D_FILE_OFFSET_BITS=64, because we see "#define F_SETLK F_SETLK64" + # before we see the definition of F_SETLK64. +@@ -425,6 +437,11 @@ grep '^type _tms ' gen-sysinfo.go | \ + + # The stat type. + # Prefer largefile variant if available. ++# Special treatment of st_dev for GNU/Hurd ++# /usr/include/i386-gnu/bits/stat.h: #define st_dev st_fsid ++if grep 'define st_dev st_fsid' gen-sysinfo.go > /dev/null 2>&1; then ++ sed -i -e 's/; st_fsid/; st_dev/' gen-sysinfo.go ++fi + stat=`grep '^type _stat64 ' gen-sysinfo.go || true` + if test "$stat" != ""; then + grep '^type _stat64 ' gen-sysinfo.go --- gcc-7-7.3.0.orig/debian/patches/src_libgo_go_crypto.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_go_crypto.diff @@ -0,0 +1,15 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/crypto/x509/root_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/crypto/x509/root_gnu.go +@@ -0,0 +1,10 @@ ++// 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. ++ ++package x509 ++ ++// Possible certificate files; stop after finding one. ++var certFiles = []string{ ++ "/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc. ++} --- gcc-7-7.3.0.orig/debian/patches/src_libgo_go_go_build_syslist.go.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_go_go_build_syslist.go.diff @@ -0,0 +1,11 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/go/build/syslist.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/go/build/syslist.go ++++ gcc-7-7.2.0-12.1/src/libgo/go/go/build/syslist.go +@@ -4,5 +4,5 @@ + + package build + +-const goosList = "android darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows zos " ++const goosList = "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 s390 s390x sparc sparc64 " --- gcc-7-7.3.0.orig/debian/patches/src_libgo_go_net.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_go_net.diff @@ -0,0 +1,209 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/cgo_gnu.go +@@ -0,0 +1,16 @@ ++// 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. ++ ++// +build cgo,!netgo ++// +build gnu ++ ++package net ++ ++/* ++#include ++*/ ++ ++import "syscall" ++ ++const cgoAddrInfoFlags = syscall.AI_CANONNAME | syscall.AI_V4MAPPED | syscall.AI_ALL +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sendfile_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/sendfile_gnu.go +@@ -0,0 +1,79 @@ ++// 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. ++ ++package net ++ ++import ( ++ "io" ++ "os" ++ "syscall" ++) ++ ++// maxSendfileSize is the largest chunk size we ask the kernel to copy ++// at a time. ++const maxSendfileSize int = 4 << 20 ++ ++// 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 ++ } ++ ++ if err := c.writeLock(); err != nil { ++ return 0, err, true ++ } ++ defer c.writeUnlock() ++ ++ dst := c.sysfd ++ src := int(f.Fd()) ++ 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 = c.pd.waitWrite(); 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 ++ } ++ } ++ if lr != nil { ++ lr.N = remain ++ } ++ if err != nil { ++ err = os.NewSyscallError("sendfile", err) ++ } ++ return written, err, written > 0 ++} +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sock_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/sock_gnu.go +@@ -0,0 +1,14 @@ ++// 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. ++ ++// +build gnu ++ ++package net ++ ++import "syscall" ++ ++func maxListenerBacklog() int { ++ // From /usr/include/i386-gnu/bits/socket.h ++ return syscall.SOMAXCONN ++} +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sockopt_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/sockopt_gnu.go +@@ -0,0 +1,45 @@ ++// 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. ++ ++// +build gnu ++ ++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. ++ if err := syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1); err != nil { ++ return os.NewSyscallError("setsockopt", err) ++ } ++ // Allow reuse of recently-used ports. ++ // This option is supported only in descendants of 4.4BSD, ++ // to make an effective multicast application that requires ++ // quick draw possible. ++ // Not supported on GNU/Hurd ++ //if syscall.SO_REUSEPORT != 0 { ++ // return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEPORT, 1)) ++ //} ++ return nil ++} +Index: gcc-7-7.2.0-12.1/src/libgo/go/net/sockoptip_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/net/sockoptip_gnu.go +@@ -0,0 +1,30 @@ ++// 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. ++ ++// +build gnu ++ ++package net ++ ++import ( ++ "os" ++ "syscall" ++) ++ ++func setIPv4MulticastInterface(fd *netFD, ifi *Interface) error { ++ ip, err := interfaceToIPv4Addr(ifi) ++ if err != nil { ++ return os.NewSyscallError("setsockopt", err) ++ } ++ var a [4]byte ++ copy(a[:], ip.To4()) ++ if err := fd.incref(); err != nil { ++ return err ++ } ++ defer fd.decref() ++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInet4Addr(fd.sysfd, syscall.IPPROTO_IP, syscall.IP_MULTICAST_IF, a)) ++} ++ ++func setIPv4MulticastLoopback(fd *netFD, v bool) error { ++ return syscall.ENOPROTOOPT ++} --- gcc-7-7.3.0.orig/debian/patches/src_libgo_go_os.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_go_os.diff @@ -0,0 +1,53 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/os/executable_procfs.go +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/os/executable_procfs.go ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/go/os/pipe_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/os/pipe_gnu.go +@@ -0,0 +1,35 @@ ++// 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 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 ++} --- gcc-7-7.3.0.orig/debian/patches/src_libgo_go_runtime.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_go_runtime.diff @@ -0,0 +1,1010 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/netpoll_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/runtime/netpoll_gnu.go +@@ -0,0 +1,303 @@ ++// 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. ++ ++// FIXME: Fake network poller for gnu. ++// 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. ++// Inspiration was also taken from netpoll_aix.go and netpoll_solaris.go ++ ++// +build gnu ++ ++package runtime ++ ++import ( ++ "unsafe" ++) ++ ++//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. ++ ++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/x86_64-linux-gnu/sys/poll.h ++//extern poll ++func poll (polldata_array *pollfd, nfds int32, timeout int32) int32 ++ ++//extern pipe2 ++func libc_pipe2(fd *int32, flags int32) int32 ++ ++var ( ++ pipefd [2]int32 ++ pollfds int32 = -1 ++ nfds int32 = 0 ++ rdwake int32 ++ wrwake int32 ++ fds [207]pollfd ++ data [207]*pollDesc ++ pd *pollDesc ++ pmtx mutex ++ needsUpdate bool ++ b byte ++ err int32 = 0 ++) ++ ++func netpollinit() { ++ ++ ret := libc_pipe2(&pipefd[0], _O_CLOEXEC|_O_NONBLOCK); ++ if ret == -1 { ++ throw("runtime:netpollinit(): failed to create pipe2") ++ } ++ ++ rdwake = pipefd[0] ++ wrwake = pipefd[1] ++ ++ // Add the read side of the pipe to the pollset. ++ lock(&pmtx) ++ fds[0].fd = int32(rdwake) ++ fds[0].events = int16(_POLLIN) ++ fds[0].revents = int16(0) ++ ++// Checks for pd != nil are made in netpoll() ++ data[0] = nil ++ unlock(&pmtx) ++ ++ nfds = 1 ++ pollfds = 1 ++ ++ return ++} ++ ++func netpolldescriptor() uintptr { ++ // FIXME: see src/libgo/go/os/exec/exec_test.go ++ // Need to return two fds here: wrwake and rdwake ++ return ^uintptr(0) ++} ++ ++func fdadd(fd uintptr, events int16, pd *pollDesc) { ++// println("netpollopen:fdadd: nfds =", nfds, "fd =", fd) ++ ++ fdfound := false ++ // Omit fds[0].fd = rdwake ++ for i := int32(1); i < nfds; i++ { ++ fdsi := fds[i] ++ if fdsi.fd == int32(fd) { ++ fdfound = true ++ fdsi.events = int16(events) ++ fdsi.revents = int16(0) ++ data[i] = pd ++ break ++ } ++ } ++ // fd not found, add it. ++ if fdfound == false { ++ fds[nfds].fd = int32(fd) ++ fds[nfds].events = int16(events) ++ fds[nfds].revents = int16(0) ++ data[nfds] = pd ++ nfds++ ++ } ++ ++// for l := int32(0); l < nfds; l++ { ++// println("fds[", l, "].fd =", fds[l].fd) ++// } ++ ++ return ++} ++ ++func netpollopen(fd uintptr, pd *pollDesc) int32 { ++ lock(&pmtx) ++ needsUpdate = true ++ unlock(&pmtx) ++ ++ // poll will block so wakeup using wrwake first. ++wrloop1: ++ nwritten := write(uintptr(wrwake), unsafe.Pointer(&b), 1) ++ if nwritten == 0 { ++ println("runtime:netpollopen: write retuned zero, fd =", wrwake) ++ return -1 ++ } ++ if nwritten == -1 { ++ err = int32(errno()) ++ if err == _EAGAIN { ++ goto wrloop1 ++ } ++ println("runtime:netpollopen: write failed fd =", wrwake, "errno =", err) ++ return err ++ } ++ ++ // Add fd to the pollset. ++ lock(&pmtx) ++ fdadd(fd, _POLLIN|_POLLOUT, pd) ++ needsUpdate = false ++ unlock(&pmtx) ++ ++ return 0 ++} ++ ++func fdremove(fd uintptr) { ++// println("netpollclose():fdremove() nfds =", nfds, "fd =", fd) ++ ++ fdfound := false ++ // Omit fds[0].fd = rdwake ++ j := 1 ++ for i := int32(1); i < nfds; i++ { ++ fdsi := fds[i] ++ if fdsi.fd == int32(fd) { ++ fdfound = true ++ fdsi.fd = int32(0) ++ fdsi.events = int16(0) ++ fdsi.revents = int16(0) ++ data[i] = nil ++ } else { ++ fds[j].fd = fdsi.fd ++ fds[j].events = fdsi.events ++ fds[j].revents = int16(0) ++ data[j] = data[i] ++ j++ ++ } ++ } ++ nfds-- ++ // fd not found, print an error ++ //FIXME: Still output from here ++ if fdfound == false { ++ println("netpollclose:fdremove: fd =", fd, "NOT FOUND") ++ } ++ ++// for l := int32(0); l < nfds; l++ { ++// println("fds[", l, "].fd =", fds[l].fd) ++// } ++ ++ return ++} ++ ++func netpollclose(fd uintptr) int32 { ++ lock(&pmtx) ++ needsUpdate = true ++ unlock(&pmtx) ++ ++ // poll will block so wakeup using wrwake first. ++wrloop2: ++ nwritten := write(uintptr(wrwake), unsafe.Pointer(&b), 1) ++ if nwritten == 0 { ++ println("runtime:netpollclose: write retuned zero, fd =", wrwake) ++ return -1 ++ } ++ if nwritten == -1 { ++ err = int32(errno()) ++ if err == _EAGAIN { ++ goto wrloop2 ++ } ++ println("runtime:netpollclose: write failed fd =", wrwake, "errno =", err) ++ return err ++ } ++ ++ // Remove fd from the pollset. ++ lock(&pmtx) ++ fdremove(fd) ++ needsUpdate = false ++ unlock(&pmtx) ++ ++ return 0 ++} ++ ++func netpollarm(pd *pollDesc, mode int) { ++ throw("runtime:netpollarm() unused") ++} ++ ++// polls for ready network connections ++// returns list of goroutines that become runnable ++func netpoll(block bool) *g { ++ if pollfds == -1 { ++ return nil ++ } ++ ++ timeout := int32(-1) ++ if !block { ++ timeout = 0 ++ } ++ ++retry: ++ lock(&pmtx) ++ if needsUpdate { ++ unlock(&pmtx) ++ osyield() ++ goto retry ++ } ++ unlock(&pmtx) ++ ++ // Note: poll only returns fds with non-zero revents! ++ nfound := poll(&fds[0], nfds, timeout) ++ if nfound == 0 { ++ return nil ++ } ++ if nfound < 0 { ++ err = int32(errno()) ++ if err == _EINTR || err == _EAGAIN { ++ goto retry ++ } ++ println("runtime: poll failed errno =", err) ++ throw("runtime: netpoll failed") ++ } ++ ++ var mode int32 ++ var gp guintptr ++ // We assume that nfound <= nfds ++ for i := int32(0); i < nfds; i++ { ++ fdsi := &fds[i] ++ ++ // Skip fds with zero revents as poll does ++ if fdsi.revents == 0 { ++ continue ++ } ++ ++ mode = 0 ++ if fdsi.revents&(_POLLIN|_POLLHUP|_POLLERR) != 0 { ++ if fdsi.fd == rdwake { ++rdloop: ++ nread := read(fdsi.fd, unsafe.Pointer(&b), 1) ++ // EOF ++ if nread == 0 { ++ println("runtime:netpoll: read returned zero fd =", fdsi.fd) ++ return nil ++ } ++ if nread == -1 { ++ err = int32(errno()) ++ if err == _EAGAIN { ++ goto rdloop ++ } ++ println("runtime:netpoll: read failed fd =", fdsi.fd, "errno =", err) ++ return nil ++ } ++ continue ++ } ++ mode += 'r' ++ } ++ if fdsi.revents&(_POLLOUT|_POLLHUP|_POLLERR) != 0 { ++ mode += 'w' ++ } ++ if mode != 0 { ++ lock(&pmtx) ++ pd = data[i] ++ unlock(&pmtx) ++ if pd != nil { ++ netpollready(&gp, pd, mode) ++ } ++ } ++ } ++ ++ if block && gp == 0 { ++ goto retry ++ } ++ ++ return gp.ptr() ++} +Index: gcc-7-7.2.0-12.1/src/libgo/go/runtime/os_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/runtime/os_gnu.go +@@ -0,0 +1,86 @@ ++// 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. ++ ++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-7-7.2.0-12.1/src/libgo/go/runtime/signal_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/runtime/signal_gnu.go +@@ -0,0 +1,606 @@ ++// 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 gnu ++ ++package runtime ++ ++import ( ++ "runtime/internal/sys" ++ "unsafe" ++) ++ ++// For gccgo's C code to call: ++//go:linkname initsig runtime.initsig ++//go:linkname crash runtime.crash ++//go:linkname resetcpuprofiler runtime.resetcpuprofiler ++//go:linkname sigtrampgo runtime.sigtrampgo ++ ++//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. ++// ++// Signal forwarding is currently available only on Darwin and Linux. ++var fwdSig [_NSIG]uintptr ++ ++// 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 ++ } ++ 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 ++ } ++ ++ t.flags |= _SigHandling ++ 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 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. ++ if (isarchive || islibrary) && t.flags&_SigPanic == 0 { ++ return false ++ } ++ ++ return true ++} ++ ++func sigenable(sig uint32) { ++ if sig >= uint32(len(sigtable)) { ++ return ++ } ++ ++ t := &sigtable[sig] ++ if t.flags&_SigNotify != 0 { ++ ensureSigM() ++ enableSigChan <- sig ++ <-maskUpdatedChan ++ if t.flags&_SigHandling == 0 { ++ t.flags |= _SigHandling ++ fwdSig[sig] = getsig(sig) ++ setsig(sig, getSigtramp()) ++ } ++ } ++} ++ ++func sigdisable(sig uint32) { ++ if sig >= uint32(len(sigtable)) { ++ 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) { ++ t.flags &^= _SigHandling ++ setsig(sig, fwdSig[sig]) ++ } ++ } ++} ++ ++func sigignore(sig uint32) { ++ if sig >= uint32(len(sigtable)) { ++ return ++ } ++ ++ t := &sigtable[sig] ++ if t.flags&_SigNotify != 0 { ++ t.flags &^= _SigHandling ++ setsig(sig, _SIG_IGN) ++ } ++} ++ ++func resetcpuprofiler(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. ++//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) ++ sigprofNonGoPC(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. ++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) { ++ setsig(sig, _SIG_DFL) ++ unblocksig(sig) ++ 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 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 = 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 sys.PtrSize == 8 { ++ 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 sigtable[i].flags&_SigUnblock != 0 { ++ 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 { ++ 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") ++} ++ ++// 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 := fwdSig[sig] ++ ++ if !signalsOK { ++ // The only way we can get here is if we are in a ++ // library or archive, we installed a signal handler ++ // at program startup, but the Go runtime has not yet ++ // been initialized. ++ if fwdFn == _SIG_DFL { ++ dieFromSignal(sig) ++ } else { ++ sigfwd(fwdFn, sig, info, ctx) ++ } ++ return true ++ } ++ ++ flags := sigtable[sig].flags ++ ++ // If there is no handler to forward to, no need to forward. ++ if fwdFn == _SIG_DFL { ++ return false ++ } ++ ++ // If we aren't handling the signal, forward it. ++ if flags&_SigHandling == 0 { ++ sigfwd(fwdFn, sig, info, ctx) ++ return true ++ } ++ ++ // Only forward synchronous signals. ++ c := sigctxt{info, ctx} ++ if c.sigcode() == _SI_USER || flags&_SigPanic == 0 { ++ 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 (i.e., m.curg.syscallsp == 0). ++ g := getg() ++ if g != nil && g.m != nil && g.m.curg != nil && g.m.curg.syscallsp == 0 { ++ 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 sigtable[i].flags&_SigUnblock != 0 { ++ 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 ++func unminitSignals() { ++ if getg().m.newSigstack { ++ signalstack(nil, 0) ++ } ++} --- gcc-7-7.3.0.orig/debian/patches/src_libgo_go_syscall.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_go_syscall.diff @@ -0,0 +1,781 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/errstr_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/errstr_gnu.go +@@ -0,0 +1,31 @@ ++// 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. ++ ++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-7-7.2.0-12.1/src/libgo/go/syscall/libcall_gnu_386.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/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-7-7.2.0-12.1/src/libgo/go/syscall/libcall_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/libcall_gnu.go +@@ -0,0 +1,181 @@ ++// 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. ++ ++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-7-7.2.0-12.1/src/libgo/go/syscall/libcall_posix_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/libcall_posix_gnu.go +@@ -0,0 +1,402 @@ ++// 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. ++// 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 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. ++ ++// +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 Exit(code int) ++//exit(code _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-7-7.2.0-12.1/src/libgo/go/syscall/socket_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/socket_gnu.go +@@ -0,0 +1,90 @@ ++// 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. ++ ++// +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-7-7.2.0-12.1/src/libgo/go/syscall/syscall_gnu.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/syscall_gnu.go +@@ -0,0 +1,23 @@ ++// 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. ++ ++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-7-7.2.0-12.1/src/libgo/go/syscall/wait.c +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/go/syscall/wait.c ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/wait.c +@@ -8,6 +8,9 @@ + OS-independent. */ + + #include ++#ifndef WCONTINUED ++#define WCONTINUED 0 ++#endif + #include + + #include "runtime.h" --- gcc-7-7.3.0.orig/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff @@ -0,0 +1,361 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/go/syscall/syscall_gnu_test.go +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.1/src/libgo/go/syscall/syscall_gnu_test.go +@@ -0,0 +1,356 @@ ++// Copyright 2013 The Go Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style ++// license that can be found in the LICENSE file. ++ ++// +build gnu ++ ++package syscall_test ++ ++import ( ++ "flag" ++ "fmt" ++ "internal/testenv" ++ "io/ioutil" ++ "net" ++ "os" ++ "os/exec" ++ "path/filepath" ++ "runtime" ++ "syscall" ++ "testing" ++ "time" ++) ++ ++// Tests that below functions, structures and constants are consistent ++// on all Unix-like systems. ++func _() { ++ // program scheduling priority functions and constants ++ var ( ++ _ func(int, int, int) error = syscall.Setpriority ++ _ func(int, int) (int, error) = syscall.Getpriority ++ ) ++ const ( ++ _ int = syscall.PRIO_USER ++ _ int = syscall.PRIO_PROCESS ++ _ int = syscall.PRIO_PGRP ++ ) ++ ++ // termios constants ++ const ( ++ _ int = syscall.TCIFLUSH ++ _ int = syscall.TCIOFLUSH ++ _ int = syscall.TCOFLUSH ++ ) ++ ++ // fcntl file locking structure and constants ++ var ( ++ _ = syscall.Flock_t{ ++ Type: int32(0), ++ Whence: int32(0), ++ Start: int64(0), ++ Len: int64(0), ++ Pid: int32(0), ++ } ++ ) ++ const ( ++ _ = syscall.F_GETLK ++ _ = syscall.F_SETLK ++ _ = syscall.F_SETLKW ++ ) ++} ++ ++// TestFcntlFlock tests whether the file locking structure matches ++// the calling convention of each kernel. ++// On some Linux systems, glibc uses another set of values for the ++// commands and translates them to the correct value that the kernel ++// expects just before the actual fcntl syscall. As Go uses raw ++// syscalls directly, it must use the real value, not the glibc value. ++// Thus this test also verifies that the Flock_t structure can be ++// roundtripped with F_SETLK and F_GETLK. ++func TestFcntlFlock(t *testing.T) { ++ if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { ++ t.Skip("skipping; no child processes allowed on iOS") ++ } ++ flock := syscall.Flock_t{ ++ Type: syscall.F_WRLCK, ++ Start: 31415, Len: 271828, Whence: 1, ++ } ++ if os.Getenv("GO_WANT_HELPER_PROCESS") == "" { ++ // parent ++ name := filepath.Join(os.TempDir(), "TestFcntlFlock") ++ fd, err := syscall.Open(name, syscall.O_CREAT|syscall.O_RDWR|syscall.O_CLOEXEC, 0) ++ if err != nil { ++ t.Fatalf("Open failed: %v", err) ++ } ++ defer syscall.Unlink(name) ++ defer syscall.Close(fd) ++ if err := syscall.Ftruncate(fd, 1<<20); err != nil { ++ t.Fatalf("Ftruncate(1<<20) failed: %v", err) ++ } ++ if err := syscall.FcntlFlock(uintptr(fd), syscall.F_SETLK, &flock); err != nil { ++ t.Fatalf("FcntlFlock(F_SETLK) failed: %v", err) ++ } ++ cmd := exec.Command(os.Args[0], "-test.run=^TestFcntlFlock$") ++ cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1") ++ cmd.ExtraFiles = []*os.File{os.NewFile(uintptr(fd), name)} ++ out, err := cmd.CombinedOutput() ++ if len(out) > 0 || err != nil { ++ t.Fatalf("child process: %q, %v", out, err) ++ } ++ } else { ++ // child ++ got := flock ++ // make sure the child lock is conflicting with the parent lock ++ got.Start-- ++ got.Len++ ++ if err := syscall.FcntlFlock(3, syscall.F_GETLK, &got); err != nil { ++ t.Fatalf("FcntlFlock(F_GETLK) failed: %v", err) ++ } ++ flock.Pid = int32(syscall.Getppid()) ++ // Linux kernel always set Whence to 0 ++ flock.Whence = 0 ++ if got.Type == flock.Type && got.Start == flock.Start && got.Len == flock.Len && got.Pid == flock.Pid && got.Whence == flock.Whence { ++ os.Exit(0) ++ } ++ t.Fatalf("FcntlFlock got %v, want %v", got, flock) ++ } ++} ++ ++// TestPassFD tests passing a file descriptor over a Unix socket. ++// ++// This test involved both a parent and child process. The parent ++// process is invoked as a normal test, with "go test", which then ++// runs the child process by running the current test binary with args ++// "-test.run=^TestPassFD$" and an environment variable used to signal ++// that the test should become the child process instead. ++func TestPassFD(t *testing.T) { ++ switch runtime.GOOS { ++ case "dragonfly": ++ // TODO(jsing): Figure out why sendmsg is returning EINVAL. ++ t.Skip("skipping test on dragonfly") ++ case "solaris": ++ // TODO(aram): Figure out why ReadMsgUnix is returning empty message. ++ t.Skip("skipping test on solaris, see issue 7402") ++ } ++ ++ testenv.MustHaveExec(t) ++ ++ if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { ++ passFDChild() ++ return ++ } ++ ++ tempDir, err := ioutil.TempDir("", "TestPassFD") ++ if err != nil { ++ t.Fatal(err) ++ } ++ defer os.RemoveAll(tempDir) ++ ++ fds, err := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM, 0) ++ if err != nil { ++ t.Fatalf("Socketpair: %v", err) ++ } ++ defer syscall.Close(fds[0]) ++ defer syscall.Close(fds[1]) ++ writeFile := os.NewFile(uintptr(fds[0]), "child-writes") ++ readFile := os.NewFile(uintptr(fds[1]), "parent-reads") ++ defer writeFile.Close() ++ defer readFile.Close() ++ ++ cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir) ++ cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1") ++ cmd.ExtraFiles = []*os.File{writeFile} ++ ++ out, err := cmd.CombinedOutput() ++ if len(out) > 0 || err != nil { ++ t.Fatalf("child process: %q, %v", out, err) ++ } ++ ++ c, err := net.FileConn(readFile) ++ if err != nil { ++ t.Fatalf("FileConn: %v", err) ++ } ++ defer c.Close() ++ ++ uc, ok := c.(*net.UnixConn) ++ if !ok { ++ t.Fatalf("unexpected FileConn type; expected UnixConn, got %T", c) ++ } ++ ++ buf := make([]byte, 32) // expect 1 byte ++ oob := make([]byte, 32) // expect 24 bytes ++ closeUnix := time.AfterFunc(5*time.Second, func() { ++ t.Logf("timeout reading from unix socket") ++ uc.Close() ++ }) ++ _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob) ++ closeUnix.Stop() ++ ++ scms, err := syscall.ParseSocketControlMessage(oob[:oobn]) ++ if err != nil { ++ t.Fatalf("ParseSocketControlMessage: %v", err) ++ } ++ if len(scms) != 1 { ++ t.Fatalf("expected 1 SocketControlMessage; got scms = %#v", scms) ++ } ++ scm := scms[0] ++ gotFds, err := syscall.ParseUnixRights(&scm) ++ if err != nil { ++ t.Fatalf("syscall.ParseUnixRights: %v", err) ++ } ++ if len(gotFds) != 1 { ++ t.Fatalf("wanted 1 fd; got %#v", gotFds) ++ } ++ ++ f := os.NewFile(uintptr(gotFds[0]), "fd-from-child") ++ defer f.Close() ++ ++ got, err := ioutil.ReadAll(f) ++ want := "Hello from child process!\n" ++ if string(got) != want { ++ t.Errorf("child process ReadAll: %q, %v; want %q", got, err, want) ++ } ++} ++ ++// passFDChild is the child process used by TestPassFD. ++func passFDChild() { ++ defer os.Exit(0) ++ ++ // Look for our fd. It should be fd 3, but we work around an fd leak ++ // bug here (https://golang.org/issue/2603) to let it be elsewhere. ++ var uc *net.UnixConn ++ for fd := uintptr(3); fd <= 10; fd++ { ++ f := os.NewFile(fd, "unix-conn") ++ var ok bool ++ netc, _ := net.FileConn(f) ++ uc, ok = netc.(*net.UnixConn) ++ if ok { ++ break ++ } ++ } ++ if uc == nil { ++ fmt.Println("failed to find unix fd") ++ return ++ } ++ ++ // Make a file f to send to our parent process on uc. ++ // We make it in tempDir, which our parent will clean up. ++ flag.Parse() ++ tempDir := flag.Arg(0) ++ f, err := ioutil.TempFile(tempDir, "") ++ if err != nil { ++ fmt.Printf("TempFile: %v", err) ++ return ++ } ++ ++ f.Write([]byte("Hello from child process!\n")) ++ f.Seek(0, 0) ++ ++ rights := syscall.UnixRights(int(f.Fd())) ++ dummyByte := []byte("x") ++ n, oobn, err := uc.WriteMsgUnix(dummyByte, rights, nil) ++ if err != nil { ++ fmt.Printf("WriteMsgUnix: %v", err) ++ return ++ } ++ if n != 1 || oobn != len(rights) { ++ fmt.Printf("WriteMsgUnix = %d, %d; want 1, %d", n, oobn, len(rights)) ++ return ++ } ++} ++ ++// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage, ++// and ParseUnixRights are able to successfully round-trip lists of file descriptors. ++func TestUnixRightsRoundtrip(t *testing.T) { ++ testCases := [...][][]int{ ++ {{42}}, ++ {{1, 2}}, ++ {{3, 4, 5}}, ++ {{}}, ++ {{1, 2}, {3, 4, 5}, {}, {7}}, ++ } ++ for _, testCase := range testCases { ++ b := []byte{} ++ var n int ++ for _, fds := range testCase { ++ // Last assignment to n wins ++ n = len(b) + syscall.CmsgLen(4*len(fds)) ++ b = append(b, syscall.UnixRights(fds...)...) ++ } ++ // Truncate b ++ b = b[:n] ++ ++ scms, err := syscall.ParseSocketControlMessage(b) ++ if err != nil { ++ t.Fatalf("ParseSocketControlMessage: %v", err) ++ } ++ if len(scms) != len(testCase) { ++ t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms) ++ } ++ for i, scm := range scms { ++ gotFds, err := syscall.ParseUnixRights(&scm) ++ if err != nil { ++ t.Fatalf("ParseUnixRights: %v", err) ++ } ++ wantFds := testCase[i] ++ if len(gotFds) != len(wantFds) { ++ t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds) ++ } ++ for j, fd := range gotFds { ++ if fd != wantFds[j] { ++ t.Fatalf("expected fd %v, got %v", wantFds[j], fd) ++ } ++ } ++ } ++ } ++} ++ ++func TestRlimit(t *testing.T) { ++ var rlimit, zero syscall.Rlimit ++ err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit) ++ if err != nil { ++ t.Fatalf("Getrlimit: save failed: %v", err) ++ } ++ if zero == rlimit { ++ t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit) ++ } ++ set := rlimit ++ set.Cur = set.Max - 1 ++ err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &set) ++ if err != nil { ++ t.Fatalf("Setrlimit: set failed: %#v %v", set, err) ++ } ++ var get syscall.Rlimit ++ err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &get) ++ if err != nil { ++ t.Fatalf("Getrlimit: get failed: %v", err) ++ } ++ set = rlimit ++ set.Cur = set.Max - 1 ++ if set != get { ++ // Seems like Darwin requires some privilege to ++ // increase the soft limit of rlimit sandbox, though ++ // Setrlimit never reports an error. ++ switch runtime.GOOS { ++ case "darwin": ++ default: ++ t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get) ++ } ++ } ++ err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlimit) ++ if err != nil { ++ t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err) ++ } ++} ++ ++func TestSeekFailure(t *testing.T) { ++ _, err := syscall.Seek(-1, 0, 0) ++ if err == nil { ++ t.Fatalf("Seek(-1, 0, 0) did not fail") ++ } ++ str := err.Error() // used to crash on Linux ++ t.Logf("Seek: %v", str) ++ if str == "" { ++ t.Fatalf("Seek(-1, 0, 0) return error with empty message") ++ } ++} --- gcc-7-7.3.0.orig/debian/patches/src_libgo_runtime.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_runtime.diff @@ -0,0 +1,47 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/runtime/getncpu-gnu.c +=================================================================== +--- /dev/null ++++ gcc-7-7.2.0-12.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-7-7.2.0-12.1/src/libgo/runtime/go-caller.c +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/runtime/go-caller.c ++++ gcc-7-7.2.0-12.1/src/libgo/runtime/go-caller.c +@@ -108,7 +108,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); +Index: gcc-7-7.2.0-12.1/src/libgo/runtime/runtime_c.c +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/runtime/runtime_c.c ++++ gcc-7-7.2.0-12.1/src/libgo/runtime/runtime_c.c +@@ -75,7 +75,7 @@ runtime_fastrand(void) + int64 + runtime_cputicks(void) + { +-#if defined(__386__) || defined(__x86_64__) ++#if defined(__i386__) || defined(__x86_64__) + uint32 low, high; + asm("rdtsc" : "=a" (low), "=d" (high)); + return (int64)(((uint64)high << 32) | (uint64)low); --- gcc-7-7.3.0.orig/debian/patches/src_libgo_testsuite_gotest.diff +++ gcc-7-7.3.0/debian/patches/src_libgo_testsuite_gotest.diff @@ -0,0 +1,17 @@ +Index: gcc-7-7.2.0-12.1/src/libgo/testsuite/gotest +=================================================================== +--- gcc-7-7.2.0-12.1.orig/src/libgo/testsuite/gotest ++++ gcc-7-7.2.0-12.1/src/libgo/testsuite/gotest +@@ -624,7 +624,11 @@ xno) + wait $pid + status=$? + if ! test -f gotest-timeout; then +- sleeppid=`ps -o pid,ppid,comm | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'` ++ if test "$goos" = "gnu"; then ++ sleeppid=`ps -o pid,ppid | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'` ++ else ++ sleeppid=`ps -o pid,ppid,comm | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'` ++ fi + kill $alarmpid + wait $alarmpid + if test "$sleeppid" != ""; then --- gcc-7-7.3.0.orig/debian/patches/svn-doc-updates.diff +++ gcc-7-7.3.0/debian/patches/svn-doc-updates.diff @@ -0,0 +1,224 @@ +# DP: updates from the 6 branch upto 20180429 (documentation). + +LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_7_3_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-7-branch \ + | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \ + | awk '/^Index:.*\.texi/ {skip=0; print; next} /^Index:/ {skip=1; next} skip==0' + +Index: gcc/doc/extend.texi +=================================================================== +--- a/src/gcc/doc/extend.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/extend.texi (.../branches/gcc-7-branch) +@@ -1,4 +1,4 @@ +-@c Copyright (C) 1988-2017 Free Software Foundation, Inc. ++@c Copyright (C) 1988-2018 Free Software Foundation, Inc. + + @c This is part of the GCC manual. + @c For copying conditions, see the file gcc.texi. +@@ -15165,21 +15165,16 @@ + @smallexample + long __builtin_bpermd (long, long); + int __builtin_divwe (int, int); +-int __builtin_divweo (int, int); + unsigned int __builtin_divweu (unsigned int, unsigned int); +-unsigned int __builtin_divweuo (unsigned int, unsigned int); + long __builtin_divde (long, long); +-long __builtin_divdeo (long, long); + unsigned long __builtin_divdeu (unsigned long, unsigned long); +-unsigned long __builtin_divdeuo (unsigned long, unsigned long); + unsigned int cdtbcd (unsigned int); + unsigned int cbcdtd (unsigned int); + unsigned int addg6s (unsigned int, unsigned int); + @end smallexample + +-The @code{__builtin_divde}, @code{__builtin_divdeo}, +-@code{__builtin_divdeu}, @code{__builtin_divdeou} functions require a +-64-bit environment support ISA 2.06 or later. ++The @code{__builtin_divde} and @code{__builtin_divdeu} functions ++require a 64-bit environment supporting ISA 2.06 or later. + + The following built-in functions are available for the PowerPC family + of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): +@@ -18124,14 +18119,11 @@ + vector int vec_vctzw (vector int); + vector unsigned int vec_vctzw (vector int); + +-long long vec_vextract4b (const vector signed char, const int); +-long long vec_vextract4b (const vector unsigned char, const int); +- +-vector signed char vec_insert4b (vector int, vector signed char, const int); ++long long vec_extract4b (const vector unsigned char, const int); ++vector unsigned char vec_insert4b (vector signed int, vector unsigned char, ++ const int); + vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char, + const int); +-vector signed char vec_insert4b (long long, vector signed char, const int); +-vector unsigned char vec_insert4b (long long, vector unsigned char, const int); + + vector int vec_vprtyb (vector int); + vector unsigned int vec_vprtyb (vector unsigned int); +Index: gcc/doc/tm.texi +=================================================================== +--- a/src/gcc/doc/tm.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/tm.texi (.../branches/gcc-7-branch) +@@ -10645,8 +10645,12 @@ + + @defmac WORD_REGISTER_OPERATIONS + Define this macro to 1 if operations between registers with integral mode +-smaller than a word are always performed on the entire register. +-Most RISC machines have this property and most CISC machines do not. ++smaller than a word are always performed on the entire register. To be ++more explicit, if you start with a pair of @code{word_mode} registers with ++known values and you do a subword, for example @code{QImode}, addition on ++the low part of the registers, then the compiler may consider that the ++result has a known value in @code{word_mode} too if the macro is defined ++to 1. Most RISC machines have this property and most CISC machines do not. + @end defmac + + @deftypefn {Target Hook} {unsigned int} TARGET_MIN_ARITHMETIC_PRECISION (void) +Index: gcc/doc/tm.texi.in +=================================================================== +--- a/src/gcc/doc/tm.texi.in (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/tm.texi.in (.../branches/gcc-7-branch) +@@ -7581,8 +7581,12 @@ + + @defmac WORD_REGISTER_OPERATIONS + Define this macro to 1 if operations between registers with integral mode +-smaller than a word are always performed on the entire register. +-Most RISC machines have this property and most CISC machines do not. ++smaller than a word are always performed on the entire register. To be ++more explicit, if you start with a pair of @code{word_mode} registers with ++known values and you do a subword, for example @code{QImode}, addition on ++the low part of the registers, then the compiler may consider that the ++result has a known value in @code{word_mode} too if the macro is defined ++to 1. Most RISC machines have this property and most CISC machines do not. + @end defmac + + @hook TARGET_MIN_ARITHMETIC_PRECISION +Index: gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/invoke.texi (.../branches/gcc-7-branch) +@@ -1025,7 +1025,7 @@ + -mfloat-gprs=yes -mfloat-gprs=no -mfloat-gprs=single -mfloat-gprs=double @gol + -mprototype -mno-prototype @gol + -msim -mmvme -mads -myellowknife -memb -msdata @gol +--msdata=@var{opt} -mvxworks -G @var{num} @gol ++-msdata=@var{opt} -mreadonly-in-sdata -mvxworks -G @var{num} @gol + -mrecip -mrecip=@var{opt} -mno-recip -mrecip-precision @gol + -mno-recip-precision @gol + -mveclibabi=@var{type} -mfriz -mno-friz @gol +@@ -1211,7 +1211,7 @@ + -mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol + -malign-data=@var{type} -mstack-protector-guard=@var{guard} @gol + -mmitigate-rop -mgeneral-regs-only @gol +--mindirect-branch=@var{choice} -mfunction-return==@var{choice} @gol ++-mindirect-branch=@var{choice} -mfunction-return=@var{choice} @gol + -mindirect-branch-register} + + @emph{x86 Windows Options} +@@ -8132,7 +8132,7 @@ + + @item -fisolate-erroneous-paths-attribute + @opindex fisolate-erroneous-paths-attribute +-Detect paths that trigger erroneous or undefined behavior due a null value ++Detect paths that trigger erroneous or undefined behavior due to a null value + being used in a way forbidden by a @code{returns_nonnull} or @code{nonnull} + attribute. Isolate those paths from the main control flow and turn the + statement with erroneous or undefined behavior into a trap. This is not +@@ -8690,6 +8690,7 @@ + in that case, it is rounded up. + + If @var{n} is not specified or is zero, use a machine-dependent default. ++The maximum allowed @var{n} option value is 65536. + + Enabled at levels @option{-O2}, @option{-O3}. + +@@ -8715,6 +8716,7 @@ + + If @var{n} is not specified or is zero, use a machine-dependent default + which is very likely to be @samp{1}, meaning no alignment. ++The maximum allowed @var{n} option value is 65536. + + Enabled at levels @option{-O2}, @option{-O3}. + +@@ -8728,6 +8730,7 @@ + + @option{-fno-align-loops} and @option{-falign-loops=1} are + equivalent and mean that loops are not aligned. ++The maximum allowed @var{n} option value is 65536. + + If @var{n} is not specified or is zero, use a machine-dependent default. + +@@ -8745,6 +8748,7 @@ + equivalent and mean that loops are not aligned. + + If @var{n} is not specified or is zero, use a machine-dependent default. ++The maximum allowed @var{n} option value is 65536. + + Enabled at levels @option{-O2}, @option{-O3}. + +@@ -22070,6 +22074,13 @@ + in the @code{.data} section, and all uninitialized data in the + @code{.bss} section. + ++@item -mreadonly-in-sdata ++@itemx -mreadonly-in-sdata ++@opindex mreadonly-in-sdata ++@opindex mno-readonly-in-sdata ++Put read-only objects in the @code{.sdata} section as well. This is the ++default. ++ + @item -mblock-move-inline-limit=@var{num} + @opindex mblock-move-inline-limit + Inline all block moves (such as calls to @code{memcpy} or structure +@@ -25091,8 +25102,8 @@ + @itemx -mpclmul + @opindex mpclmul + @need 200 +-@itemx -mclfushopt +-@opindex mclfushopt ++@itemx -mclflushopt ++@opindex mclflushopt + @need 200 + @itemx -mfsgsbase + @opindex mfsgsbase +Index: gcc/doc/gcov.texi +=================================================================== +--- a/src/gcc/doc/gcov.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/gcov.texi (.../branches/gcc-7-branch) +@@ -322,7 +322,7 @@ + Additional block information may succeed each line, when requested by + command line option. The @var{execution_count} is @samp{-} for lines + containing no code. Unexecuted lines are marked @samp{#####} or +-@samp{====}, depending on whether they are reachable by ++@samp{=====}, depending on whether they are reachable by + non-exceptional paths or only exceptional paths such as C++ exception + handlers, respectively. Given @samp{-a} option, unexecuted blocks are + marked @samp{$$$$$} or @samp{%%%%%}, depending on whether a basic block +@@ -618,6 +618,8 @@ + to invoke the @code{__gcov_dump} function. Thus @code{__gcov_dump} + is executed after all user defined static destructors, + as well as handlers registered with @code{atexit}. ++If an executable loads a dynamic shared object via dlopen functionality, ++@option{-Wl,--dynamic-list-data} is needed to dump all profile data. + + @c man end + +Index: gcc/doc/rtl.texi +=================================================================== +--- a/src/gcc/doc/rtl.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/rtl.texi (.../branches/gcc-7-branch) +@@ -1291,10 +1291,11 @@ + @findex CDImode + @findex CTImode + @findex COImode +-@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode ++@findex CPSImode ++@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode + These modes stand for a complex number represented as a pair of integer + values. The integer values are in @code{QImode}, @code{HImode}, +-@code{SImode}, @code{DImode}, @code{TImode}, and @code{OImode}, ++@code{SImode}, @code{DImode}, @code{TImode}, @code{OImode}, and @code{PSImode}, + respectively. + + @findex BND32mode --- gcc-7-7.3.0.orig/debian/patches/svn-updates.diff +++ gcc-7-7.3.0/debian/patches/svn-updates.diff @@ -0,0 +1,77032 @@ +# DP: updates from the 7 branch upto 20181129 (r266612). + +last_update() +{ + cat > ${dir}LAST_UPDATED ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libgomp/ChangeLog +=================================================================== +--- a/src/libgomp/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,65 @@ ++2018-10-12 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-07-17 Jakub Jelinek ++ ++ PR middle-end/86542 ++ * testsuite/libgomp.c++/pr86542.C: New test. ++ ++ PR middle-end/86539 ++ * testsuite/libgomp.c++/pr86539.C: New test. ++ ++ 2018-07-26 Jakub Jelinek ++ ++ PR middle-end/86660 ++ * testsuite/libgomp.c/pr86660.c: New test. ++ ++2018-06-26 Jakub Jelinek ++ ++ PR c++/86291 ++ * testsuite/libgomp.c++/pr86291.C: New test. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ ++2018-05-01 Tom de Vries ++ ++ backport from trunk: ++ 2018-04-16 Cesar Philippidis ++ Tom de Vries ++ ++ PR middle-end/84955 ++ * testsuite/libgomp.oacc-c-c++-common/pr84955.c: New test. ++ * testsuite/libgomp.oacc-fortran/pr84955.f90: New test. ++ ++2018-03-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-02-16 Jakub Jelinek ++ ++ PR fortran/84418 ++ * libgomp.fortran/pr84418-1.f90: New test. ++ * libgomp.fortran/pr84418-2.f90: New test. ++ ++ 2018-01-29 Christoph Spiel ++ Jakub Jelinek ++ ++ PR libgomp/84096 ++ * omp.h.in (omp_init_nest_lock_with_hint): Use omp_nest_lock_t ++ instead of omp_lock_t. ++ ++2018-02-09 Martin Jambor ++ ++ Backport from mainline ++ 2018-02-08 Martin Jambor ++ ++ * testsuite/libgomp.hsa.c/staticvar.c: New test. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libgomp/testsuite/libgomp.c++/pr86542.C +=================================================================== +--- a/src/libgomp/testsuite/libgomp.c++/pr86542.C (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.c++/pr86542.C (.../branches/gcc-7-branch) +@@ -0,0 +1,37 @@ ++// PR middle-end/86542 ++ ++struct S { int s; S (); ~S (); S (const S &); }; ++S s; ++ ++S::S () ++{ ++} ++ ++S::~S () ++{ ++} ++ ++S::S (const S &x) ++{ ++ s = x.s; ++} ++ ++__attribute__((noinline, noclone)) void ++foo (int i, int j, int k, S s) ++{ ++ if (i != 0 || j != 0 || k != 0 || s.s != 12) ++ __builtin_abort (); ++} ++ ++int ++main () ++{ ++ volatile int inc = 16, jnc = 16, knc = 16; ++ s.s = 12; ++ #pragma omp taskloop collapse (3) firstprivate (s) ++ for (int i = 0; i < 16; i += inc) ++ for (int j = 0; j < 16; j += jnc) ++ for (int k = 0; k < 16; k += knc) ++ foo (i, j, k, s); ++ return 0; ++} +Index: libgomp/testsuite/libgomp.c++/pr86291.C +=================================================================== +--- a/src/libgomp/testsuite/libgomp.c++/pr86291.C (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.c++/pr86291.C (.../branches/gcc-7-branch) +@@ -0,0 +1,51 @@ ++// PR c++/86291 ++// { dg-do run } ++// { dg-additional-options "-std=c++11" } ++ ++extern "C" void abort (); ++ ++struct I ++{ ++ using size_type = __SIZE_TYPE__; ++ using difference_type = __PTRDIFF_TYPE__; ++ using value_type = int; ++ using reference = int &; ++ using pointer = int *; ++ static I begin () { return I{}; } ++ static I end () { I res; res.pos = res.num; return res; } ++ I &operator++ () { ++pos; return *this; } ++ reference operator* () const { return val; } ++ I &operator+= (size_type diff) { pos += diff; return *this; } ++ friend bool operator< (const I &a, const I &b) { return a.pos < b.pos; } ++ friend difference_type operator- (const I &a, const I &b) { return a.pos - b.pos; } ++ size_type pos = 0; ++ size_type num = 1; ++ mutable int val = 0; ++}; ++ ++int c; ++ ++int ++main () ++{ ++#pragma omp parallel for collapse(10) ++ for (auto i = I::begin (); i < I::end (); ++i) ++ for (auto j = I::begin (); j < I::end (); ++j) ++ for (auto k = I::begin (); k < I::end (); ++k) ++ for (auto l = I::begin (); l < I::end (); ++l) ++ for (auto m = I::begin (); m < I::end (); ++m) ++ for (auto n = I::begin (); n < I::end (); ++n) ++ for (auto o = I::begin (); o < I::end (); ++o) ++ for (auto p = I::begin (); p < I::end (); ++p) ++ for (auto q = I::begin (); q < I::end (); ++q) ++ for (auto r = I::begin (); r < I::end (); ++r) ++ { ++ if (*i != 0 || *j != 0 || *k != 0 || *l != 0 || *m != 0 ++ || *n != 0 || *o != 0 || *p != 0 || *q != 0 || *r != 0) ++ abort (); ++ #pragma omp atomic ++ c++; ++ } ++ if (c != 1) ++ abort (); ++} +Index: libgomp/testsuite/libgomp.c++/pr86539.C +=================================================================== +--- a/src/libgomp/testsuite/libgomp.c++/pr86539.C (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.c++/pr86539.C (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// PR middle-end/86539 ++ ++int a[384]; ++ ++__attribute__((noinline, noclone)) void ++foo (int &b, int &c) ++{ ++ #pragma omp taskloop shared (a) collapse(3) ++ for (int i = 0; i < 1; i++) ++ for (int *p = &b; p < &c; p++) ++ for (int j = 0; j < 1; j++) ++ if (p < &a[128] || p >= &a[256]) ++ __builtin_abort (); ++ else ++ p[0]++; ++} ++ ++int ++main () ++{ ++ #pragma omp parallel ++ #pragma omp single ++ foo (a[128], a[256]); ++ for (int i = 0; i < 384; i++) ++ if (a[i] != (i >= 128 && i < 256)) ++ __builtin_abort (); ++ return 0; ++} +Index: libgomp/testsuite/libgomp.fortran/pr84418-2.f90 +=================================================================== +--- a/src/libgomp/testsuite/libgomp.fortran/pr84418-2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.fortran/pr84418-2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++! PR fortran/84418 ++! { dg-do run { target vect_simd_clones } } ++! { dg-options "-fno-inline" } ++! { dg-additional-options "-msse2" { target sse2_runtime } } ++! { dg-additional-options "-mavx" { target avx_runtime } } ++ ++ type p ++ integer :: i, j ++ end type ++ type(p) :: a(1024) ++ integer :: b(4,1024), c(1024) ++ integer :: i ++ do i = 1, 1024 ++ a(i)%i = 2 * i ++ a(i)%j = 3 * i ++ b(1,i) = 4 * i ++ b(2,i) = 5 * i ++ b(3,i) = 6 * i ++ b(4,i) = 7 * i ++ end do ++ !$omp simd ++ do i = 1, 1024 ++ c(i) = foo (a(i), b(:,i)) ++ end do ++ do i = 1, 1024 ++ if (c(i).ne.(6 * i)) call abort ++ end do ++contains ++ function foo (x, y) ++ type (p) :: x ++ integer :: y(4), foo ++ !$omp declare simd linear (ref (x, y)) ++ foo = x%i + y(1) ++ end function ++end +Index: libgomp/testsuite/libgomp.fortran/pr84418-1.f90 +=================================================================== +--- a/src/libgomp/testsuite/libgomp.fortran/pr84418-1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.fortran/pr84418-1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++! PR fortran/84418 ++! { dg-do run { target vect_simd_clones } } ++! { dg-options "-fno-inline" } ++! { dg-additional-options "-msse2" { target sse2_runtime } } ++! { dg-additional-options "-mavx" { target avx_runtime } } ++ ++ real :: a(1024), b(1024), c(1024) ++ integer :: i ++ do i = 1, 1024 ++ a(i) = 0.5 * i ++ b(i) = 1.5 * i ++ end do ++ !$omp simd ++ do i = 1, 1024 ++ c(i) = foo (a(i), b(i)) ++ end do ++ do i = 1, 1024 ++ if (c(i).ne.(2 * i)) call abort ++ end do ++contains ++ real function foo (x, y) ++ real :: x, y ++ !$omp declare simd linear (ref (x, y)) ++ foo = x + y ++ end function ++end +Index: libgomp/testsuite/libgomp.hsa.c/staticvar.c +=================================================================== +--- a/src/libgomp/testsuite/libgomp.hsa.c/staticvar.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.hsa.c/staticvar.c (.../branches/gcc-7-branch) +@@ -0,0 +1,23 @@ ++extern void abort (void); ++ ++#pragma omp declare target ++int ++foo (void) ++{ ++ static int s; ++ return ++s; ++} ++#pragma omp end declare target ++ ++int ++main () ++{ ++ int r; ++ #pragma omp target map(from:r) ++ { ++ r = foo (); ++ } ++ if (r != 1) ++ abort (); ++ return 0; ++} +Index: libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90 +=================================================================== +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++ ++subroutine s ++ integer :: i, j ++ !$acc parallel loop tile(2,3) ++ do i = 1, 10 ++ do j = 1, 10 ++ do ++ end do ++ end do ++ end do ++ !$acc end parallel loop ++end subroutine s +Index: libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c +=================================================================== +--- a/src/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++ ++int ++main (void) ++{ ++ int i, j; ++ ++#pragma acc parallel loop tile(2,3) ++ for (i = 1; i < 10; i++) ++ for (j = 1; j < 10; j++) ++ for (;;) ++ ; ++ ++ return i + j; ++} +Index: libgomp/testsuite/libgomp.c/pr86660.c +=================================================================== +--- a/src/libgomp/testsuite/libgomp.c/pr86660.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.c/pr86660.c (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++/* PR middle-end/86660 */ ++ ++#pragma omp declare target ++int v[20]; ++ ++void ++foo (void) ++{ ++ if (v[7] != 2) ++ __builtin_abort (); ++ v[7] = 1; ++} ++#pragma omp end declare target ++ ++int ++main () ++{ ++ v[5] = 8; ++ v[7] = 2; ++ #pragma omp target map (always, tofrom: v) ++ { ++ foo (); ++ v[5] = 3; ++ } ++ if (v[7] != 1 || v[5] != 3) ++ __builtin_abort (); ++ return 0; ++} +Index: libgomp/configure +=================================================================== +--- a/src/libgomp/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/configure (.../branches/gcc-7-branch) +@@ -16823,7 +16823,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libgomp/omp.h.in +=================================================================== +--- a/src/libgomp/omp.h.in (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/omp.h.in (.../branches/gcc-7-branch) +@@ -101,7 +101,7 @@ + extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW; + + extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; +-extern void omp_init_nest_lock_with_hint (omp_lock_t *, omp_lock_hint_t) ++extern void omp_init_nest_lock_with_hint (omp_nest_lock_t *, omp_lock_hint_t) + __GOMP_NOTHROW; + extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; + extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; +Index: liboffloadmic/configure +=================================================================== +--- a/src/liboffloadmic/configure (.../tags/gcc_7_3_0_release) ++++ b/src/liboffloadmic/configure (.../branches/gcc-7-branch) +@@ -14492,7 +14492,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: liboffloadmic/ChangeLog +=================================================================== +--- a/src/liboffloadmic/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/liboffloadmic/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,12 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ * plugin/confugure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: liboffloadmic/plugin/configure +=================================================================== +--- a/src/liboffloadmic/plugin/configure (.../tags/gcc_7_3_0_release) ++++ b/src/liboffloadmic/plugin/configure (.../branches/gcc-7-branch) +@@ -14187,7 +14187,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libmpx/configure +=================================================================== +--- a/src/libmpx/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libmpx/configure (.../branches/gcc-7-branch) +@@ -11596,7 +11596,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libmpx/ChangeLog +=================================================================== +--- a/src/libmpx/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libmpx/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libquadmath/configure +=================================================================== +--- a/src/libquadmath/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libquadmath/configure (.../branches/gcc-7-branch) +@@ -12929,7 +12929,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libquadmath/ChangeLog +=================================================================== +--- a/src/libquadmath/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libquadmath/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libcc1/configure +=================================================================== +--- a/src/libcc1/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libcc1/configure (.../branches/gcc-7-branch) +@@ -14315,7 +14315,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libcc1/ChangeLog +=================================================================== +--- a/src/libcc1/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libcc1/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../branches/gcc-7-branch) +@@ -154,7 +154,6 @@ + # include + #endif + #include +-#include + #include + #include + #include +@@ -247,7 +246,19 @@ + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- unsigned struct_ustat_sz = sizeof(struct ustat); ++ // Use pre-computed size of struct ustat to avoid which ++ // has been removed from glibc 2.28. ++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \ ++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \ ++ || defined(__x86_64__) ++#define SIZEOF_STRUCT_USTAT 32 ++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \ ++ || defined(__powerpc__) || defined(__s390__) || defined(__sparc__) ++#define SIZEOF_STRUCT_USTAT 20 ++#else ++#error Unknown size of struct ustat ++#endif ++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + unsigned struct_rlimit64_sz = sizeof(struct rlimit64); + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID +Index: libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc (.../branches/gcc-7-branch) +@@ -153,28 +153,43 @@ + #endif + } + ++#ifndef __GLIBC_PREREQ ++#define __GLIBC_PREREQ(x, y) 0 ++#endif ++ + #if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO + static uptr g_tls_size; + +-#ifdef __i386__ +-# define DL_INTERNAL_FUNCTION __attribute__((regparm(3), stdcall)) +-#else +-# define DL_INTERNAL_FUNCTION +-#endif +- + void InitTlsSize() { + // all current supported platforms have 16 bytes stack alignment + const size_t kStackAlign = 16; +- typedef void (*get_tls_func)(size_t*, size_t*) DL_INTERNAL_FUNCTION; +- get_tls_func get_tls; +- void *get_tls_static_info_ptr = dlsym(RTLD_NEXT, "_dl_get_tls_static_info"); +- CHECK_EQ(sizeof(get_tls), sizeof(get_tls_static_info_ptr)); +- internal_memcpy(&get_tls, &get_tls_static_info_ptr, +- sizeof(get_tls_static_info_ptr)); +- CHECK_NE(get_tls, 0); + size_t tls_size = 0; + size_t tls_align = 0; +- get_tls(&tls_size, &tls_align); ++ void *get_tls_static_info_ptr = dlsym(RTLD_NEXT, "_dl_get_tls_static_info"); ++#if defined(__i386__) && !__GLIBC_PREREQ(2, 27) ++ /* On i?86, _dl_get_tls_static_info used to be internal_function, i.e. ++ __attribute__((regparm(3), stdcall)) before glibc 2.27 and is normal ++ function in 2.27 and later. */ ++ if (!dlvsym(RTLD_NEXT, "glob", "GLIBC_2.27")) { ++ typedef void (*get_tls_func)(size_t*, size_t*) ++ __attribute__((regparm(3), stdcall)); ++ get_tls_func get_tls; ++ CHECK_EQ(sizeof(get_tls), sizeof(get_tls_static_info_ptr)); ++ internal_memcpy(&get_tls, &get_tls_static_info_ptr, ++ sizeof(get_tls_static_info_ptr)); ++ CHECK_NE(get_tls, 0); ++ get_tls(&tls_size, &tls_align); ++ } else ++#endif ++ { ++ typedef void (*get_tls_func)(size_t*, size_t*); ++ get_tls_func get_tls; ++ CHECK_EQ(sizeof(get_tls), sizeof(get_tls_static_info_ptr)); ++ internal_memcpy(&get_tls, &get_tls_static_info_ptr, ++ sizeof(get_tls_static_info_ptr)); ++ CHECK_NE(get_tls, 0); ++ get_tls(&tls_size, &tls_align); ++ } + if (tls_align < kStackAlign) + tls_align = kStackAlign; + g_tls_size = RoundUpTo(tls_size, tls_align); +@@ -221,7 +236,7 @@ + val = FIRST_32_SECOND_64(1168, 1776); + else if (minor == 11 || (minor == 12 && patch == 1)) + val = FIRST_32_SECOND_64(1168, 2288); +- else if (minor <= 13) ++ else if (minor <= 14) + val = FIRST_32_SECOND_64(1168, 2304); + else + val = FIRST_32_SECOND_64(1216, 2304); +Index: libsanitizer/configure +=================================================================== +--- a/src/libsanitizer/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/configure (.../branches/gcc-7-branch) +@@ -16511,7 +16511,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libsanitizer/asan/asan_allocator.h +=================================================================== +--- a/src/libsanitizer/asan/asan_allocator.h (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/asan/asan_allocator.h (.../branches/gcc-7-branch) +@@ -115,7 +115,7 @@ + + #if SANITIZER_CAN_USE_ALLOCATOR64 + # if defined(__powerpc64__) +-const uptr kAllocatorSpace = 0xa0000000000ULL; ++const uptr kAllocatorSpace = ~(uptr)0; + const uptr kAllocatorSize = 0x20000000000ULL; // 2T. + typedef DefaultSizeClassMap SizeClassMap; + # elif defined(__aarch64__) && SANITIZER_ANDROID +Index: libsanitizer/ChangeLog +=================================================================== +--- a/src/libsanitizer/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,57 @@ ++2018-08-16 Martin Liska ++ ++ Backport from mainline ++ 2018-08-02 Martin Liska ++ ++ PR sanitizer/86022 ++ * sanitizer_common/sanitizer_linux_libcdep.cc (ThreadDescriptorSize): ++ Cherry-pick compiler-rt revision 338606. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ ++2018-06-07 Richard Biener ++ ++ Backport from mainline ++ 2018-03-19 Jakub Jelinek ++ ++ PR sanitizer/84761 ++ * sanitizer_common/sanitizer_linux_libcdep.cc (__GLIBC_PREREQ): ++ Define if not defined. ++ (DL_INTERNAL_FUNCTION): Don't define. ++ (InitTlsSize): For __i386__ if not compiled against glibc 2.27+ ++ determine at runtime whether to use regparm(3), stdcall calling ++ convention for older glibcs or normal calling convention for ++ newer glibcs for call to _dl_get_tls_static_info. ++ ++2018-05-31 Matthias Klose ++ ++ PR sanitizer/86012 ++ * sanitizer_common/sanitizer_platform_limits_posix.cc: Define ++ SIZEOF_STRUCT_USTAT for 32bit sparc. ++ ++2018-05-24 H.J. Lu ++ ++ PR sanitizer/85835 ++ * sanitizer_common/sanitizer_platform_limits_posix.cc: Don't ++ include for Linux. ++ (SIZEOF_STRUCT_USTAT): New. ++ (struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-18 Bill Seurer ++ ++ PR sanitizer/85389 ++ * asan/asan_allocator.h (kAllocatorSpace): For __powerpc64__ change ++ from 0xa0000000000ULL to ~(uptr)0. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libstdc++-v3/configure +=================================================================== +--- a/src/libstdc++-v3/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/configure (.../branches/gcc-7-branch) +@@ -620,6 +620,8 @@ + ATOMIC_FLAGS + ATOMIC_WORD_SRCDIR + ATOMICITY_SRCDIR ++INCLUDE_DIR_NOTPARALLEL_FALSE ++INCLUDE_DIR_NOTPARALLEL_TRUE + BUILD_PDF_FALSE + BUILD_PDF_TRUE + PDFLATEX +@@ -726,6 +728,8 @@ + CSTDIO_H + SECTION_FLAGS + WERROR ++ENABLE_FLOAT128_FALSE ++ENABLE_FLOAT128_TRUE + thread_header + glibcxx_PCHFLAGS + GLIBCXX_BUILD_PCH_FALSE +@@ -11601,7 +11605,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11604 "configure" ++#line 11608 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11707,7 +11711,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11710 "configure" ++#line 11714 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -15393,7 +15397,7 @@ + # Fake what AC_TRY_COMPILE does. + + cat > conftest.$ac_ext << EOF +-#line 15396 "configure" ++#line 15400 "configure" + int main() + { + typedef bool atomic_type; +@@ -15428,7 +15432,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15431 "configure" ++#line 15435 "configure" + int main() + { + typedef short atomic_type; +@@ -15463,7 +15467,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15466 "configure" ++#line 15470 "configure" + int main() + { + // NB: _Atomic_word not necessarily int. +@@ -15499,7 +15503,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15502 "configure" ++#line 15506 "configure" + int main() + { + typedef long long atomic_type; +@@ -15580,7 +15584,7 @@ + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15583 "configure" ++#line 15587 "configure" + int main() + { + _Decimal32 d1; +@@ -15622,7 +15626,7 @@ + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15625 "configure" ++#line 15629 "configure" + template + struct same + { typedef T2 type; }; +@@ -15656,7 +15660,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15659 "configure" ++#line 15663 "configure" + template + struct same + { typedef T2 type; }; +@@ -15678,9 +15682,6 @@ + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- +-$as_echo "#define _GLIBCXX_USE_FLOAT128 1" >>confdefs.h +- + enable_float128=yes + else + enable_float128=no +@@ -15687,6 +15688,7 @@ + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_float128" >&5 + $as_echo "$enable_float128" >&6; } ++ + rm -f conftest* + + ac_ext=c +@@ -53327,6 +53329,19 @@ + fi + done + ++ for ac_func in aligned_alloc posix_memalign memalign _aligned_malloc ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ + ;; + + *-fuchsia*) +@@ -66077,6 +66092,19 @@ + + CXXFLAGS="$ac_save_CXXFLAGS" + ++ for ac_func in aligned_alloc posix_memalign memalign _aligned_malloc ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ + ;; + *-netbsd*) + SECTION_FLAGS='-ffunction-sections -fdata-sections' +@@ -66244,6 +66272,19 @@ + $as_echo "#define HAVE_ISNANL 1" >>confdefs.h + + fi ++ for ac_func in aligned_alloc posix_memalign memalign _aligned_malloc ++do : ++ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" ++eval as_val=\$$as_ac_var ++ if test "x$as_val" = x""yes; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ + ;; + *-qnx6.1* | *-qnx6.2*) + SECTION_FLAGS='-ffunction-sections -fdata-sections' +@@ -81219,7 +81260,19 @@ + fi + + ++case "$build" in ++ *-*-darwin* ) glibcxx_include_dir_notparallel=yes ;; ++ * ) glibcxx_include_dir_notparallel=no ;; ++esac ++ if test $glibcxx_include_dir_notparallel = "yes"; then ++ INCLUDE_DIR_NOTPARALLEL_TRUE= ++ INCLUDE_DIR_NOTPARALLEL_FALSE='#' ++else ++ INCLUDE_DIR_NOTPARALLEL_TRUE='#' ++ INCLUDE_DIR_NOTPARALLEL_FALSE= ++fi + ++ + # Propagate the target-specific source directories through the build chain. + ATOMICITY_SRCDIR=config/${atomicity_dir} + ATOMIC_WORD_SRCDIR=config/${atomic_word_dir} +@@ -81262,6 +81315,15 @@ + fi + + ++ if test $enable_float128 = yes; then ++ ENABLE_FLOAT128_TRUE= ++ ENABLE_FLOAT128_FALSE='#' ++else ++ ENABLE_FLOAT128_TRUE='#' ++ ENABLE_FLOAT128_FALSE= ++fi ++ ++ + if test $enable_libstdcxx_allocator_flag = new; then + ENABLE_ALLOCATOR_NEW_TRUE= + ENABLE_ALLOCATOR_NEW_FALSE='#' +@@ -81657,7 +81719,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +@@ -81805,6 +81867,10 @@ + as_fn_error "conditional \"GLIBCXX_BUILD_PCH\" was never defined. + Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi ++if test -z "${ENABLE_FLOAT128_TRUE}" && test -z "${ENABLE_FLOAT128_FALSE}"; then ++ as_fn_error "conditional \"ENABLE_FLOAT128\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi + if test -z "${ENABLE_ALLOCATOR_NEW_TRUE}" && test -z "${ENABLE_ALLOCATOR_NEW_FALSE}"; then + as_fn_error "conditional \"ENABLE_ALLOCATOR_NEW\" was never defined. + Usually this means the macro was only invoked conditionally." "$LINENO" 5 +@@ -81913,6 +81979,10 @@ + as_fn_error "conditional \"BUILD_PDF\" was never defined. + Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi ++if test -z "${INCLUDE_DIR_NOTPARALLEL_TRUE}" && test -z "${INCLUDE_DIR_NOTPARALLEL_FALSE}"; then ++ as_fn_error "conditional \"INCLUDE_DIR_NOTPARALLEL\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi + + : ${CONFIG_STATUS=./config.status} + ac_write_fail=0 +Index: libstdc++-v3/python/libstdcxx/v6/printers.py +=================================================================== +--- a/src/libstdc++-v3/python/libstdcxx/v6/printers.py (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/python/libstdcxx/v6/printers.py (.../branches/gcc-7-branch) +@@ -1184,6 +1184,39 @@ + return self._iterator(self.val['_M_cmpts']) + + ++class StdPairPrinter: ++ "Print a std::pair object, with 'first' and 'second' as children" ++ ++ def __init__(self, typename, val): ++ self.val = val ++ ++ class _iter(Iterator): ++ "An iterator for std::pair types. Returns 'first' then 'second'." ++ ++ def __init__(self, val): ++ self.val = val ++ self.which = 'first' ++ ++ def __iter__(self): ++ return self ++ ++ def __next__(self): ++ if self.which is None: ++ raise StopIteration ++ which = self.which ++ if which == 'first': ++ self.which = 'second' ++ else: ++ self.which = None ++ return (which, self.val[which]) ++ ++ def children(self): ++ return self._iter(self.val) ++ ++ def to_string(self): ++ return None ++ ++ + # A "regular expression" printer which conforms to the + # "SubPrettyPrinter" protocol from gdb.printing. + class RxPrinter(object): +@@ -1515,6 +1548,7 @@ + libstdcxx_printer.add_container('std::', 'map', StdMapPrinter) + libstdcxx_printer.add_container('std::', 'multimap', StdMapPrinter) + libstdcxx_printer.add_container('std::', 'multiset', StdSetPrinter) ++ libstdcxx_printer.add_version('std::', 'pair', StdPairPrinter) + libstdcxx_printer.add_version('std::', 'priority_queue', + StdStackOrQueuePrinter) + libstdcxx_printer.add_version('std::', 'queue', StdStackOrQueuePrinter) +Index: libstdc++-v3/src/filesystem/ops.cc +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/ops.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/filesystem/ops.cc (.../branches/gcc-7-branch) +@@ -720,10 +720,8 @@ + if (::mkdir(p.c_str(), mode)) + { + const int err = errno; +- if (err != EEXIST || !is_directory(p)) ++ if (err != EEXIST || !is_directory(p, ec)) + ec.assign(err, std::generic_category()); +- else +- ec.clear(); + } + else + { +@@ -1391,10 +1389,11 @@ + ec.assign(errno, std::generic_category()); + else + { ++ uintmax_t fragment_size = f.f_frsize; + info = space_info{ +- f.f_blocks * f.f_frsize, +- f.f_bfree * f.f_frsize, +- f.f_bavail * f.f_frsize ++ f.f_blocks * fragment_size, ++ f.f_bfree * fragment_size, ++ f.f_bavail * fragment_size + }; + ec.clear(); + } +Index: libstdc++-v3/src/c++98/ios_failure.cc +=================================================================== +--- a/src/libstdc++-v3/src/c++98/ios_failure.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/c++98/ios_failure.cc (.../branches/gcc-7-branch) +@@ -29,6 +29,18 @@ + #define _GLIBCXX_USE_CXX11_ABI 0 + #include + ++#if _GLIBCXX_USE_DUAL_ABI && __cpp_rtti ++#include ++#include ++#endif ++ ++#ifdef _GLIBCXX_USE_NLS ++# include ++# define _(msgid) gettext (msgid) ++#else ++# define _(msgid) (msgid) ++#endif ++ + namespace std _GLIBCXX_VISIBILITY(default) + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION +@@ -43,5 +55,40 @@ + ios_base::failure::what() const throw() + { return _M_msg.c_str(); } + ++#if _GLIBCXX_USE_DUAL_ABI ++ // When the dual ABI is enabled __throw_ios_failure() is defined in ++ // src/c++11/cxx11-ios_failure.cc ++#if __cpp_rtti ++ // If RTTI is enabled the exception type thrown will use these functions to ++ // construct/destroy a gcc4-compatible ios::failure object in a buffer, ++ // and to catch that object via a handler of the gcc4-compatible type. ++ void ++ __construct_ios_failure(void* buf, const char* msg) ++ { ::new(buf) ios_base::failure(msg); } ++ ++ void ++ __destroy_ios_failure(void* buf) ++ { static_cast(buf)->~failure(); } ++ ++ bool ++ __is_ios_failure_handler(const __cxxabiv1::__class_type_info* type) ++ { return *type == typeid(ios::failure); } ++ ++ namespace { ++ // C++98-style static assertions to ensure ios::failure fits in a buffer ++ // with the same size and alignment as runtime_error: ++ typedef char S[1 / (sizeof(ios::failure) <= sizeof(runtime_error))]; ++ typedef char A[1 / (__alignof(ios::failure) <= __alignof(runtime_error))]; ++ } ++#endif // __cpp_rtti ++ ++#else // ! _GLIBCXX_USE_DUAL_ABI ++ ++ void ++ __throw_ios_failure(const char* __s __attribute__((unused))) ++ { _GLIBCXX_THROW_OR_ABORT(ios::failure(_(__s))); } ++ ++#endif ++ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace +Index: libstdc++-v3/src/c++11/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/c++11/Makefile.in (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/c++11/Makefile.in (.../branches/gcc-7-branch) +@@ -433,6 +433,9 @@ + + libc__11convenience_la_SOURCES = $(sources) $(inst_sources) + ++# Rewrite the type info for __ios_failure. ++@ENABLE_DUAL_ABI_TRUE@rewrite_ios_failure_typeinfo = sed -e '/^_*_ZTISt13__ios_failure:/,/_ZTVN10__cxxabiv120__si_class_type_infoE/s/_ZTVN10__cxxabiv120__si_class_type_infoE/_ZTVSt19__iosfail_type_info/' ++ + # 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 +@@ -748,6 +751,21 @@ + hashtable_c++0x.o: hashtable_c++0x.cc + $(CXXCOMPILE) -fimplicit-templates -c $< + ++@ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure-lt.s: cxx11-ios_failure.cc ++@ENABLE_DUAL_ABI_TRUE@ $(LTCXXCOMPILE) -S $< -o tmp-cxx11-ios_failure-lt.s ++@ENABLE_DUAL_ABI_TRUE@ -test -f tmp-cxx11-ios_failure-lt.o && mv -f tmp-cxx11-ios_failure-lt.o tmp-cxx11-ios_failure-lt.s ++@ENABLE_DUAL_ABI_TRUE@ $(rewrite_ios_failure_typeinfo) tmp-$@ > $@ ++@ENABLE_DUAL_ABI_TRUE@ -rm -f tmp-$@ ++@ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure.s: cxx11-ios_failure.cc ++@ENABLE_DUAL_ABI_TRUE@ $(CXXCOMPILE) -S $< -o tmp-$@ ++@ENABLE_DUAL_ABI_TRUE@ $(rewrite_ios_failure_typeinfo) tmp-$@ > $@ ++@ENABLE_DUAL_ABI_TRUE@ -rm -f tmp-$@ ++ ++@ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure.lo: cxx11-ios_failure-lt.s ++@ENABLE_DUAL_ABI_TRUE@ $(LTCXXCOMPILE) -g0 -c $< -o $@ ++@ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure.o: cxx11-ios_failure.s ++@ENABLE_DUAL_ABI_TRUE@ $(CXXCOMPILE) -g0 -c $< ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: +Index: libstdc++-v3/src/c++11/ios.cc +=================================================================== +--- a/src/libstdc++-v3/src/c++11/ios.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/c++11/ios.cc (.../branches/gcc-7-branch) +@@ -26,29 +26,13 @@ + // ISO C++ 14882: 27.4 Iostreams base classes + // + +-// Determines the version of ios_base::failure thrown by __throw_ios_failure. +-// If !_GLIBCXX_USE_DUAL_ABI this will get undefined automatically. +-#define _GLIBCXX_USE_CXX11_ABI 1 +- + #include + #include +-#include + +-#ifdef _GLIBCXX_USE_NLS +-# include +-# define _(msgid) gettext (msgid) +-#else +-# define _(msgid) (msgid) +-#endif +- + namespace std _GLIBCXX_VISIBILITY(default) + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + +- void +- __throw_ios_failure(const char* __s __attribute__((unused))) +- { _GLIBCXX_THROW_OR_ABORT(ios_base::failure(_(__s))); } +- + // Definitions for static const members of ios_base. + const ios_base::fmtflags ios_base::boolalpha; + const ios_base::fmtflags ios_base::dec; +Index: libstdc++-v3/src/c++11/system_error.cc +=================================================================== +--- a/src/libstdc++-v3/src/c++11/system_error.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/c++11/system_error.cc (.../branches/gcc-7-branch) +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #undef __sso_string + + namespace +@@ -65,6 +66,261 @@ + // _GLIBCXX_HAVE_STRERROR_L, strerror_l(i, cloc) + return string(strerror(i)); + } ++ ++ virtual std::error_condition ++ default_error_condition(int ev) const noexcept ++ { ++ switch (ev) ++ { ++ // List of errno macros from [cerrno.syn]. ++ // C11 only defines EDOM, EILSEQ and ERANGE, the rest are from POSIX. ++ // They expand to integer constant expressions with type int, ++ // and distinct positive values, suitable for use in #if directives. ++ // POSIX adds more macros (but they're not defined on all targets, ++ // see config/os/*/error_constants.h), and POSIX allows ++ // EAGAIN == EWOULDBLOCK and ENOTSUP == EOPNOTSUPP. ++ ++#ifdef E2BIG ++ case E2BIG: ++#endif ++#ifdef EACCES ++ case EACCES: ++#endif ++#ifdef EADDRINUSE ++ case EADDRINUSE: ++#endif ++#ifdef EADDRNOTAVAIL ++ case EADDRNOTAVAIL: ++#endif ++#ifdef EAFNOSUPPORT ++ case EAFNOSUPPORT: ++#endif ++#ifdef EAGAIN ++ case EAGAIN: ++#endif ++#ifdef EALREADY ++ case EALREADY: ++#endif ++#ifdef EBADF ++ case EBADF: ++#endif ++#ifdef EBADMSG ++ case EBADMSG: ++#endif ++#ifdef EBUSY ++ case EBUSY: ++#endif ++#ifdef ECANCELED ++ case ECANCELED: ++#endif ++#ifdef ECHILD ++ case ECHILD: ++#endif ++#ifdef ECONNABORTED ++ case ECONNABORTED: ++#endif ++#ifdef ECONNREFUSED ++ case ECONNREFUSED: ++#endif ++#ifdef ECONNRESET ++ case ECONNRESET: ++#endif ++#ifdef EDEADLK ++ case EDEADLK: ++#endif ++#ifdef EDESTADDRREQ ++ case EDESTADDRREQ: ++#endif ++ case EDOM: ++#ifdef EEXIST ++ case EEXIST: ++#endif ++#ifdef EFAULT ++ case EFAULT: ++#endif ++#ifdef EFBIG ++ case EFBIG: ++#endif ++#ifdef EHOSTUNREACH ++ case EHOSTUNREACH: ++#endif ++#ifdef EIDRM ++ case EIDRM: ++#endif ++ case EILSEQ: ++#ifdef EINPROGRESS ++ case EINPROGRESS: ++#endif ++#ifdef EINTR ++ case EINTR: ++#endif ++#ifdef EINVAL ++ case EINVAL: ++#endif ++#ifdef EIO ++ case EIO: ++#endif ++#ifdef EISCONN ++ case EISCONN: ++#endif ++#ifdef EISDIR ++ case EISDIR: ++#endif ++#ifdef ELOOP ++ case ELOOP: ++#endif ++#ifdef EMFILE ++ case EMFILE: ++#endif ++#ifdef EMLINK ++ case EMLINK: ++#endif ++#ifdef EMSGSIZE ++ case EMSGSIZE: ++#endif ++#ifdef ENAMETOOLONG ++ case ENAMETOOLONG: ++#endif ++#ifdef ENETDOWN ++ case ENETDOWN: ++#endif ++#ifdef ENETRESET ++ case ENETRESET: ++#endif ++#ifdef ENETUNREACH ++ case ENETUNREACH: ++#endif ++#ifdef ENFILE ++ case ENFILE: ++#endif ++#ifdef ENOBUFS ++ case ENOBUFS: ++#endif ++#ifdef ENODATA ++ case ENODATA: ++#endif ++#ifdef ENODEV ++ case ENODEV: ++#endif ++#ifdef ENOENT ++ case ENOENT: ++#endif ++#ifdef ENOEXEC ++ case ENOEXEC: ++#endif ++#ifdef ENOLCK ++ case ENOLCK: ++#endif ++#ifdef ENOLINK ++ case ENOLINK: ++#endif ++#ifdef ENOMEM ++ case ENOMEM: ++#endif ++#ifdef ENOMSG ++ case ENOMSG: ++#endif ++#ifdef ENOPROTOOPT ++ case ENOPROTOOPT: ++#endif ++#ifdef ENOSPC ++ case ENOSPC: ++#endif ++#ifdef ENOSR ++ case ENOSR: ++#endif ++#ifdef ENOSTR ++ case ENOSTR: ++#endif ++#ifdef ENOSYS ++ case ENOSYS: ++#endif ++#ifdef ENOTCONN ++ case ENOTCONN: ++#endif ++#ifdef ENOTDIR ++ case ENOTDIR: ++#endif ++#if defined ENOTEMPTY && (!defined EEXIST || ENOTEMPTY != EEXIST) ++ // AIX sometimes uses the same value for EEXIST and ENOTEMPTY ++ case ENOTEMPTY: ++#endif ++#ifdef ENOTRECOVERABLE ++ case ENOTRECOVERABLE: ++#endif ++#ifdef ENOTSOCK ++ case ENOTSOCK: ++#endif ++#ifdef ENOTSUP ++ case ENOTSUP: ++#endif ++#ifdef ENOTTY ++ case ENOTTY: ++#endif ++#ifdef ENXIO ++ case ENXIO: ++#endif ++#if defined EOPNOTSUPP && (!defined ENOTSUP || EOPNOTSUPP != ENOTSUP) ++ case EOPNOTSUPP: ++#endif ++#ifdef EOVERFLOW ++ case EOVERFLOW: ++#endif ++#ifdef EOWNERDEAD ++ case EOWNERDEAD: ++#endif ++#ifdef EPERM ++ case EPERM: ++#endif ++#ifdef EPIPE ++ case EPIPE: ++#endif ++#ifdef EPROTO ++ case EPROTO: ++#endif ++#ifdef EPROTONOSUPPORT ++ case EPROTONOSUPPORT: ++#endif ++#ifdef EPROTOTYPE ++ case EPROTOTYPE: ++#endif ++ case ERANGE: ++#ifdef EROFS ++ case EROFS: ++#endif ++#ifdef ESPIPE ++ case ESPIPE: ++#endif ++#ifdef ESRCH ++ case ESRCH: ++#endif ++#ifdef ETIME ++ case ETIME: ++#endif ++#ifdef ETIMEDOUT ++ case ETIMEDOUT: ++#endif ++#ifdef ETXTBSY ++ case ETXTBSY: ++#endif ++#if defined EWOULDBLOCK && (!defined EAGAIN || EWOULDBLOCK != EAGAIN) ++ case EWOULDBLOCK: ++#endif ++#ifdef EXDEV ++ case EXDEV: ++#endif ++ return std::error_condition(ev, std::generic_category()); ++ ++ /* Additional system-dependent mappings from non-standard error codes ++ * to one of the POSIX values above would go here, e.g. ++ case EBLAH: ++ return std::error_condition(EINVAL, std::generic_category()); ++ */ ++ ++ default: ++ return std::error_condition(ev, std::system_category()); ++ } ++ } + }; + + const generic_error_category generic_category_instance{}; +Index: libstdc++-v3/src/c++11/cxx11-ios_failure.cc +=================================================================== +--- a/src/libstdc++-v3/src/c++11/cxx11-ios_failure.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/c++11/cxx11-ios_failure.cc (.../branches/gcc-7-branch) +@@ -28,7 +28,16 @@ + + #define _GLIBCXX_USE_CXX11_ABI 1 + #include ++#include ++#include + ++#ifdef _GLIBCXX_USE_NLS ++# include ++# define _(msgid) gettext (msgid) ++#else ++# define _(msgid) (msgid) ++#endif ++ + #if ! _GLIBCXX_USE_DUAL_ABI + # error This file should not be compiled for this configuration. + #endif +@@ -91,5 +100,66 @@ + ios_base::failure::what() const throw() + { return runtime_error::what(); } + ++#if __cpp_rtti ++ // These functions are defined in src/c++98/ios_failure.cc ++ extern void __construct_ios_failure(void*, const char*); ++ extern void __destroy_ios_failure(void*); ++ extern bool __is_ios_failure_handler(const __cxxabiv1::__class_type_info*); ++ ++ // The type thrown to report errors during stream buffer operations. ++ // In addition to the ios::failure[abi:cxx11] base class it also has a ++ // member of the gcc4-compatible ios::failure type (in an opaque buffer). ++ struct __ios_failure : std::ios::failure ++ { ++ __ios_failure(const char* s) : failure(s) ++ { __construct_ios_failure(buf, runtime_error::what()); } ++ ++ ~__ios_failure() ++ { __destroy_ios_failure(buf); } ++ ++ // Use std::runtime_error as a proxy for the gcc4-compatible ios::failure ++ // (which can't be declared here because _GLIBCXX_USE_CXX11_ABI == 1). ++ // There are assertions in src/c++98/ios_failure.cc to ensure the size ++ // and alignment assumptions are valid. ++ alignas(runtime_error) unsigned char buf[sizeof(runtime_error)]; ++ }; ++ ++ // Custom type info for __ios_failure. ++ class __iosfail_type_info : __cxxabiv1::__si_class_type_info ++ { ++ ~__iosfail_type_info(); ++ ++ bool ++ __do_upcast (const __class_type_info *dst_type, ++ void **obj_ptr) const override; ++ }; ++ ++ __iosfail_type_info::~__iosfail_type_info() = default; ++ ++ // This function gets called to see if an exception of type ++ // __ios_failure can be upcast to the type in a catch handler. ++ bool ++ __iosfail_type_info::__do_upcast(const __class_type_info *dst_type, ++ void **obj_ptr) const ++ { ++ // If the handler is for the gcc4-compatible ios::failure type then ++ // catch the object stored in __ios_failure::buf instead of ++ // the __ios_failure exception object itself. ++ if (__is_ios_failure_handler(dst_type)) ++ { ++ *obj_ptr = static_cast<__ios_failure*>(*obj_ptr)->buf; ++ return true; ++ } ++ // Otherwise proceed as normal to see if the handler matches. ++ return __class_type_info::__do_upcast(dst_type, obj_ptr); ++ } ++#else // ! __cpp_rtti ++ using __ios_failure = ios::failure; ++#endif ++ ++ void ++ __throw_ios_failure(const char* __s __attribute__((unused))) ++ { _GLIBCXX_THROW_OR_ABORT(__ios_failure(_(__s))); } ++ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace +Index: libstdc++-v3/src/c++11/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/src/c++11/Makefile.am (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/c++11/Makefile.am (.../branches/gcc-7-branch) +@@ -126,6 +126,26 @@ + hashtable_c++0x.o: hashtable_c++0x.cc + $(CXXCOMPILE) -fimplicit-templates -c $< + ++if ENABLE_DUAL_ABI ++# Rewrite the type info for __ios_failure. ++rewrite_ios_failure_typeinfo = sed -e '/^_*_ZTISt13__ios_failure:/,/_ZTVN10__cxxabiv120__si_class_type_infoE/s/_ZTVN10__cxxabiv120__si_class_type_infoE/_ZTVSt19__iosfail_type_info/' ++ ++cxx11-ios_failure-lt.s: cxx11-ios_failure.cc ++ $(LTCXXCOMPILE) -S $< -o tmp-cxx11-ios_failure-lt.s ++ -test -f tmp-cxx11-ios_failure-lt.o && mv -f tmp-cxx11-ios_failure-lt.o tmp-cxx11-ios_failure-lt.s ++ $(rewrite_ios_failure_typeinfo) tmp-$@ > $@ ++ -rm -f tmp-$@ ++cxx11-ios_failure.s: cxx11-ios_failure.cc ++ $(CXXCOMPILE) -S $< -o tmp-$@ ++ $(rewrite_ios_failure_typeinfo) tmp-$@ > $@ ++ -rm -f tmp-$@ ++ ++cxx11-ios_failure.lo: cxx11-ios_failure-lt.s ++ $(LTCXXCOMPILE) -g0 -c $< -o $@ ++cxx11-ios_failure.o: cxx11-ios_failure.s ++ $(CXXCOMPILE) -g0 -c $< ++endif ++ + # 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 +Index: libstdc++-v3/src/c++11/codecvt.cc +=================================================================== +--- a/src/libstdc++-v3/src/c++11/codecvt.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/c++11/codecvt.cc (.../branches/gcc-7-branch) +@@ -1086,7 +1086,12 @@ + reinterpret_cast(__to), + reinterpret_cast(__to_end) + }; +- auto res = ucs2_in(from, to, _M_maxcode, _M_mode); ++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++ codecvt_mode mode = {}; ++#else ++ codecvt_mode mode = little_endian; ++#endif ++ auto res = ucs2_in(from, to, _M_maxcode, mode); + #elif __SIZEOF_WCHAR_T__ == 4 + range to{ + reinterpret_cast(__to), +Index: libstdc++-v3/configure.ac +=================================================================== +--- a/src/libstdc++-v3/configure.ac (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/configure.ac (.../branches/gcc-7-branch) +@@ -467,6 +467,12 @@ + test $ac_cv_prog_DBLATEX = "yes" && + test $ac_cv_prog_PDFLATEX = "yes") + ++case "$build" in ++ *-*-darwin* ) glibcxx_include_dir_notparallel=yes ;; ++ * ) glibcxx_include_dir_notparallel=no ;; ++esac ++AM_CONDITIONAL(INCLUDE_DIR_NOTPARALLEL, ++ test $glibcxx_include_dir_notparallel = "yes") + + # Propagate the target-specific source directories through the build chain. + ATOMICITY_SRCDIR=config/${atomicity_dir} +Index: libstdc++-v3/doc/xml/faq.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/faq.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/faq.xml (.../branches/gcc-7-branch) +@@ -734,15 +734,16 @@ + except for some corner cases. Support for localization + in locale may be incomplete on some non-GNU + platforms. Also dependent on the underlying platform is support +- for wchar_t and long +- long specializations, and details of thread support. ++ for wchar_t and long long specializations, ++ and details of thread support. + + + Long answer: See the implementation status pages for + C++98, +- TR1, and +- C++11. +- C++14. ++ TR1, ++ C++11, ++ C++14, and ++ C++17. + + + +@@ -875,6 +876,9 @@ + + + ++ ++ This answer is old and probably no longer be relevant. ++ + + Another problem is the rel_ops namespace and the template + comparison operator functions contained therein. If they become +Index: libstdc++-v3/doc/xml/manual/status_cxx1998.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/status_cxx1998.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/status_cxx1998.xml (.../branches/gcc-7-branch) +@@ -1125,6 +1125,10 @@ + implementation will be described under + Localization. + ++ [23.*] All of the containers in this clause ++ define size_type as std::size_t and ++ difference_type as std::ptrdiff_t. ++ + [26.2.8]/9 I have no idea what + complex<T>'s pow(0,0) returns. + +Index: libstdc++-v3/doc/xml/manual/using.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/using.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/using.xml (.../branches/gcc-7-branch) +@@ -126,7 +126,7 @@ + must be available to all hosted implementations. Actually, the + word "files" is a misnomer, since the contents of the + headers don't necessarily have to be in any kind of external +- file. The only rule is that when one #include's a ++ file. The only rule is that when one #includes a + header, the contents of that header become available, no matter + how. + +@@ -138,16 +138,24 @@ + + There are two main types of include files: header files related + to a specific version of the ISO C++ standard (called Standard +- Headers), and all others (TR1, C++ ABI, and Extensions). ++ Headers), and all others (TS, TR1, C++ ABI, and Extensions). + + + +- Two dialects of standard headers are supported, corresponding to +- the 1998 standard as updated for 2003, and the current 2011 standard. ++ Multiple dialects of standard headers are supported, corresponding to ++ the 1998 standard as updated for 2003, the 2011 standard, the 2014 ++ standard, and so on. + + + +- C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. ++ and ++ and ++ ++ show the C++98/03 include files. ++ These are available in the C++98 compilation mode, ++ i.e. -std=c++98 or -std=gnu++98. ++ Unless specified otherwise below, they are also available in later modes ++ (C++11, C++14 etc). + + + +@@ -205,6 +213,7 @@ + + valarray + vector ++ + + + +@@ -246,6 +255,7 @@ + ctime + cwchar + cwctype ++ + + + +@@ -252,8 +262,31 @@ +
+ + +-C++11 include files. These are only available in C++11 compilation ++ The following header is deprecated ++ and might be removed from a future C++ standard. ++ ++ ++ ++C++ 1998 Deprecated Library Header ++ ++ ++ ++ ++ ++strstream ++ ++ ++ ++
++ ++ ++ and ++ show the C++11 include files. ++These are available in C++11 compilation + mode, i.e. -std=c++11 or -std=gnu++11. ++Including these headers in C++98/03 mode may result in compilation errors. ++Unless specified otherwise below, they are also available in later modes ++(C++14 etc). + + + +@@ -269,73 +302,33 @@ + + + +-algorithm + array +-bitset ++atomic + chrono +-complex ++codecvt ++condition_variable + + +-condition_variable +-deque +-exception + forward_list +-fstream +- +- +-functional + future + initalizer_list +-iomanip +-ios +- +- +-iosfwd +-iostream +-istream +-iterator +-limits +- +- +-list +-locale +-map +-memory + mutex +- +- +-new +-numeric +-ostream +-queue + random + + + ratio + regex +-set +-sstream +-stack +- +- +-stdexcept +-streambuf +-string ++scoped_allocator + system_error + thread + + + tuple ++typeindex + type_traits +-typeinfo + unordered_map + unordered_set + +- +-utility +-valarray +-vector +- + + + +@@ -354,39 +347,95 @@ + + + +-cassert + ccomplex +-cctype +-cerrno + cfenv ++cinttypes ++cstdalign ++cstdbool + + +-cfloat +-cinttypes +-ciso646 +-climits +-clocale ++cstdint ++ctgmath ++cuchar ++ + ++ ++ ++ ++ ++ ++ shows the C++14 include file. ++This is available in C++14 compilation ++mode, i.e. -std=c++14 or -std=gnu++14. ++Including this header in C++98/03 mode or C++11 will not result in ++compilation errors, but will not define anything. ++Unless specified otherwise below, it is also available in later modes ++(C++17 etc). ++ ++ ++ ++ ++C++ 2014 Library Header ++ ++ ++ ++ + +-cmath +-csetjmp +-csignal +-cstdarg +-cstdbool ++shared_mutex + ++ ++ ++
++ ++ ++ shows the C++17 include files. ++These are available in C++17 compilation ++mode, i.e. -std=c++17 or -std=gnu++17. ++Including these headers in earlier modes will not result in ++compilation errors, but will not define anything. ++Unless specified otherwise below, they are also available in later modes ++(C++20 etc). ++ ++ ++ ++ ++C++ 2017 Library Headers ++ ++ ++ ++ ++ ++ ++ + +-cstddef +-cstdint +-cstdlib +-cstdio +-cstring ++any ++optional ++string_view ++variant + ++ ++ ++
++ ++ ++ ++, ++shows the additional include file define by the ++File System Technical Specification, ISO/IEC TS 18822. ++This is available in C++11 and later compilation modes. ++Including this header in earlier modes will not result in ++compilation errors, but will not define anything. ++ ++ ++ ++ ++File System TS Header ++ ++ ++ ++ + +-ctgmath +-ctime +-cuchar +-cwchar +-cwctype ++experimental/filesystem + + + +@@ -394,6 +443,73 @@ + + + ++, ++shows the additional include files define by the C++ Extensions for ++Library Fundamentals Technical Specification, ISO/IEC TS 19568. ++These are available in C++14 and later compilation modes. ++Including these headers in earlier modes will not result in ++compilation errors, but will not define anything. ++ ++ ++ ++
++Library Fundamentals TS Headers ++ ++ ++ ++ ++ ++ ++ ++ ++ ++experimental/algorithm ++experimental/any ++experimental/array ++experimental/chrono ++experimental/deque ++ ++ ++experimental/forward_list ++experimental/functional ++experimental/iterator ++experimental/list ++experimental/map ++ ++ ++experimental/memory ++experimental/memory_resource ++experimental/numeric ++experimental/optional ++experimental/propagate_const ++ ++ ++experimental/random ++experimental/ratio ++experimental/regex ++experimental/set ++experimental/source_location ++ ++ ++experimental/string ++experimental/string_view ++experimental/system_error ++experimental/tuple ++experimental/type_traits ++ ++ ++experimental/unordered_map ++experimental/unordered_set ++experimental/utility ++experimental/vector ++ ++ ++ ++ ++
++ ++ ++ + In addition, TR1 includes as: + + +@@ -424,6 +540,7 @@ + + + tr1/utility ++ + + + +@@ -564,6 +681,7 @@ + + + ext/vstring.h ++ + + + +@@ -584,18 +702,22 @@ + + + ++debug/array + debug/bitset + debug/deque ++debug/forward_list + debug/list ++ ++ + debug/map + debug/set +- +- +- + debug/string + debug/unordered_map + debug/unordered_set ++ ++ + debug/vector ++ + + + +@@ -1016,7 +1138,7 @@ +
+ + The _GLIBCXX_USE_CXX11_ABI macro (see +-) controls whether ++ ) controls whether + the declarations in the library headers use the old or new ABI. + So the decision of which ABI to use can be made separately for each + source file being compiled. +@@ -1051,12 +1173,39 @@ + + + Although the standard exception types defined in +- <stdexcept> use strings, they ++ <stdexcept> use strings, most + are not defined twice, so that a std::out_of_range + exception thrown in one file can always be caught by a suitable handler in + another file, even if the two files are compiled with different ABIs. + + ++ One exception type does change when using the new ABI, namely ++ std::ios_base::failure. ++ This is necessary because the 2011 standard changed its base class from ++ std::exception to ++ std::system_error, which causes its layout to change. ++ Exceptions due to iostream errors are thrown by a function inside ++ libstdc++.so, so whether the thrown ++ exception uses the old std::ios_base::failure type ++ or the new one depends on the ABI that was active when ++ libstdc++.so was built, ++ not the ABI active in the user code that is using ++ iostreams. ++ This means that for a given build of GCC the type thrown is fixed. ++ In current releases the library throws a special type that can be caught ++ by handlers for either the old or new type, ++ but for GCC 7.1, 7.2 and 7.3 the library throws the new ++ std::ios_base::failure type, ++ and for GCC 5.x and 6.x the library throws the old type. ++ Catch handlers of type std::ios_base::failure ++ will only catch the exceptions if using a newer release, ++ or if the handler is compiled with the same ABI as the type thrown by ++ the library. ++ Handlers for std::exception will always catch ++ iostreams exceptions, because the old and new type both inherit from ++ std::exception. ++ ++ +
Troubleshooting + + If you get linker errors about undefined references to symbols +Index: libstdc++-v3/doc/xml/manual/debug_mode.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/debug_mode.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/debug_mode.xml (.../branches/gcc-7-branch) +@@ -285,7 +285,19 @@ + + + +- ++ ++ std::array ++ array ++ __gnu_debug::array ++ <debug/array> ++ ++ ++ std::forward_list ++ forward_list ++ __gnu_debug::forward_list ++ <debug/forward_list> ++ ++ + std::unordered_map + unordered_map + __gnu_debug::unordered_map +Index: libstdc++-v3/doc/xml/manual/test.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/test.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/test.xml (.../branches/gcc-7-branch) +@@ -753,12 +753,15 @@ + + + Similarly, tests which depend on a newer standard than the default +- should use dg-options instead of an effective target, +- so that they are not skipped by default. ++ must use dg-options instead of (or in addition to) ++ an effective target, so that they are not skipped by default. + For example, tests for C++17 features should use + // { dg-options "-std=gnu++17" } +- and not +- // { dg-do run "c++1z" } ++ before any dg-do such as: ++ // { dg-do run "c++17" } ++ The dg-options directive must come first, so that ++ the -std flag has already been added to the options ++ before checking the c++17 target. + + +
Examples of Test Directives +Index: libstdc++-v3/doc/html/faq.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/faq.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/faq.html (.../branches/gcc-7-branch) +@@ -534,14 +534,15 @@ + except for some corner cases. Support for localization + in locale may be incomplete on some non-GNU + platforms. Also dependent on the underlying platform is support +- for wchar_t and long +- long specializations, and details of thread support. ++ for wchar_t and long long specializations, ++ and details of thread support. +

+ Long answer: See the implementation status pages for + C++98, +- TR1, and +- C++11. +- C++14. ++ TR1, ++ C++11, ++ C++14, and ++ C++17. +

5.2.

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

+@@ -633,7 +634,7 @@ + without other drawbacks, send us a patch. +

6.3.

+ Ambiguous overloads after including an old-style header +-

++

Note

This answer is old and probably no longer be relevant.

+ Another problem is the rel_ops namespace and the template + comparison operator functions contained therein. If they become + visible in the same namespace as other comparison functions +Index: libstdc++-v3/doc/html/manual/status.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/status.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/status.html (.../branches/gcc-7-branch) +@@ -117,6 +117,9 @@ +

[22.*] Anything and everything we have on locale + implementation will be described under + Localization. ++

[23.*] All of the containers in this clause ++ define size_type as std::size_t and ++ difference_type as std::ptrdiff_t. +

[26.2.8]/9 I have no idea what + complex<T>'s pow(0,0) returns. +

[27.4.2.4]/2 Calling +Index: libstdc++-v3/doc/html/manual/debug_mode_using.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../branches/gcc-7-branch) +@@ -20,4 +20,4 @@ + containers: +

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

In addition, when compiling in C++11 mode, these additional + containers have additional debug capability. +-

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

+\ No newline at end of file ++

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::arrayarray__gnu_debug::array<debug/array>
std::forward_listforward_list__gnu_debug::forward_list<debug/forward_list>
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/using_dual_abi.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/using_dual_abi.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/using_dual_abi.html (.../branches/gcc-7-branch) +@@ -14,7 +14,7 @@ + for the new implementations have different names the definitions for both + versions can be present in the same library. +

The _GLIBCXX_USE_CXX11_ABI macro (see +-Macros) controls whether ++ Macros) controls whether + the declarations in the library headers use the old or new ABI. + So the decision of which ABI to use can be made separately for each + source file being compiled. +@@ -43,10 +43,35 @@ + facet that derives from one or other version of + time_get is installed in the locale). +

Although the standard exception types defined in +- <stdexcept> use strings, they ++ <stdexcept> use strings, most + are not defined twice, so that a std::out_of_range + exception thrown in one file can always be caught by a suitable handler in + another file, even if the two files are compiled with different ABIs. ++

One exception type does change when using the new ABI, namely ++ std::ios_base::failure. ++ This is necessary because the 2011 standard changed its base class from ++ std::exception to ++ std::system_error, which causes its layout to change. ++ Exceptions due to iostream errors are thrown by a function inside ++ libstdc++.so, so whether the thrown ++ exception uses the old std::ios_base::failure type ++ or the new one depends on the ABI that was active when ++ libstdc++.so was built, ++ not the ABI active in the user code that is using ++ iostreams. ++ This means that for a given build of GCC the type thrown is fixed. ++ In current releases the library throws a special type that can be caught ++ by handlers for either the old or new type, ++ but for GCC 7.1, 7.2 and 7.3 the library throws the new ++ std::ios_base::failure type, ++ and for GCC 5.x and 6.x the library throws the old type. ++ Catch handlers of type std::ios_base::failure ++ will only catch the exceptions if using a newer release, ++ or if the handler is compiled with the same ABI as the type thrown by ++ the library. ++ Handlers for std::exception will always catch ++ iostreams exceptions, because the old and new type both inherit from ++ std::exception. +

Troubleshooting

If you get linker errors about undefined references to symbols + that involve types in the std::__cxx11 namespace or the tag + [abi:cxx11] then it probably indicates that you are trying to +Index: libstdc++-v3/doc/html/manual/test.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/test.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/test.html (.../branches/gcc-7-branch) +@@ -456,12 +456,15 @@ + possible variations. +

+ Similarly, tests which depend on a newer standard than the default +- should use dg-options instead of an effective target, +- so that they are not skipped by default. ++ must use dg-options instead of (or in addition to) ++ an effective target, so that they are not skipped by default. + For example, tests for C++17 features should use +

    // { dg-options "-std=gnu++17" }

+- and not +-

    // { dg-do run "c++1z" }

++ before any dg-do such as: ++

    // { dg-do run "c++17" }

++ The dg-options directive must come first, so that ++ the -std flag has already been added to the options ++ before checking the c++17 target. +

Examples of Test Directives

+ Example 1: Testing compilation only: +

+Index: libstdc++-v3/doc/html/manual/using_headers.html
+===================================================================
+--- a/src/libstdc++-v3/doc/html/manual/using_headers.html	(.../tags/gcc_7_3_0_release)
++++ b/src/libstdc++-v3/doc/html/manual/using_headers.html	(.../branches/gcc-7-branch)
+@@ -4,7 +4,7 @@
+      must be available to all hosted implementations.  Actually, the
+      word "files" is a misnomer, since the contents of the
+      headers don't necessarily have to be in any kind of external
+-     file.  The only rule is that when one #include's a
++     file.  The only rule is that when one #includes a
+      header, the contents of that header become available, no matter
+      how.
+    

+@@ -12,25 +12,71 @@ +

+ There are two main types of include files: header files related + to a specific version of the ISO C++ standard (called Standard +- Headers), and all others (TR1, C++ ABI, and Extensions). ++ Headers), and all others (TS, TR1, C++ ABI, and Extensions). +

+- Two dialects of standard headers are supported, corresponding to +- the 1998 standard as updated for 2003, and the current 2011 standard. ++ Multiple dialects of standard headers are supported, corresponding to ++ the 1998 standard as updated for 2003, the 2011 standard, the 2014 ++ standard, and so on. +

+- C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. +-

Table 3.2. C++ 1998 Library Headers

algorithmbitsetcomplexdequeexception
fstreamfunctionaliomanipiosiosfwd
iostreamistreamiteratorlimitslist
localemapmemorynewnumeric
ostreamqueuesetsstreamstack
stdexceptstreambufstringutilitytypeinfo
valarrayvector   

Table 3.3. C++ 1998 Library Headers for C Library Facilities

cassertcerrnocctypecfloatciso646
climitsclocalecmathcsetjmpcsignal
cstdargcstddefcstdiocstdlibcstring
ctimecwcharcwctype  

+-C++11 include files. These are only available in C++11 compilation ++ Table 3.2, “C++ 1998 Library Headers” and ++ Table 3.3, “C++ 1998 Library Headers for C Library Facilities” and ++ Table 3.4, “C++ 1998 Deprecated Library Header” ++ show the C++98/03 include files. ++ These are available in the C++98 compilation mode, ++ i.e. -std=c++98 or -std=gnu++98. ++ Unless specified otherwise below, they are also available in later modes ++ (C++11, C++14 etc). ++

Table 3.2. C++ 1998 Library Headers

algorithmbitsetcomplexdequeexception
fstreamfunctionaliomanipiosiosfwd
iostreamistreamiteratorlimitslist
localemapmemorynewnumeric
ostreamqueuesetsstreamstack
stdexceptstreambufstringutilitytypeinfo
valarrayvector 

Table 3.3. C++ 1998 Library Headers for C Library Facilities

cassertcerrnocctypecfloatciso646
climitsclocalecmathcsetjmpcsignal
cstdargcstddefcstdiocstdlibcstring
ctimecwcharcwctype 

++ The following header is deprecated ++ and might be removed from a future C++ standard. ++

Table 3.4. C++ 1998 Deprecated Library Header

strstream

++Table 3.5, “C++ 2011 Library Headers” and ++Table 3.6, “C++ 2011 Library Headers for C Library Facilities” show the C++11 include files. ++These are available in C++11 compilation + mode, i.e. -std=c++11 or -std=gnu++11. +-

Table 3.4. C++ 2011 Library Headers

algorithmarraybitsetchronocomplex
condition_variabledequeexceptionforward_listfstream
functionalfutureinitalizer_listiomanipios
iosfwdiostreamistreamiteratorlimits
listlocalemapmemorymutex
newnumericostreamqueuerandom
ratioregexsetsstreamstack
stdexceptstreambufstringsystem_errorthread
tupletype_traitstypeinfounordered_mapunordered_set
utilityvalarrayvector  

Table 3.5. C++ 2011 Library Headers for C Library Facilities

cassertccomplexcctypecerrnocfenv
cfloatcinttypesciso646climitsclocale
cmathcsetjmpcsignalcstdargcstdbool
cstddefcstdintcstdlibcstdiocstring
ctgmathctimecucharcwcharcwctype

++Including these headers in C++98/03 mode may result in compilation errors. ++Unless specified otherwise below, they are also available in later modes ++(C++14 etc). ++

Table 3.5. C++ 2011 Library Headers

arrayatomicchronocodecvtcondition_variable
forward_listfutureinitalizer_listmutexrandom
ratioregexscoped_allocatorsystem_errorthread
tupletypeindextype_traitsunordered_mapunordered_set

Table 3.6. C++ 2011 Library Headers for C Library Facilities

ccomplexcfenvcinttypescstdaligncstdbool
cstdintctgmathcuchar 

++Table 3.7, “C++ 2014 Library Header” shows the C++14 include file. ++This is available in C++14 compilation ++mode, i.e. -std=c++14 or -std=gnu++14. ++Including this header in C++98/03 mode or C++11 will not result in ++compilation errors, but will not define anything. ++Unless specified otherwise below, it is also available in later modes ++(C++17 etc). ++

Table 3.7. C++ 2014 Library Header

shared_mutex

++Table 3.8, “C++ 2017 Library Headers” shows the C++17 include files. ++These are available in C++17 compilation ++mode, i.e. -std=c++17 or -std=gnu++17. ++Including these headers in earlier modes will not result in ++compilation errors, but will not define anything. ++Unless specified otherwise below, they are also available in later modes ++(C++20 etc). ++

Table 3.8. C++ 2017 Library Headers

anyoptionalstring_viewvariant

++Table 3.9, “File System TS Header”, ++shows the additional include file define by the ++File System Technical Specification, ISO/IEC TS 18822. ++This is available in C++11 and later compilation modes. ++Including this header in earlier modes will not result in ++compilation errors, but will not define anything. ++

Table 3.9. File System TS Header

experimental/filesystem

++Table 3.10, “Library Fundamentals TS Headers”, ++shows the additional include files define by the C++ Extensions for ++Library Fundamentals Technical Specification, ISO/IEC TS 19568. ++These are available in C++14 and later compilation modes. ++Including these headers in earlier modes will not result in ++compilation errors, but will not define anything. ++

Table 3.10. Library Fundamentals TS Headers

experimental/algorithmexperimental/anyexperimental/arrayexperimental/chronoexperimental/deque
experimental/forward_listexperimental/functionalexperimental/iteratorexperimental/listexperimental/map
experimental/memoryexperimental/memory_resourceexperimental/numericexperimental/optionalexperimental/propagate_const
experimental/randomexperimental/ratioexperimental/regexexperimental/setexperimental/source_location
experimental/stringexperimental/string_viewexperimental/system_errorexperimental/tupleexperimental/type_traits
experimental/unordered_mapexperimental/unordered_setexperimental/utilityexperimental/vector 

+ In addition, TR1 includes as: +-

Table 3.6. C++ TR 1 Library Headers

tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
tr1/utility    

Table 3.7. C++ TR 1 Library Headers for C Library Facilities

tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

Decimal floating-point arithmetic is available if the C++ ++

Table 3.11. C++ TR 1 Library Headers

tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
tr1/utility 

Table 3.12. C++ TR 1 Library Headers for C Library Facilities

tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

Decimal floating-point arithmetic is available if the C++ + compiler supports scalar decimal floating-point types defined via + __attribute__((mode(SD|DD|LD))). +-

Table 3.8. C++ TR 24733 Decimal Floating-Point Header

decimal/decimal

++

Table 3.13. C++ TR 24733 Decimal Floating-Point Header

decimal/decimal

+ Also included are files for the C++ ABI interface: +-

Table 3.9. C++ ABI Headers

cxxabi.hcxxabi_forced.h

++

Table 3.14. C++ ABI Headers

cxxabi.hcxxabi_forced.h

+ And a large variety of extensions. +-

Table 3.10. Extension Headers

ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
ext/vstring.h    

Table 3.11. Extension Debug Headers

debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

Table 3.12. Extension Profile Headers

profile/bitsetprofile/dequeprofile/listprofile/map
profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

Table 3.13. Extension Parallel Headers

parallel/algorithmparallel/numeric

Mixing Headers

A few simple rules. ++

Table 3.15. Extension Headers

ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
ext/vstring.h 

Table 3.16. Extension Debug Headers

debug/arraydebug/bitsetdebug/dequedebug/forward_listdebug/list
debug/mapdebug/setdebug/stringdebug/unordered_mapdebug/unordered_set
debug/vector 

Table 3.17. Extension Profile Headers

profile/bitsetprofile/dequeprofile/listprofile/map
profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

Table 3.18. Extension Parallel Headers

parallel/algorithmparallel/numeric

Mixing Headers

A few simple rules. +

First, mixing different dialects of the standard headers is not + possible. It's an all-or-nothing affair. Thus, code like +

+Index: libstdc++-v3/doc/html/manual/index.html
+===================================================================
+--- a/src/libstdc++-v3/doc/html/manual/index.html	(.../tags/gcc_7_3_0_release)
++++ b/src/libstdc++-v3/doc/html/manual/index.html	(.../branches/gcc-7-branch)
+@@ -149,7 +149,7 @@
+ 	  
22.10. Non-unique Mapping Containers
22.11. Point Iterator Hierarchy
22.12. Invalidation Guarantee Tags Hierarchy
22.13. Container Tag Hierarchy
22.14. Hash functions, ranged-hash functions, and + range-hashing functions
22.15. Insert hash sequence diagram
22.16. Insert hash sequence diagram with a null policy
22.17. Hash policy class diagram
22.18. Balls and bins
22.19. Insert resize sequence diagram
22.20. Standard resize policy trigger sequence + diagram
22.21. Standard resize policy size sequence +- diagram
22.22. Tree node invariants
22.23. Tree node invalidation
22.24. A tree and its update policy
22.25. Restoring node invariants
22.26. Insert update sequence
22.27. Useless update path
22.28. A PATRICIA trie
22.29. A trie and its update policy
22.30. A simple list
22.31. The counter algorithm
22.32. Underlying Priority-Queue Data-Structures.
22.33. Priority-Queue Data-Structure Tags.
B.1. Configure and Build File Dependencies

List of Equations

22.1. Ranged Hash Function
22.2. Range-Hashing, Division Method
22.3. Division via Prime Modulo
22.4. Division via Bit Mask
22.5. + A Standard String Hash Function +
22.6. + Only k String DNA Hash +Index: libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/Makefile.in (.../branches/gcc-7-branch) +@@ -388,7 +388,6 @@ + ${bits_srcdir}/basic_string.tcc \ + ${bits_srcdir}/boost_concept_check.h \ + ${bits_srcdir}/c++0x_warning.h \ +- ${bits_srcdir}/c++14_warning.h \ + ${bits_srcdir}/char_traits.h \ + ${bits_srcdir}/codecvt.h \ + ${bits_srcdir}/concept_check.h \ +@@ -1656,6 +1655,11 @@ + @ENABLE_ALLOCATOR_NEW_FALSE@stamp-allocator-new: + @ENABLE_ALLOCATOR_NEW_FALSE@ echo 0 > stamp-allocator-new + ++@ENABLE_FLOAT128_TRUE@stamp-float128: ++@ENABLE_FLOAT128_TRUE@ echo 'define _GLIBCXX_USE_FLOAT128 1' > stamp-float128 ++@ENABLE_FLOAT128_FALSE@stamp-float128: ++@ENABLE_FLOAT128_FALSE@ echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128 ++ + # NB: The non-empty default ldbl_compat works around an AIX sed + # oddity, see libstdc++/31957 for details. + ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ +@@ -1667,7 +1671,8 @@ + stamp-extern-template \ + stamp-dual-abi \ + stamp-cxx11-abi \ +- stamp-allocator-new ++ stamp-allocator-new \ ++ stamp-float128 + @date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\ + release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\ + ns_version=`cat stamp-namespace-version` ;\ +@@ -1676,6 +1681,7 @@ + dualabi=`cat stamp-dual-abi` ;\ + cxx11abi=`cat stamp-cxx11-abi` ;\ + allocatornew=`cat stamp-allocator-new` ;\ ++ float128=`cat stamp-float128` ;\ + ldbl_compat='s,g,g,' ;\ + grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \ + ${CONFIG_HEADER} > /dev/null 2>&1 \ +@@ -1688,6 +1694,7 @@ + -e "s,define _GLIBCXX_USE_DUAL_ABI, define _GLIBCXX_USE_DUAL_ABI $$dualabi," \ + -e "s,define _GLIBCXX_USE_CXX11_ABI, define _GLIBCXX_USE_CXX11_ABI $$cxx11abi," \ + -e "s,define _GLIBCXX_USE_ALLOCATOR_NEW, define _GLIBCXX_USE_ALLOCATOR_NEW $$allocatornew," \ ++ -e "s,define _GLIBCXX_USE_FLOAT128,$$float128," \ + -e "$$ldbl_compat" \ + < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ + sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ +@@ -1897,6 +1904,9 @@ + $(experimental_headers): ; @: + $(experimental_bits_headers): ; @: + ++# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797 ++@INCLUDE_DIR_NOTPARALLEL_TRUE@.NOTPARALLEL: ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: +Index: libstdc++-v3/include/debug/string +=================================================================== +--- a/src/libstdc++-v3/include/debug/string (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/debug/string (.../branches/gcc-7-branch) +@@ -565,7 +565,7 @@ + insert(iterator __p, _InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; +- __glibcxx_check_insert_range2(__p, __first, __last, __dist); ++ __glibcxx_check_insert_range(__p, __first, __last, __dist); + + if (__dist.second >= __dp_sign) + _Base::insert(__p.base(), __gnu_debug::__unsafe(__first), +Index: libstdc++-v3/include/std/any +=================================================================== +--- a/src/libstdc++-v3/include/std/any (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/any (.../branches/gcc-7-branch) +@@ -70,7 +70,7 @@ + + /** + * @brief A type-safe container of any type. +- * ++ * + * An @c any object's state is either empty or it stores a contained object + * of CopyConstructible type. + */ +@@ -114,8 +114,8 @@ + void __do_emplace(_Args&&... __args) + { + reset(); ++ _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...); + _M_manager = &_Mgr::_S_manage; +- _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...); + } + + /// Emplace with an object created from @p __il and @p __args as +@@ -125,8 +125,8 @@ + void __do_emplace(initializer_list<_Up> __il, _Args&&... __args) + { + reset(); ++ _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...); + _M_manager = &_Mgr::_S_manage; +- _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...); + } + + public: +@@ -272,8 +272,7 @@ + _Decay<_ValueType>, _Args&&...>::type + emplace(_Args&&... __args) + { +- __do_emplace<_Decay<_ValueType>> +- (std::forward<_Args>(__args)...); ++ __do_emplace<_Decay<_ValueType>>(std::forward<_Args>(__args)...); + any::_Arg __arg; + this->_M_manager(any::_Op_access, this, &__arg); + return *static_cast<_Decay<_ValueType>*>(__arg._M_obj); +@@ -288,8 +287,8 @@ + _Args&&...>::type + emplace(initializer_list<_Up> __il, _Args&&... __args) + { +- __do_emplace<_Decay<_ValueType>, _Up> +- (__il, std::forward<_Args>(__args)...); ++ __do_emplace<_Decay<_ValueType>, _Up>(__il, ++ std::forward<_Args>(__args)...); + any::_Arg __arg; + this->_M_manager(any::_Op_access, this, &__arg); + return *static_cast<_Decay<_ValueType>*>(__arg._M_obj); +@@ -624,7 +623,7 @@ + } + + /// @} +- ++ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace std + +Index: libstdc++-v3/include/std/utility +=================================================================== +--- a/src/libstdc++-v3/include/std/utility (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/utility (.../branches/gcc-7-branch) +@@ -75,10 +75,6 @@ + #include + #include + +-#if __cplusplus > 201402L +-#include +-#endif +- + namespace std _GLIBCXX_VISIBILITY(default) + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION +Index: libstdc++-v3/include/std/type_traits +=================================================================== +--- a/src/libstdc++-v3/include/std/type_traits (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/type_traits (.../branches/gcc-7-branch) +@@ -2458,7 +2458,7 @@ + : public __invoke_result<_Functor, _ArgTypes...> + { }; + +-#if __cplusplus > 201103L ++#if __cplusplus >= 201402L + /// Alias template for aligned_storage + template::__type)> +@@ -2490,11 +2490,16 @@ + /// Alias template for result_of + template + using result_of_t = typename result_of<_Tp>::type; +-#endif ++#endif // C++14 + ++ // __enable_if_t (std::enable_if_t for C++11) ++ template ++ using __enable_if_t = typename enable_if<_Cond, _Tp>::type; ++ ++ // __void_t (std::void_t for C++11) + template using __void_t = void; + +-#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 ++#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++11 + #define __cpp_lib_void_t 201411 + /// A metafunction that always yields void, used for detecting valid types. + template using void_t = void; +@@ -3069,6 +3074,10 @@ + remove_cv_t> + )> + { }; ++ ++ template ++ inline constexpr bool has_unique_object_representations_v ++ = has_unique_object_representations<_Tp>::value; + #endif + #undef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP + +Index: libstdc++-v3/include/std/thread +=================================================================== +--- a/src/libstdc++-v3/include/std/thread (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/thread (.../branches/gcc-7-branch) +@@ -243,21 +243,18 @@ + { return _M_invoke(_Indices()); } + }; + +- // Alias for _Invoker> + template +- using __invoker_type +- = _Invoker()...))>; ++ using __decayed_tuple = tuple::type...>; + + public: +- // Returns a call wrapper that does +- // INVOKE(DECAY_COPY(__callable), DECAY_COPY(__args)). ++ // Returns a call wrapper that stores ++ // tuple{DECAY_COPY(__callable), DECAY_COPY(__args)...}. + template +- static __invoker_type<_Callable, _Args...> ++ static _Invoker<__decayed_tuple<_Callable, _Args...>> + __make_invoker(_Callable&& __callable, _Args&&... __args) + { +- return { { +- std::make_tuple(std::forward<_Callable>(__callable), +- std::forward<_Args>(__args)...) ++ return { __decayed_tuple<_Callable, _Args...>{ ++ std::forward<_Callable>(__callable), std::forward<_Args>(__args)... + } }; + } + }; +Index: libstdc++-v3/include/std/chrono +=================================================================== +--- a/src/libstdc++-v3/include/std/chrono (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/chrono (.../branches/gcc-7-branch) +@@ -318,8 +318,10 @@ + // constexpr copy constructor will be ill-formed. + duration(const duration&) = default; + ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 3050. Conversion specification problem in chrono::duration + template::value ++ enable_if::value + && (treat_as_floating_point::value + || !treat_as_floating_point<_Rep2>::value)>::type> + constexpr explicit duration(const _Rep2& __rep) +@@ -463,8 +465,12 @@ + return __cd(__cd(__lhs).count() - __cd(__rhs).count()); + } + ++ // SFINAE helper to obtain common_type<_Rep1, _Rep2> only if _Rep2 ++ // is implicitly convertible to it. ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 3050. Conversion specification problem in chrono::duration constructor + template::type>::value> + struct __common_rep_type { }; + +Index: libstdc++-v3/include/std/condition_variable +=================================================================== +--- a/src/libstdc++-v3/include/std/condition_variable (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/condition_variable (.../branches/gcc-7-branch) +@@ -135,7 +135,13 @@ + cv_status + wait_for(unique_lock& __lock, + const chrono::duration<_Rep, _Period>& __rtime) +- { return wait_until(__lock, __clock_t::now() + __rtime); } ++ { ++ using __dur = typename __clock_t::duration; ++ auto __reltime = chrono::duration_cast<__dur>(__rtime); ++ if (__reltime < __rtime) ++ ++__reltime; ++ return wait_until(__lock, __clock_t::now() + __reltime); ++ } + + template + bool +@@ -142,7 +148,13 @@ + wait_for(unique_lock& __lock, + const chrono::duration<_Rep, _Period>& __rtime, + _Predicate __p) +- { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); } ++ { ++ using __dur = typename __clock_t::duration; ++ auto __reltime = chrono::duration_cast<__dur>(__rtime); ++ if (__reltime < __rtime) ++ ++__reltime; ++ return wait_until(__lock, __clock_t::now() + __reltime, std::move(__p)); ++ } + + native_handle_type + native_handle() +Index: libstdc++-v3/include/std/functional +=================================================================== +--- a/src/libstdc++-v3/include/std/functional (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/functional (.../branches/gcc-7-branch) +@@ -931,7 +931,8 @@ + template \ + decltype(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>()) \ + operator()(_Args&&... __args) _QUALS \ +- noexcept(noexcept(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>())) \ ++ noexcept(__is_nothrow_invocable<_Fn _QUALS, _Args...>::value \ ++ && noexcept(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>())) \ + { \ + return !std::__invoke(std::forward< _Fn _QUALS >(_M_fn), \ + std::forward<_Args>(__args)...); \ +Index: libstdc++-v3/include/std/variant +=================================================================== +--- a/src/libstdc++-v3/include/std/variant (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/std/variant (.../branches/gcc-7-branch) +@@ -229,13 +229,17 @@ + + template + constexpr decltype(auto) __get(in_place_index_t<_Np>, _Union&& __u) +- { return __get(in_place_index<_Np-1>, std::forward<_Union>(__u)._M_rest); } ++ { ++ return __variant::__get(in_place_index<_Np-1>, ++ std::forward<_Union>(__u)._M_rest); ++ } + + // Returns the typed storage for __v. + template + constexpr decltype(auto) __get(_Variant&& __v) + { +- return __get(std::in_place_index<_Np>, std::forward<_Variant>(__v)._M_u); ++ return __variant::__get(std::in_place_index<_Np>, ++ std::forward<_Variant>(__v)._M_u); + } + + // Various functions as "vtable" entries, where those vtables are used by +@@ -251,7 +255,7 @@ + template + void + __erased_dtor(_Variant&& __v) +- { std::_Destroy(std::__addressof(__get<_Np>(__v))); } ++ { std::_Destroy(std::__addressof(__variant::__get<_Np>(__v))); } + + template + void +@@ -274,8 +278,8 @@ + constexpr bool \ + __erased_##__NAME(const _Variant& __lhs, const _Variant& __rhs) \ + { \ +- return __get<_Np>(std::forward<_Variant>(__lhs)) \ +- __OP __get<_Np>(std::forward<_Variant>(__rhs)); \ ++ return __variant::__get<_Np>(std::forward<_Variant>(__lhs)) \ ++ __OP __variant::__get<_Np>(std::forward<_Variant>(__rhs)); \ + } + + _VARIANT_RELATION_FUNCTION_TEMPLATE(<, less) +@@ -324,10 +328,9 @@ + + template + using __select_index = +- typename __select_int::_Select_int_base +- ::type::value_type; ++ unsigned short>::type::value_type; + + template + struct _Variant_storage +@@ -681,9 +684,8 @@ + decltype(auto) + static constexpr __visit_invoke(_Visitor&& __visitor, _Variants... __vars) + { +- return __invoke(std::forward<_Visitor>(__visitor), +- std::get<__indices>( +- std::forward<_Variants>(__vars))...); ++ return std::__invoke(std::forward<_Visitor>(__visitor), ++ std::get<__indices>(std::forward<_Variants>(__vars))...); + } + + static constexpr auto +@@ -741,7 +743,7 @@ + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); + static_assert(!is_void_v<_Tp>, "_Tp should not be void"); +- return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v); ++ return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v); + } + + template +@@ -750,7 +752,7 @@ + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); + static_assert(!is_void_v<_Tp>, "_Tp should not be void"); +- return get<__detail::__variant::__index_of_v<_Tp, _Types...>>( ++ return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>( + std::move(__v)); + } + +@@ -760,7 +762,7 @@ + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); + static_assert(!is_void_v<_Tp>, "_Tp should not be void"); +- return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v); ++ return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v); + } + + template +@@ -769,7 +771,7 @@ + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); + static_assert(!is_void_v<_Tp>, "_Tp should not be void"); +- return get<__detail::__variant::__index_of_v<_Tp, _Types...>>( ++ return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>( + std::move(__v)); + } + +@@ -808,7 +810,8 @@ + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); + static_assert(!is_void_v<_Tp>, "_Tp should not be void"); +- return get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(__ptr); ++ return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>( ++ __ptr); + } + + template +@@ -819,7 +822,8 @@ + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); + static_assert(!is_void_v<_Tp>, "_Tp should not be void"); +- return get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(__ptr); ++ return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>( ++ __ptr); + } + + struct monostate { }; +@@ -1157,6 +1161,12 @@ + + #undef _VARIANT_RELATION_FUNCTION_TEMPLATE + ++#ifdef __clang__ ++ public: ++ using _Base::_M_u; // See https://bugs.llvm.org/show_bug.cgi?id=31852 ++ private: ++#endif ++ + template + friend constexpr decltype(auto) __detail::__variant:: + #if _GLIBCXX_INLINE_VERSION +@@ -1240,7 +1250,7 @@ + + using _Result_type = + decltype(std::forward<_Visitor>(__visitor)( +- get<0>(std::forward<_Variants>(__variants))...)); ++ std::get<0>(std::forward<_Variants>(__variants))...)); + + constexpr auto& __vtable = __detail::__variant::__gen_vtable< + _Result_type, _Visitor&&, _Variants&&...>::_S_vtable; +Index: libstdc++-v3/include/experimental/memory_resource +=================================================================== +--- a/src/libstdc++-v3/include/experimental/memory_resource (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/memory_resource (.../branches/gcc-7-branch) +@@ -33,7 +33,6 @@ + #include + #include + #include +-#include + #include + + namespace std { +@@ -258,6 +257,22 @@ + template + class __resource_adaptor_imp : public memory_resource + { ++ static_assert(is_same::value_type>::value, ++ "Allocator's value_type is char"); ++ static_assert(is_same::pointer>::value, ++ "Allocator's pointer type is value_type*"); ++ static_assert(is_same::const_pointer>::value, ++ "Allocator's const_pointer type is value_type const*"); ++ static_assert(is_same::void_pointer>::value, ++ "Allocator's void_pointer type is void*"); ++ static_assert(is_same::const_void_pointer>::value, ++ "Allocator's const_void_pointer type is void const*"); ++ + public: + using allocator_type = _Alloc; + +@@ -276,7 +291,7 @@ + __resource_adaptor_imp& + operator=(const __resource_adaptor_imp&) = default; + +- allocator_type get_allocator() const { return _M_alloc; } ++ allocator_type get_allocator() const noexcept { return _M_alloc; } + + protected: + virtual void* +@@ -311,13 +326,13 @@ + private: + // Calculate Aligned Size + // Returns a size that is larger than or equal to __size and divisible +- // by __alignment, where __alignment is required to be the power of 2. ++ // by __alignment, where __alignment is required to be a power of 2. + static size_t + _S_aligned_size(size_t __size, size_t __alignment) + { return ((__size - 1)|(__alignment - 1)) + 1; } + + // Determine whether alignment meets one of those preconditions: +- // 1. Equals to Zero ++ // 1. Equal to Zero + // 2. Is power of two + static bool + _S_supported (size_t __x) +@@ -327,47 +342,50 @@ + }; + + // Global memory resources +- inline std::atomic& +- __get_default_resource() +- { +- static atomic _S_default_resource(new_delete_resource()); +- return _S_default_resource; +- } + + inline memory_resource* + new_delete_resource() noexcept + { +- static resource_adaptor> __r; +- return static_cast(&__r); ++ using type = resource_adaptor>; ++ alignas(type) static unsigned char __buf[sizeof(type)]; ++ static type* __r = new(__buf) type; ++ return __r; + } + +- template +- class __null_memory_resource : private memory_resource ++ inline memory_resource* ++ null_memory_resource() noexcept ++ { ++ class type final : public memory_resource + { +- protected: + void* +- do_allocate(size_t, size_t) ++ do_allocate(size_t, size_t) override + { std::__throw_bad_alloc(); } + + void +- do_deallocate(void*, size_t, size_t) noexcept ++ do_deallocate(void*, size_t, size_t) noexcept override + { } + + bool +- do_is_equal(const memory_resource& __other) const noexcept ++ do_is_equal(const memory_resource& __other) const noexcept override + { return this == &__other; } +- +- friend memory_resource* null_memory_resource() noexcept; + }; + +- inline memory_resource* +- null_memory_resource() noexcept ++ alignas(type) static unsigned char __buf[sizeof(type)]; ++ static type* __r = new(__buf) type; ++ return __r; ++ } ++ ++ // The default memory resource ++ ++ inline std::atomic& ++ __get_default_resource() + { +- static __null_memory_resource __r; +- return static_cast(&__r); ++ using type = atomic; ++ alignas(type) static unsigned char __buf[sizeof(type)]; ++ static type* __r = new(__buf) type(new_delete_resource()); ++ return *__r; + } + +- // The default memory resource + inline memory_resource* + get_default_resource() noexcept + { return __get_default_resource().load(); } +Index: libstdc++-v3/include/experimental/unordered_map +=================================================================== +--- a/src/libstdc++-v3/include/experimental/unordered_map (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/unordered_map (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/filesystem +=================================================================== +--- a/src/libstdc++-v3/include/experimental/filesystem (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/filesystem (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus < 201103L +-# include +-#else ++#if __cplusplus >= 201103L + + #include + #include +Index: libstdc++-v3/include/experimental/optional +=================================================================== +--- a/src/libstdc++-v3/include/experimental/optional (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/optional (.../branches/gcc-7-branch) +@@ -41,9 +41,7 @@ + * between different GCC releases for these features. + */ + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/algorithm +=================================================================== +--- a/src/libstdc++-v3/include/experimental/algorithm (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/algorithm (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/any +=================================================================== +--- a/src/libstdc++-v3/include/experimental/any (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/any (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/propagate_const +=================================================================== +--- a/src/libstdc++-v3/include/experimental/propagate_const (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/propagate_const (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/chrono +=================================================================== +--- a/src/libstdc++-v3/include/experimental/chrono (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/chrono (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/tuple +=================================================================== +--- a/src/libstdc++-v3/include/experimental/tuple (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/tuple (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/iterator +=================================================================== +--- a/src/libstdc++-v3/include/experimental/iterator (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/iterator (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/set +=================================================================== +--- a/src/libstdc++-v3/include/experimental/set (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/set (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/system_error +=================================================================== +--- a/src/libstdc++-v3/include/experimental/system_error (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/system_error (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/forward_list +=================================================================== +--- a/src/libstdc++-v3/include/experimental/forward_list (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/forward_list (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/string_view +=================================================================== +--- a/src/libstdc++-v3/include/experimental/string_view (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/string_view (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/bits/shared_ptr.h +=================================================================== +--- a/src/libstdc++-v3/include/experimental/bits/shared_ptr.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/bits/shared_ptr.h (.../branches/gcc-7-branch) +@@ -32,9 +32,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/bits/erase_if.h +=================================================================== +--- a/src/libstdc++-v3/include/experimental/bits/erase_if.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/bits/erase_if.h (.../branches/gcc-7-branch) +@@ -32,9 +32,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + #include + + namespace std +Index: libstdc++-v3/include/experimental/bits/lfts_config.h +=================================================================== +--- a/src/libstdc++-v3/include/experimental/bits/lfts_config.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/bits/lfts_config.h (.../branches/gcc-7-branch) +@@ -27,9 +27,7 @@ + * Do not attempt to use it directly. + */ + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + #include + + #if _GLIBCXX_INLINE_VERSION +Index: libstdc++-v3/include/experimental/bits/string_view.tcc +=================================================================== +--- a/src/libstdc++-v3/include/experimental/bits/string_view.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/bits/string_view.tcc (.../branches/gcc-7-branch) +@@ -36,9 +36,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + namespace std _GLIBCXX_VISIBILITY(default) + { +Index: libstdc++-v3/include/experimental/bits/fs_path.h +=================================================================== +--- a/src/libstdc++-v3/include/experimental/bits/fs_path.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/bits/fs_path.h (.../branches/gcc-7-branch) +@@ -509,7 +509,11 @@ + + /// Append one path to another + inline path operator/(const path& __lhs, const path& __rhs) +- { return path(__lhs) /= __rhs; } ++ { ++ path __result(__lhs); ++ __result /= __rhs; ++ return __result; ++ } + + /// Write a path to a stream + template +Index: libstdc++-v3/include/experimental/numeric +=================================================================== +--- a/src/libstdc++-v3/include/experimental/numeric (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/numeric (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/functional +=================================================================== +--- a/src/libstdc++-v3/include/experimental/functional (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/functional (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/unordered_set +=================================================================== +--- a/src/libstdc++-v3/include/experimental/unordered_set (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/unordered_set (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/vector +=================================================================== +--- a/src/libstdc++-v3/include/experimental/vector (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/vector (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/deque +=================================================================== +--- a/src/libstdc++-v3/include/experimental/deque (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/deque (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/string +=================================================================== +--- a/src/libstdc++-v3/include/experimental/string (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/string (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +@@ -66,9 +64,9 @@ + + _GLIBCXX_END_NAMESPACE_VERSION + ++#if _GLIBCXX_USE_CXX11_ABI + namespace pmr { + _GLIBCXX_BEGIN_NAMESPACE_VERSION +-_GLIBCXX_BEGIN_NAMESPACE_CXX11 + + // basic_string using polymorphic allocator in namespace pmr + template> +@@ -82,10 +80,9 @@ + typedef basic_string u32string; + typedef basic_string wstring; + +-_GLIBCXX_END_NAMESPACE_CXX11 + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace pmr +- ++#endif + } // namespace fundamentals_v2 + } // namespace experimental + } // namespace std +Index: libstdc++-v3/include/experimental/type_traits +=================================================================== +--- a/src/libstdc++-v3/include/experimental/type_traits (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/type_traits (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/memory +=================================================================== +--- a/src/libstdc++-v3/include/experimental/memory (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/memory (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/regex +=================================================================== +--- a/src/libstdc++-v3/include/experimental/regex (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/regex (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +@@ -44,10 +42,10 @@ + { + inline namespace fundamentals_v2 + { ++#if _GLIBCXX_USE_CXX11_ABI + namespace pmr + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION +-_GLIBCXX_BEGIN_NAMESPACE_CXX11 + + template + using match_results +@@ -59,10 +57,9 @@ + typedef match_results smatch; + typedef match_results wsmatch; + +-_GLIBCXX_END_NAMESPACE_CXX11 + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace pmr +- ++#endif + } // namespace fundamentals_v2 + } // namespace experimental + } // namespace std +Index: libstdc++-v3/include/experimental/list +=================================================================== +--- a/src/libstdc++-v3/include/experimental/list (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/list (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/map +=================================================================== +--- a/src/libstdc++-v3/include/experimental/map (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/map (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/array +=================================================================== +--- a/src/libstdc++-v3/include/experimental/array (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/array (.../branches/gcc-7-branch) +@@ -31,9 +31,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/experimental/ratio +=================================================================== +--- a/src/libstdc++-v3/include/experimental/ratio (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/ratio (.../branches/gcc-7-branch) +@@ -35,9 +35,7 @@ + + #pragma GCC system_header + +-#if __cplusplus <= 201103L +-# include +-#else ++#if __cplusplus >= 201402L + + #include + #include +Index: libstdc++-v3/include/ext/pointer.h +=================================================================== +--- a/src/libstdc++-v3/include/ext/pointer.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/ext/pointer.h (.../branches/gcc-7-branch) +@@ -437,6 +437,10 @@ + _CXX_POINTER_ARITH_OPERATOR_SET(unsigned int); + _CXX_POINTER_ARITH_OPERATOR_SET(long); + _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long); ++#ifdef _GLIBCXX_USE_LONG_LONG ++ _CXX_POINTER_ARITH_OPERATOR_SET(long long); ++ _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long long); ++#endif + + // Mathematical Manipulators + inline _Pointer_adapter& +Index: libstdc++-v3/include/bits/c++14_warning.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/c++14_warning.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/c++14_warning.h (.../branches/gcc-7-branch) +@@ -1,37 +0,0 @@ +-// Copyright (C) 2013-2017 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. +- +-// 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 +-// . +- +-/** @file bits/c++14_warning.h +- * This is an internal header file, included by other library headers. +- * Do not attempt to use it directly. @headername{iosfwd} +- */ +- +-#ifndef _CXX14_WARNING_H +-#define _CXX14_WARNING_H 1 +- +-#if __cplusplus <= 201103L +-#error This file requires compiler and library support \ +-for the ISO C++ 2014 standard. This support must be enabled \ +-with the -std=c++14 or -std=gnu++14 compiler options. +-#endif +- +-#endif +Index: libstdc++-v3/include/bits/hashtable.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-7-branch) +@@ -1206,6 +1206,9 @@ + _M_assign(__ht, + [&__roan](__node_type* __n) + { return __roan(std::move_if_noexcept(__n->_M_v())); }); ++ ++ if (__former_buckets) ++ _M_deallocate_buckets(__former_buckets, __former_bucket_count); + __ht.clear(); + } + __catch(...) +Index: libstdc++-v3/include/bits/stl_map.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_map.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_map.h (.../branches/gcc-7-branch) +@@ -802,12 +802,11 @@ + insert(value_type&& __x) + { return _M_t._M_insert_unique(std::move(__x)); } + +- template::value>::type> +- std::pair ++ template ++ __enable_if_t::value, ++ pair> + insert(_Pair&& __x) +- { return _M_t._M_insert_unique(std::forward<_Pair>(__x)); } ++ { return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); } + #endif + // @} + +@@ -863,13 +862,13 @@ + insert(const_iterator __position, value_type&& __x) + { return _M_t._M_insert_unique_(__position, std::move(__x)); } + +- template::value>::type> +- iterator ++ template ++ __enable_if_t::value, iterator> + insert(const_iterator __position, _Pair&& __x) +- { return _M_t._M_insert_unique_(__position, +- std::forward<_Pair>(__x)); } ++ { ++ return _M_t._M_emplace_hint_unique(__position, ++ std::forward<_Pair>(__x)); ++ } + #endif + // @} + +Index: libstdc++-v3/include/bits/regex_automaton.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/regex_automaton.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/regex_automaton.h (.../branches/gcc-7-branch) +@@ -333,7 +333,7 @@ + "Number of NFA states exceeds limit. Please use shorter regex " + "string, or use smaller brace expression, or make " + "_GLIBCXX_REGEX_STATE_LIMIT larger."); +- return this->size()-1; ++ return this->size() - 1; + } + + // Eliminate dummy node in this NFA to make it compact. +Index: libstdc++-v3/include/bits/parse_numbers.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/parse_numbers.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/parse_numbers.h (.../branches/gcc-7-branch) +@@ -197,6 +197,13 @@ + "integer literal does not fit in unsigned long long"); + }; + ++ // Skip past digit separators: ++ template ++ struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...> ++ : _Number_help<_Base, _Pow, _Dig, _Digs...> ++ { }; ++ ++ // Terminating case for recursion: + template + struct _Number_help<_Base, _Pow, _Dig> + { +Index: libstdc++-v3/include/bits/unique_ptr.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/unique_ptr.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/unique_ptr.h (.../branches/gcc-7-branch) +@@ -187,7 +187,7 @@ + typename = _DeleterConstraint<_Up>> + constexpr unique_ptr() noexcept + : _M_t() +- { } ++ { } + + /** Takes ownership of a pointer. + * +@@ -230,7 +230,7 @@ + /// Creates a unique_ptr that owns nothing. + template > +- constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } ++ constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } + + // Move constructors. + +@@ -452,7 +452,7 @@ + typename = _DeleterConstraint<_Up>> + constexpr unique_ptr() noexcept + : _M_t() +- { } ++ { } + + /** Takes ownership of a pointer. + * +@@ -511,7 +511,7 @@ + /// Creates a unique_ptr that owns nothing. + template > +- constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } ++ constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } + + template>> +Index: libstdc++-v3/include/bits/forward_list.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/forward_list.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/forward_list.h (.../branches/gcc-7-branch) +@@ -274,7 +274,6 @@ + struct _Fwd_list_base + { + protected: +- typedef __alloc_rebind<_Alloc, _Tp> _Tp_alloc_type; + typedef __alloc_rebind<_Alloc, _Fwd_list_node<_Tp>> _Node_alloc_type; + typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; + +@@ -345,11 +344,10 @@ + _Node* __node = this->_M_get_node(); + __try + { +- _Tp_alloc_type __a(_M_get_Node_allocator()); +- typedef allocator_traits<_Tp_alloc_type> _Alloc_traits; + ::new ((void*)__node) _Node; +- _Alloc_traits::construct(__a, __node->_M_valptr(), +- std::forward<_Args>(__args)...); ++ _Node_alloc_traits::construct(_M_get_Node_allocator(), ++ __node->_M_valptr(), ++ std::forward<_Args>(__args)...); + } + __catch(...) + { +@@ -412,10 +410,9 @@ + typedef _Fwd_list_base<_Tp, _Alloc> _Base; + typedef _Fwd_list_node<_Tp> _Node; + typedef _Fwd_list_node_base _Node_base; +- typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; + typedef typename _Base::_Node_alloc_type _Node_alloc_type; + typedef typename _Base::_Node_alloc_traits _Node_alloc_traits; +- typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; ++ typedef allocator_traits<__alloc_rebind<_Alloc, _Tp>> _Alloc_traits; + + public: + // types: +Index: libstdc++-v3/include/bits/basic_string.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/basic_string.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/basic_string.h (.../branches/gcc-7-branch) +@@ -734,10 +734,18 @@ + // Replace allocator if POCMA is true. + std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); + +- if (!__str._M_is_local() +- && (_Alloc_traits::_S_propagate_on_move_assign() +- || _Alloc_traits::_S_always_equal())) ++ if (__str._M_is_local()) + { ++ // We've always got room for a short string, just copy it. ++ if (__str.size()) ++ this->_S_copy(_M_data(), __str._M_data(), __str.size()); ++ _M_set_length(__str.size()); ++ } ++ else if (_Alloc_traits::_S_propagate_on_move_assign() ++ || _Alloc_traits::_S_always_equal() ++ || _M_get_allocator() == __str._M_get_allocator()) ++ { ++ // Just move the allocated pointer, our allocator can free it. + pointer __data = nullptr; + size_type __capacity; + if (!_M_is_local()) +@@ -744,10 +752,11 @@ + { + if (_Alloc_traits::_S_always_equal()) + { ++ // __str can reuse our existing storage. + __data = _M_data(); + __capacity = _M_allocated_capacity; + } +- else ++ else // __str can't use it, so free it. + _M_destroy(_M_allocated_capacity); + } + +@@ -762,8 +771,8 @@ + else + __str._M_data(__str._M_local_buf); + } +- else +- assign(__str); ++ else // Need to do a deep copy ++ assign(__str); + __str.clear(); + return *this; + } +@@ -1216,7 +1225,7 @@ + * remainder of @a __str is appended. + */ + basic_string& +- append(const basic_string& __str, size_type __pos, size_type __n) ++ append(const basic_string& __str, size_type __pos, size_type __n = npos) + { return _M_append(__str._M_data() + + __str._M_check(__pos, "basic_string::append"), + __str._M_limit(__pos, __n)); } +@@ -1381,7 +1390,7 @@ + * __str, the remainder of @a __str is used. + */ + basic_string& +- assign(const basic_string& __str, size_type __pos, size_type __n) ++ assign(const basic_string& __str, size_type __pos, size_type __n = npos) + { return _M_replace(size_type(0), this->size(), __str._M_data() + + __str._M_check(__pos, "basic_string::assign"), + __str._M_limit(__pos, __n)); } +@@ -1633,7 +1642,7 @@ + */ + basic_string& + insert(size_type __pos1, const basic_string& __str, +- size_type __pos2, size_type __n) ++ size_type __pos2, size_type __n = npos) + { return this->replace(__pos1, size_type(0), __str._M_data() + + __str._M_check(__pos2, "basic_string::insert"), + __str._M_limit(__pos2, __n)); } +@@ -1881,7 +1890,7 @@ + */ + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str, +- size_type __pos2, size_type __n2) ++ size_type __pos2, size_type __n2 = npos) + { return this->replace(__pos1, __n1, __str._M_data() + + __str._M_check(__pos2, "basic_string::replace"), + __str._M_limit(__pos2, __n2)); } +@@ -2941,7 +2950,7 @@ + */ + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, +- size_type __pos2, size_type __n2) const; ++ size_type __pos2, size_type __n2 = npos) const; + + /** + * @brief Compare to a C string. +@@ -4135,7 +4144,7 @@ + * remainder of @a __str is appended. + */ + basic_string& +- append(const basic_string& __str, size_type __pos, size_type __n); ++ append(const basic_string& __str, size_type __pos, size_type __n = npos); + + /** + * @brief Append a C substring. +@@ -4280,7 +4289,7 @@ + * __str, the remainder of @a __str is used. + */ + basic_string& +- assign(const basic_string& __str, size_type __pos, size_type __n) ++ assign(const basic_string& __str, size_type __pos, size_type __n = npos) + { return this->assign(__str._M_data() + + __str._M_check(__pos, "basic_string::assign"), + __str._M_limit(__pos, __n)); } +@@ -4468,7 +4477,7 @@ + */ + basic_string& + insert(size_type __pos1, const basic_string& __str, +- size_type __pos2, size_type __n) ++ size_type __pos2, size_type __n = npos) + { return this->insert(__pos1, __str._M_data() + + __str._M_check(__pos2, "basic_string::insert"), + __str._M_limit(__pos2, __n)); } +@@ -4703,7 +4712,7 @@ + */ + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str, +- size_type __pos2, size_type __n2) ++ size_type __pos2, size_type __n2 = npos) + { return this->replace(__pos1, __n1, __str._M_data() + + __str._M_check(__pos2, "basic_string::replace"), + __str._M_limit(__pos2, __n2)); } +@@ -5130,7 +5139,10 @@ + */ + _CharT* + data() noexcept +- { return _M_data(); } ++ { ++ _M_leak(); ++ return _M_data(); ++ } + #endif + + /** +@@ -5779,7 +5791,7 @@ + */ + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, +- size_type __pos2, size_type __n2) const; ++ size_type __pos2, size_type __n2 = npos) const; + + /** + * @brief Compare to a C string. +Index: libstdc++-v3/include/bits/stl_multimap.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_multimap.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_multimap.h (.../branches/gcc-7-branch) +@@ -538,12 +538,10 @@ + insert(value_type&& __x) + { return _M_t._M_insert_equal(std::move(__x)); } + +- template::value>::type> +- iterator ++ template ++ __enable_if_t::value, iterator> + insert(_Pair&& __x) +- { return _M_t._M_insert_equal(std::forward<_Pair>(__x)); } ++ { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } + #endif + // @} + +@@ -583,13 +581,13 @@ + insert(const_iterator __position, value_type&& __x) + { return _M_t._M_insert_equal_(__position, std::move(__x)); } + +- template::value>::type> +- iterator ++ template ++ __enable_if_t::value, iterator> + insert(const_iterator __position, _Pair&& __x) +- { return _M_t._M_insert_equal_(__position, +- std::forward<_Pair>(__x)); } ++ { ++ return _M_t._M_emplace_hint_equal(__position, ++ std::forward<_Pair>(__x)); ++ } + #endif + // @} + +Index: libstdc++-v3/include/bits/stl_pair.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_pair.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_pair.h (.../branches/gcc-7-branch) +@@ -185,8 +185,18 @@ + struct __nonesuch_no_braces : std::__nonesuch { + explicit __nonesuch_no_braces(const __nonesuch&) = delete; + }; ++#endif // C++11 + +-#endif ++ template class __pair_base ++ { ++#if __cplusplus >= 201103L ++ template friend struct pair; ++ __pair_base() = default; ++ ~__pair_base() = default; ++ __pair_base(const __pair_base&) = default; ++ __pair_base& operator=(const __pair_base&) = delete; ++#endif // C++11 ++ }; + + /** + * @brief Struct holding two objects of arbitrary type. +@@ -196,6 +206,7 @@ + */ + template + struct pair ++ : private __pair_base<_T1, _T2> + { + typedef _T1 first_type; /// @c first_type is the first bound type + typedef _T2 second_type; /// @c second_type is the second bound type +@@ -376,17 +387,11 @@ + + pair& + operator=(typename conditional< +- __not_<__and_, +- is_copy_assignable<_T2>>>::value, +- const pair&, const __nonesuch_no_braces&>::type __p) = delete; +- +- pair& +- operator=(typename conditional< + __and_, + is_move_assignable<_T2>>::value, + pair&&, __nonesuch_no_braces&&>::type __p) + noexcept(__and_, +- is_nothrow_move_assignable<_T2>>::value) ++ is_nothrow_move_assignable<_T2>>::value) + { + first = std::forward(__p.first); + second = std::forward(__p.second); +Index: libstdc++-v3/include/bits/unordered_map.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/unordered_map.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/unordered_map.h (.../branches/gcc-7-branch) +@@ -584,12 +584,11 @@ + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + +- template::value>::type> +- std::pair ++ template ++ __enable_if_t::value, ++ pair> + insert(_Pair&& __x) +- { return _M_h.insert(std::forward<_Pair>(__x)); } ++ { return _M_h.emplace(std::forward<_Pair>(__x)); } + //@} + + //@{ +@@ -624,12 +623,10 @@ + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + +- template::value>::type> +- iterator ++ template ++ __enable_if_t::value, iterator> + insert(const_iterator __hint, _Pair&& __x) +- { return _M_h.insert(__hint, std::forward<_Pair>(__x)); } ++ { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } + //@} + + /** +@@ -1483,12 +1480,10 @@ + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + +- template::value>::type> +- iterator ++ template ++ __enable_if_t::value, iterator> + insert(_Pair&& __x) +- { return _M_h.insert(std::forward<_Pair>(__x)); } ++ { return _M_h.emplace(std::forward<_Pair>(__x)); } + //@} + + //@{ +@@ -1521,12 +1516,10 @@ + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + +- template::value>::type> +- iterator ++ template ++ __enable_if_t::value, iterator> + insert(const_iterator __hint, _Pair&& __x) +- { return _M_h.insert(__hint, std::forward<_Pair>(__x)); } ++ { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } + //@} + + /** +Index: libstdc++-v3/include/bits/stl_vector.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_vector.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_vector.h (.../branches/gcc-7-branch) +@@ -1302,22 +1302,27 @@ + // Called by the second initialize_dispatch above + template + void +- _M_range_initialize(_InputIterator __first, +- _InputIterator __last, std::input_iterator_tag) ++ _M_range_initialize(_InputIterator __first, _InputIterator __last, ++ std::input_iterator_tag) + { +- for (; __first != __last; ++__first) ++ __try { ++ for (; __first != __last; ++__first) + #if __cplusplus >= 201103L +- emplace_back(*__first); ++ emplace_back(*__first); + #else +- push_back(*__first); ++ push_back(*__first); + #endif ++ } __catch(...) { ++ clear(); ++ __throw_exception_again; ++ } + } + + // Called by the second initialize_dispatch above + template + void +- _M_range_initialize(_ForwardIterator __first, +- _ForwardIterator __last, std::forward_iterator_tag) ++ _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, ++ std::forward_iterator_tag) + { + const size_type __n = std::distance(__first, __last); + this->_M_impl._M_start = this->_M_allocate(__n); +Index: libstdc++-v3/include/bits/node_handle.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/node_handle.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/node_handle.h (.../branches/gcc-7-branch) +@@ -105,7 +105,7 @@ + { + using std::swap; + swap(_M_ptr, __nh._M_ptr); +- if (_AllocTraits::propagate_on_container_swap ++ if (_AllocTraits::propagate_on_container_swap::value + || !_M_alloc || !__nh._M_alloc) + _M_alloc.swap(__nh._M_alloc); + else +Index: libstdc++-v3/include/bits/char_traits.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/char_traits.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/char_traits.h (.../branches/gcc-7-branch) +@@ -143,8 +143,6 @@ + { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } + }; + +-#define __cpp_lib_constexpr_char_traits 201611 +- + template + _GLIBCXX14_CONSTEXPR int + char_traits<_CharT>:: +@@ -217,6 +215,8 @@ + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + #if __cplusplus > 201402 ++#define __cpp_lib_constexpr_char_traits 201611 ++ + /** + * @brief Determine whether the characters of a NULL-terminated + * string are known at compile time. +Index: libstdc++-v3/include/bits/c++config +=================================================================== +--- a/src/libstdc++-v3/include/bits/c++config (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/c++config (.../branches/gcc-7-branch) +@@ -634,4 +634,9 @@ + # endif + #endif + ++/* Define if __float128 is supported on this host. */ ++#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) ++#define _GLIBCXX_USE_FLOAT128 ++#endif ++ + // End of prewritten config; the settings discovered at configure time follow. +Index: libstdc++-v3/include/bits/stl_iterator.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_iterator.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_iterator.h (.../branches/gcc-7-branch) +@@ -122,6 +122,7 @@ + */ + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 235 No specification of default ctor for reverse_iterator ++ // 1012. reverse_iterator default ctor should value initialize + _GLIBCXX17_CONSTEXPR + reverse_iterator() : current() { } + +@@ -176,9 +177,11 @@ + * + * This requires that @c --current is dereferenceable. + */ ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 2188. Reverse iterator does not fully support targets that overload & + _GLIBCXX17_CONSTEXPR pointer + operator->() const +- { return &(operator*()); } ++ { return std::__addressof(operator*()); } + + /** + * @return @c *this +Index: libstdc++-v3/include/bits/valarray_array.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/valarray_array.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/valarray_array.h (.../branches/gcc-7-branch) +@@ -152,7 +152,10 @@ + { + inline static void + _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o) +- { __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); } ++ { ++ if (__b) ++ __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); ++ } + }; + + template +@@ -258,7 +261,10 @@ + { + inline static void + _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b) +- { __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); } ++ { ++ if (__n != 0) ++ __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); ++ } + }; + + // Copy a plain array __a[<__n>] into a play array __b[<>] +@@ -335,17 +341,16 @@ + } + + // +- // Compute the sum of elements in range [__f, __l) ++ // Compute the sum of elements in range [__f, __l) which must not be empty. + // This is a naive algorithm. It suffers from cancelling. +- // In the future try to specialize +- // for _Tp = float, double, long double using a more accurate +- // algorithm. ++ // In the future try to specialize for _Tp = float, double, long double ++ // using a more accurate algorithm. + // + template + inline _Tp + __valarray_sum(const _Tp* __f, const _Tp* __l) + { +- _Tp __r = _Tp(); ++ _Tp __r = *__f++; + while (__f != __l) + __r += *__f++; + return __r; +Index: libstdc++-v3/include/bits/forward_list.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/forward_list.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/forward_list.tcc (.../branches/gcc-7-branch) +@@ -69,8 +69,8 @@ + { + _Node* __curr = static_cast<_Node*>(__pos->_M_next); + __pos->_M_next = __curr->_M_next; +- _Tp_alloc_type __a(_M_get_Node_allocator()); +- allocator_traits<_Tp_alloc_type>::destroy(__a, __curr->_M_valptr()); ++ _Node_alloc_traits::destroy(_M_get_Node_allocator(), ++ __curr->_M_valptr()); + __curr->~_Node(); + _M_put_node(__curr); + return __pos->_M_next; +@@ -87,8 +87,8 @@ + { + _Node* __temp = __curr; + __curr = static_cast<_Node*>(__curr->_M_next); +- _Tp_alloc_type __a(_M_get_Node_allocator()); +- allocator_traits<_Tp_alloc_type>::destroy(__a, __temp->_M_valptr()); ++ _Node_alloc_traits::destroy(_M_get_Node_allocator(), ++ __temp->_M_valptr()); + __temp->~_Node(); + _M_put_node(__temp); + } +Index: libstdc++-v3/include/bits/vector.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/vector.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/vector.tcc (.../branches/gcc-7-branch) +@@ -567,23 +567,23 @@ + { + const size_type __len = + _M_check_len(__n, "vector::_M_default_append"); +- const size_type __old_size = this->size(); ++ const size_type __size = this->size(); + pointer __new_start(this->_M_allocate(__len)); +- pointer __new_finish(__new_start); ++ pointer __destroy_from = pointer(); + __try + { +- __new_finish +- = std::__uninitialized_move_if_noexcept_a +- (this->_M_impl._M_start, this->_M_impl._M_finish, +- __new_start, _M_get_Tp_allocator()); +- __new_finish = +- std::__uninitialized_default_n_a(__new_finish, __n, +- _M_get_Tp_allocator()); ++ std::__uninitialized_default_n_a(__new_start + __size, ++ __n, _M_get_Tp_allocator()); ++ __destroy_from = __new_start + __size; ++ std::__uninitialized_move_if_noexcept_a( ++ this->_M_impl._M_start, this->_M_impl._M_finish, ++ __new_start, _M_get_Tp_allocator()); + } + __catch(...) + { +- std::_Destroy(__new_start, __new_finish, +- _M_get_Tp_allocator()); ++ if (__destroy_from) ++ std::_Destroy(__destroy_from, __destroy_from + __n, ++ _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + __throw_exception_again; + } +@@ -593,7 +593,7 @@ + this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); + this->_M_impl._M_start = __new_start; +- this->_M_impl._M_finish = __new_finish; ++ this->_M_impl._M_finish = __new_start + __size + __n; + this->_M_impl._M_end_of_storage = __new_start + __len; + } + } +Index: libstdc++-v3/include/bits/stl_bvector.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_bvector.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_bvector.h (.../branches/gcc-7-branch) +@@ -1089,9 +1089,17 @@ + void + _M_initialize(size_type __n) + { +- _Bit_pointer __q = this->_M_allocate(__n); +- this->_M_impl._M_end_of_storage = __q + _S_nword(__n); +- this->_M_impl._M_start = iterator(std::__addressof(*__q), 0); ++ if (__n) ++ { ++ _Bit_pointer __q = this->_M_allocate(__n); ++ this->_M_impl._M_end_of_storage = __q + _S_nword(__n); ++ this->_M_impl._M_start = iterator(std::__addressof(*__q), 0); ++ } ++ else ++ { ++ this->_M_impl._M_end_of_storage = _Bit_pointer(); ++ this->_M_impl._M_start = iterator(0, 0); ++ } + this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); + } + +Index: libstdc++-v3/include/bits/basic_string.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/basic_string.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/basic_string.tcc (.../branches/gcc-7-branch) +@@ -1597,8 +1597,21 @@ + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +-#if _GLIBCXX_EXTERN_TEMPLATE > 0 && __cplusplus <= 201402L ++#if _GLIBCXX_EXTERN_TEMPLATE ++ // The explicit instantiations definitions in src/c++11/string-inst.cc ++ // are compiled as C++14, so the new C++17 members aren't instantiated. ++ // Until those definitions are compiled as C++17 suppress the declaration, ++ // so C++17 code will implicitly instantiate std::string and std::wstring ++ // as needed. ++# if __cplusplus <= 201402L && _GLIBCXX_EXTERN_TEMPLATE > 0 + extern template class basic_string; ++# elif ! _GLIBCXX_USE_CXX11_ABI ++ // Still need to prevent implicit instantiation of the COW empty rep, ++ // to ensure the definition in libstdc++.so is unique (PR 86138). ++ extern template basic_string::size_type ++ basic_string::_Rep::_S_empty_rep_storage[]; ++# endif ++ + extern template + basic_istream& + operator>>(basic_istream&, string&); +@@ -1613,7 +1626,13 @@ + getline(basic_istream&, string&); + + #ifdef _GLIBCXX_USE_WCHAR_T ++# if __cplusplus <= 201402L && _GLIBCXX_EXTERN_TEMPLATE > 0 + extern template class basic_string; ++# elif ! _GLIBCXX_USE_CXX11_ABI ++ extern template basic_string::size_type ++ basic_string::_Rep::_S_empty_rep_storage[]; ++# endif ++ + extern template + basic_istream& + operator>>(basic_istream&, wstring&); +@@ -1626,8 +1645,8 @@ + extern template + basic_istream& + getline(basic_istream&, wstring&); +-#endif +-#endif ++#endif // _GLIBCXX_USE_WCHAR_T ++#endif // _GLIBCXX_EXTERN_TEMPLATE + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace std +Index: libstdc++-v3/include/bits/random.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/random.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/random.tcc (.../branches/gcc-7-branch) +@@ -2356,7 +2356,7 @@ + __v = __v * __v * __v; + __u = __aurng(); + } +- while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n ++ while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + +@@ -2405,7 +2405,7 @@ + __v = __v * __v * __v; + __u = __aurng(); + } +- while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n ++ while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + +@@ -2426,7 +2426,7 @@ + __v = __v * __v * __v; + __u = __aurng(); + } +- while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n ++ while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + +Index: libstdc++-v3/include/bits/regex.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/regex.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/regex.h (.../branches/gcc-7-branch) +@@ -785,6 +785,48 @@ + _AutomatonPtr _M_automaton; + }; + ++#if __cplusplus < 201703L ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::icase; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::nosubs; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::optimize; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::collate; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::ECMAScript; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::basic; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::extended; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::awk; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::grep; ++ ++ template ++ constexpr regex_constants::syntax_option_type ++ basic_regex<_Ch, _Tr>::egrep; ++#endif // ! C++17 ++ + /** @brief Standard regular expressions. */ + typedef basic_regex regex; + +Index: libstdc++-v3/include/bits/random.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/random.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/random.h (.../branches/gcc-7-branch) +@@ -2643,7 +2643,12 @@ + */ + void + param(const param_type& __param) +- { _M_param = __param; } ++ { ++ _M_param = __param; ++ typedef typename std::gamma_distribution::param_type ++ param_type; ++ _M_gd.param(param_type{__param.n() / 2}); ++ } + + /** + * @brief Returns the greatest lower bound value of the distribution. +Index: libstdc++-v3/include/c_global/cstdlib +=================================================================== +--- a/src/libstdc++-v3/include/c_global/cstdlib (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/c_global/cstdlib (.../branches/gcc-7-branch) +@@ -78,6 +78,9 @@ + + // Get rid of those macros defined in in lieu of real functions. + #undef abort ++#if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) ++# undef aligned_alloc ++#endif + #undef atexit + #if __cplusplus >= 201103L + # ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT +@@ -125,6 +128,9 @@ + using ::ldiv_t; + + using ::abort; ++#if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) ++ using ::aligned_alloc; ++#endif + using ::atexit; + #if __cplusplus >= 201103L + # ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT +Index: libstdc++-v3/include/c_global/cstddef +=================================================================== +--- a/src/libstdc++-v3/include/c_global/cstddef (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/c_global/cstddef (.../branches/gcc-7-branch) +@@ -65,7 +65,7 @@ + /// std::byte + enum class byte : unsigned char {}; + +- template struct __byte_operand; ++ template struct __byte_operand { }; + template<> struct __byte_operand { using __type = byte; }; + template<> struct __byte_operand { using __type = byte; }; + template<> struct __byte_operand { using __type = byte; }; +Index: libstdc++-v3/include/tr1/exp_integral.tcc +=================================================================== +--- a/src/libstdc++-v3/include/tr1/exp_integral.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/tr1/exp_integral.tcc (.../branches/gcc-7-branch) +@@ -86,7 +86,7 @@ + _Tp __term = _Tp(1); + _Tp __esum = _Tp(0); + _Tp __osum = _Tp(0); +- const unsigned int __max_iter = 100; ++ const unsigned int __max_iter = 1000; + for (unsigned int __i = 1; __i < __max_iter; ++__i) + { + __term *= - __x / __i; +@@ -156,7 +156,7 @@ + _Tp + __expint_En_series(unsigned int __n, _Tp __x) + { +- const unsigned int __max_iter = 100; ++ const unsigned int __max_iter = 1000; + const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); + const int __nm1 = __n - 1; + _Tp __ans = (__nm1 != 0 +@@ -202,7 +202,7 @@ + _Tp + __expint_En_cont_frac(unsigned int __n, _Tp __x) + { +- const unsigned int __max_iter = 100; ++ const unsigned int __max_iter = 1000; + const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); + const _Tp __fp_min = std::numeric_limits<_Tp>::min(); + const int __nm1 = __n - 1; +Index: libstdc++-v3/include/tr1/ell_integral.tcc +=================================================================== +--- a/src/libstdc++-v3/include/tr1/ell_integral.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/tr1/ell_integral.tcc (.../branches/gcc-7-branch) +@@ -685,8 +685,8 @@ + const _Tp __kk = __k * __k; + + return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) +- - __nu +- * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) + __nu) ++ + __nu ++ * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) - __nu) + / _Tp(3); + } + } +@@ -735,9 +735,9 @@ + + const _Tp __Pi = __s + * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +- - __nu * __sss ++ + __nu * __sss + * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1), +- _Tp(1) + __nu * __ss) / _Tp(3); ++ _Tp(1) - __nu * __ss) / _Tp(3); + + if (__n == 0) + return __Pi; +Index: libstdc++-v3/include/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.am (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/Makefile.am (.../branches/gcc-7-branch) +@@ -95,7 +95,6 @@ + ${bits_srcdir}/basic_string.tcc \ + ${bits_srcdir}/boost_concept_check.h \ + ${bits_srcdir}/c++0x_warning.h \ +- ${bits_srcdir}/c++14_warning.h \ + ${bits_srcdir}/char_traits.h \ + ${bits_srcdir}/codecvt.h \ + ${bits_srcdir}/concept_check.h \ +@@ -1225,6 +1224,14 @@ + echo 0 > stamp-allocator-new + endif + ++if ENABLE_FLOAT128 ++stamp-float128: ++ echo 'define _GLIBCXX_USE_FLOAT128 1' > stamp-float128 ++else ++stamp-float128: ++ echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128 ++endif ++ + # NB: The non-empty default ldbl_compat works around an AIX sed + # oddity, see libstdc++/31957 for details. + ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ +@@ -1236,7 +1243,8 @@ + stamp-extern-template \ + stamp-dual-abi \ + stamp-cxx11-abi \ +- stamp-allocator-new ++ stamp-allocator-new \ ++ stamp-float128 + @date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\ + release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\ + ns_version=`cat stamp-namespace-version` ;\ +@@ -1245,6 +1253,7 @@ + dualabi=`cat stamp-dual-abi` ;\ + cxx11abi=`cat stamp-cxx11-abi` ;\ + allocatornew=`cat stamp-allocator-new` ;\ ++ float128=`cat stamp-float128` ;\ + ldbl_compat='s,g,g,' ;\ + grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \ + ${CONFIG_HEADER} > /dev/null 2>&1 \ +@@ -1257,6 +1266,7 @@ + -e "s,define _GLIBCXX_USE_DUAL_ABI, define _GLIBCXX_USE_DUAL_ABI $$dualabi," \ + -e "s,define _GLIBCXX_USE_CXX11_ABI, define _GLIBCXX_USE_CXX11_ABI $$cxx11abi," \ + -e "s,define _GLIBCXX_USE_ALLOCATOR_NEW, define _GLIBCXX_USE_ALLOCATOR_NEW $$allocatornew," \ ++ -e "s,define _GLIBCXX_USE_FLOAT128,$$float128," \ + -e "$$ldbl_compat" \ + < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ + sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ +@@ -1474,3 +1484,8 @@ + $(ext_headers): ; @: + $(experimental_headers): ; @: + $(experimental_bits_headers): ; @: ++ ++if INCLUDE_DIR_NOTPARALLEL ++# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797 ++.NOTPARALLEL: ++endif +Index: libstdc++-v3/libsupc++/new_opa.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/new_opa.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/new_opa.cc (.../branches/gcc-7-branch) +@@ -25,20 +25,36 @@ + + #include + #include ++#include + #include + #include "new" + ++#if !_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE__ALIGNED_MALLOC \ ++ && !_GLIBCXX_HAVE_POSIX_MEMALIGN && _GLIBCXX_HAVE_MEMALIGN ++# if _GLIBCXX_HOSTED && __has_include() ++// Some C libraries declare memalign in ++# include ++# else ++extern "C" void *memalign(std::size_t boundary, std::size_t size); ++# endif ++#endif ++ + using std::new_handler; + using std::bad_alloc; + +-#if !_GLIBCXX_HAVE_ALIGNED_ALLOC +-#if _GLIBCXX_HAVE__ALIGNED_MALLOC +-#define aligned_alloc(al,sz) _aligned_malloc(sz,al) ++namespace __gnu_cxx { ++#if _GLIBCXX_HAVE_ALIGNED_ALLOC ++using ::aligned_alloc; ++#elif _GLIBCXX_HAVE__ALIGNED_MALLOC ++static inline void* ++aligned_alloc (std::size_t al, std::size_t sz) ++{ return _aligned_malloc(sz, al); } + #elif _GLIBCXX_HAVE_POSIX_MEMALIGN + static inline void* + aligned_alloc (std::size_t al, std::size_t sz) + { + void *ptr; ++ // posix_memalign has additional requirement, not present on aligned_alloc: + // The value of alignment shall be a power of two multiple of sizeof(void *). + if (al < sizeof(void*)) + al = sizeof(void*); +@@ -48,25 +64,23 @@ + return nullptr; + } + #elif _GLIBCXX_HAVE_MEMALIGN +-#if _GLIBCXX_HOSTED +-#include +-#else +-extern "C" void *memalign(std::size_t boundary, std::size_t size); ++static inline void* ++aligned_alloc (std::size_t al, std::size_t sz) ++{ ++#ifdef __sun ++ // Solaris 10 memalign requires that alignment is greater than or equal to ++ // the size of a word. ++ if (al < sizeof(int)) ++ al = sizeof(int); + #endif +-#define aligned_alloc memalign +-#else +-#include ++ return memalign (al, sz); ++} ++#else // !HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN + // The C library doesn't provide any aligned allocation functions, define one. + // This is a modified version of code from gcc/config/i386/gmm_malloc.h + static inline void* + aligned_alloc (std::size_t al, std::size_t sz) + { +- // Alignment must be a power of two. +- if (al & (al - 1)) +- return nullptr; +- else if (!sz) +- return nullptr; +- + // We need extra bytes to store the original value returned by malloc. + if (al < sizeof(void*)) + al = sizeof(void*); +@@ -82,7 +96,7 @@ + return aligned_ptr; + } + #endif +-#endif ++} // namespace __gnu_cxx + + _GLIBCXX_WEAK_DEFINITION void * + operator new (std::size_t sz, std::align_val_t al) +@@ -90,16 +104,28 @@ + void *p; + std::size_t align = (std::size_t)al; + ++ /* Alignment must be a power of two. */ ++ /* XXX This should be checked by the compiler (PR 86878). */ ++ if (__builtin_expect (align & (align - 1), false)) ++ _GLIBCXX_THROW_OR_ABORT(bad_alloc()); ++ + /* malloc (0) is unpredictable; avoid it. */ +- if (sz == 0) ++ if (__builtin_expect (sz == 0, false)) + sz = 1; + + #if _GLIBCXX_HAVE_ALIGNED_ALLOC ++# ifdef _AIX ++ /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement ++ * that alignment is a multiple of sizeof(void*). */ ++ if (align < sizeof(void*)) ++ align = sizeof(void*); ++# endif + /* C11: the value of size shall be an integral multiple of alignment. */ + if (std::size_t rem = sz & (align - 1)) + sz += align - rem; + #endif + ++ using __gnu_cxx::aligned_alloc; + while (__builtin_expect ((p = aligned_alloc (align, sz)) == 0, false)) + { + new_handler handler = std::get_new_handler (); +Index: libstdc++-v3/libsupc++/cxxabi_init_exception.h +=================================================================== +--- a/src/libstdc++-v3/libsupc++/cxxabi_init_exception.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/cxxabi_init_exception.h (.../branches/gcc-7-branch) +@@ -62,6 +62,9 @@ + void* + __cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW; + ++ void ++ __cxa_free_exception(void*) _GLIBCXX_NOTHROW; ++ + // Initialize exception (this is a GNU extension) + __cxa_refcounted_exception* + __cxa_init_primary_exception(void *object, std::type_info *tinfo, +Index: libstdc++-v3/libsupc++/exception_ptr.h +=================================================================== +--- a/src/libstdc++-v3/libsupc++/exception_ptr.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/exception_ptr.h (.../branches/gcc-7-branch) +@@ -178,25 +178,31 @@ + exception_ptr + make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT + { +-#if __cpp_exceptions ++#if __cpp_exceptions && __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI ++ void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); ++ (void) __cxxabiv1::__cxa_init_primary_exception( ++ __e, const_cast(&typeid(__ex)), ++ __exception_ptr::__dest_thunk<_Ex>); + try + { +-#if __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI +- void *__e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); +- (void)__cxxabiv1::__cxa_init_primary_exception( +- __e, const_cast(&typeid(__ex)), +- __exception_ptr::__dest_thunk<_Ex>); + ::new (__e) _Ex(__ex); + return exception_ptr(__e); +-#else ++ } ++ catch(...) ++ { ++ __cxxabiv1::__cxa_free_exception(__e); ++ return current_exception(); ++ } ++#elif __cpp_exceptions ++ try ++ { + throw __ex; +-#endif + } + catch(...) + { + return current_exception(); + } +-#else ++#else // no RTTI and no exceptions + return exception_ptr(); + #endif + } +Index: libstdc++-v3/ChangeLog +=================================================================== +--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,825 @@ ++2018-11-28 François Dumont ++ ++ PR libstdc++/88199 ++ * include/bits/hashtable.h ++ (_Hashtable<>::_M_move_assign(_Hashtable&&, false_type)): Deallocate ++ former buckets after assignment. ++ * testsuite/23_containers/unordered_set/allocator/move_assign.cc ++ (test03): New. ++ ++2018-10-31 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-10-31 Jonathan Wakely ++ ++ PR libstdc++/87822 ++ * include/bits/stl_pair.h (__pair_base): Change to class template. ++ (pair): Make base class type depend on template parameters. ++ * testsuite/20_util/pair/87822.cc: New test. ++ ++2018-10-25 Jonathan Wakely ++ ++ PR libstdc++/87749 ++ * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] ++ (basic_string::operator=(basic_string&&)): For short strings copy the ++ buffer inline. Only fall back to using assign(const basic_string&) to ++ do a deep copy when reallocation is needed. ++ * testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc: ++ New test. ++ * testsuite/21_strings/basic_string/modifiers/assign/char/ ++ move_assign_optim.cc: New test. ++ * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc: ++ New test. ++ * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/ ++ move_assign_optim.cc: New test. ++ ++2018-10-23 Jonathan Wakely ++ ++ PR libstdc++/87704 ++ * include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do ++ not delegate to default constructor. ++ (unique_ptr::unique_ptr(nullptr_t)): Likewise. ++ * testsuite/20_util/unique_ptr/cons/incomplete.cc: New test. ++ ++2018-10-22 Jonathan Wakely ++ ++ Backport from mainline ++ 2017-09-12 Jonathan Wakely ++ ++ PR libstdc++/79433 ++ * include/Makefile.am: Remove . ++ * include/Makefile.in: Regenerate. ++ * include/bits/c++14_warning.h: Remove. ++ * include/experimental/algorithm: Do not include . ++ * include/experimental/any: Likewise. ++ * include/experimental/array: Likewise. ++ * include/experimental/bits/erase_if.h: Likewise. ++ * include/experimental/bits/lfts_config.h: Likewise. ++ * include/experimental/bits/shared_ptr.h: Likewise. ++ * include/experimental/bits/string_view.tcc: Likewise. ++ * include/experimental/chrono: Likewise. ++ * include/experimental/deque: Likewise. ++ * include/experimental/filesystem: Do not include . ++ * include/experimental/forward_list: Do not include . ++ * include/experimental/functional: Likewise. ++ * include/experimental/iterator: Likewise. ++ * include/experimental/list: Likewise. ++ * include/experimental/map: Likewise. ++ * include/experimental/memory: Likewise. ++ * include/experimental/numeric: Likewise. ++ * include/experimental/optional: Likewise. ++ * include/experimental/propagate_const: Likewise. ++ * include/experimental/ratio: Likewise. ++ * include/experimental/regex: Likewise. ++ * include/experimental/set: Likewise. ++ * include/experimental/string: Likewise. ++ * include/experimental/string_view: Likewise. ++ * include/experimental/system_error: Likewise. ++ * include/experimental/tuple: Likewise. ++ * include/experimental/type_traits: Likewise. ++ * include/experimental/unordered_map: Likewise. ++ * include/experimental/unordered_set: Likewise. ++ * include/experimental/vector: Likewise. ++ * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error ++ line number. ++ * testsuite/experimental/array/neg.cc: Likewise. ++ * testsuite/experimental/propagate_const/assignment/move_neg.cc: ++ Likewise. ++ * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise. ++ * testsuite/experimental/propagate_const/requirements2.cc: Likewise. ++ * testsuite/experimental/propagate_const/requirements3.cc: Likewise. ++ * testsuite/experimental/propagate_const/requirements4.cc: Likewise. ++ * testsuite/experimental/propagate_const/requirements5.cc: Likewise. ++ ++2018-10-18 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-10-18 Jonathan Wakely ++ ++ PR libstdc++/87641 ++ * include/bits/valarray_array.h (__valarray_sum): Use first element ++ to initialize accumulator instead of value-initializing it. ++ * testsuite/26_numerics/valarray/87641.cc: New test. ++ ++2018-10-15 Jonathan Wakely ++ ++ * testsuite/22_locale/numpunct/members/char/3.cc: Adjust test to ++ account for change to glibc it_IT localedata (glibc bz#10797). ++ ++2018-10-12 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-07-31 Jonathan Wakely ++ ++ PR libstdc++/86751 ++ * include/bits/stl_pair.h (__pair_base): New class with deleted copy ++ assignment operator. ++ (pair): Derive from __pair_base. ++ (pair::operator=): Remove deleted overload. ++ * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer ++ so that new base class isn't shown in GDB. ++ * testsuite/20_util/pair/86751.cc: New test. ++ * testsuite/20_util/pair/ref_assign.cc: New test. ++ ++2018-10-12 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-09-03 Jonathan Wakely ++ ++ PR libstdc++/78595 ++ * include/bits/stl_map.h (map::insert(_Pair&&)) ++ (map::insert(const_iterator, _Pair&&)): Do emplace instead of insert. ++ * include/bits/stl_multimap.h (multimap::insert(_Pair&&)) ++ (multimap::insert(const_iterator, _Pair&&)): Likewise. ++ * include/bits/unordered_map.h (unordered_map::insert(_Pair&&)) ++ (unordered_map::insert(const_iterator, _Pair&&)) ++ (unordered_multimap::insert(_Pair&&)) ++ (unordered_multimap::insert(const_iterator, _Pair&&)): Likewise. ++ * include/std/type_traits (__enable_if_t): Define for C++11. ++ * testsuite/23_containers/map/modifiers/insert/78595.cc: New test. ++ * testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test. ++ * testsuite/23_containers/unordered_map/modifiers/78595.cc: New test. ++ * testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New ++ test. ++ ++2018-10-12 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-08-30 Jonathan Wakely ++ ++ * include/ext/pointer.h (_Pointer_adapter): Define operators for ++ pointer arithmetic using long long offsets. ++ * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using ++ long long values. ++ ++2018-10-12 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-08-23 Jonathan Wakely ++ ++ * testsuite/21_strings/basic_string/init-list.cc: ++ Require cxx11-abi. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc: ++ Likewise. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc: ++ Likewise. ++ ++ Backport from mainline ++ 2018-08-22 Jonathan Wakely ++ ++ PR libstdc++/87061 ++ * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI] ++ (experimental::pmr::match_results, experimental::pmr::cmatch) ++ (experimental::pmr::smatch, experimental::pmr::wcmatch) ++ (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI, ++ because COW strings don't support C++11 allocator model. ++ * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI] ++ (experimental::pmr::basic_string, experimental::pmr::string) ++ (experimental::pmr::u16string, experimental::pmr::u32string) ++ (experimental::pmr::wstring): Likewise. ++ ++ Backport from mainline ++ 2018-08-15 Jonathan Wakely ++ ++ * include/experimental/regex: Remove begin/end macros for namespace. ++ * include/experimental/string: Likewise. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc: ++ New test. ++ * testsuite/experimental/polymorphic_allocator/ ++ pmr_typedefs_forward_list.cc: New test. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc: ++ New test. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc: ++ New test. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc: ++ New test. ++ * testsuite/experimental/polymorphic_allocator/ ++ pmr_typedefs_multimap.cc: New test. ++ * testsuite/experimental/polymorphic_allocator/ ++ pmr_typedefs_multiset.cc: New test. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc: ++ New test. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc: ++ New test. ++ * testsuite/experimental/polymorphic_allocator/ ++ pmr_typedefs_unordered_map.cc: New test. ++ * testsuite/experimental/polymorphic_allocator/ ++ pmr_typedefs_unordered_multimap.cc: New test. ++ * testsuite/experimental/polymorphic_allocator/ ++ pmr_typedefs_unordered_multiset.cc: New test. ++ * testsuite/experimental/polymorphic_allocator/ ++ pmr_typedefs_unordered_set.cc: New test. ++ * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc: ++ New test. ++ ++2018-10-12 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-07-24 Jonathan Wakely ++ ++ PR libstdc++/70966 ++ * include/experimental/memory_resource (__get_default_resource): Use ++ placement new to create an object with dynamic storage duration. ++ ++ Backport from mainline ++ 2018-06-20 Jonathan Wakely ++ ++ PR libstdc++/70966 ++ * include/experimental/memory_resource (__resource_adaptor_imp): Add ++ static assertions to enforce requirements on pointer types. ++ (__resource_adaptor_imp::get_allocator()): Add noexcept. ++ (new_delete_resource, null_memory_resource): Return address of an ++ object with dynamic storage duration. ++ (__null_memory_resource): Remove. ++ * testsuite/experimental/memory_resource/70966.cc: New. ++ ++2018-10-12 Jonathan Wakely ++ ++ PR libstdc++/77854 ++ * doc/xml/manual/status_cxx1998.xml: Document size_type and ++ difference_type for containers. ++ * doc/html/*: Regenerate. ++ ++2018-10-08 Joseph Myers ++ ++ Backport from mainline ++ 2018-10-02 Joseph Myers ++ ++ * testsuite/lib/libstdc++.exp (libstdc++_init): Use ++ -fno-show-column in default cxxflags. ++ ++2018-10-08 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-10-08 Jonathan Wakely ++ ++ PR libstdc++/87538 ++ * include/std/functional (_Not_fn::operator()): Check value of ++ __is_nothrow_invocable as well. ++ * testsuite/20_util/function_objects/not_fn/87538.cc: New test. ++ * testsuite/experimental/functional/87538.cc: New test. ++ ++2018-08-13 Jonathan Wakely ++ ++ Revert ++ 2018-08-10 Sebastian Huber ++ ++ PR target/85904 ++ * configure.ac: Define HAVE_ALIGNED_ALLOC if building for ++ Newlib. ++ * configure: Regenerate. ++ ++2018-08-10 Sebastian Huber ++ ++ Backport from mainline ++ 2018-08-10 Sebastian Huber ++ ++ PR target/85904 ++ * configure.ac: Define HAVE_ALIGNED_ALLOC if building for ++ Newlib. ++ * configure: Regenerate. ++ ++2018-08-08 Jonathan Wakely ++ ++ * libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to ++ avoid clashing with an ::aligned_alloc function that was not detected ++ by configure. ++ ++ * doc/xml/manual/using.xml: Remove empty table cell. ++ * doc/html/*: Regenerate. ++ ++ * doc/xml/manual/using.xml: Add missing header to table and fix typo. ++ Remove C++17 and C++2a headers not present on gcc-7-branch. ++ * doc/html/*: Regenerate. ++ ++2018-08-07 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-06-27 Jonathan Wakely ++ ++ PR libstdc++/86138 ++ * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0] ++ Declare explicit instantiations of COW empty reps and I/O functions. ++ ++ Backport from mainline ++ 2018-05-08 Jonathan Wakely ++ ++ PR libstdc++/85672 ++ * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry ++ to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero. ++ * include/Makefile.in: Regenerate. ++ * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition ++ within conditional block. ++ ++ Backport from mainline ++ 2018-05-01 Tulio Magno Quites Machado Filho ++ ++ PR libstdc++/84654 ++ * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128. ++ * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128. ++ * configure: Regenerate. ++ * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128 ++ based on ENABLE_FLOAT128. ++ * include/Makefile.in: Regenerate. ++ * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128. ++ [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine ++ _GLIBCXX_USE_FLOAT128. ++ ++ Backport from mainline ++ 2017-06-17 Jonathan Wakely ++ ++ PR libstdc++/80893 ++ * testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }. ++ ++ Backport from mainline ++ 2017-05-31 Jonathan Wakely ++ ++ PR libstdc++/80893 ++ * include/bits/stl_bvector.h (vector::_M_initialize): Avoid ++ null pointer dereference when size is zero. ++ * testsuite/23_containers/vector/bool/80893.cc: New. ++ * testsuite/util/testsuite_allocator.h (PointerBase::PointerBase): ++ Add non-explicit constructor from nullptr. ++ (PointerBase::derived() const): Add const-qualified overload. ++ ++ Backport from mainline ++ 2017-12-14 Jonathan Wakely ++ ++ PR libstdc++/68519 ++ * include/std/condition_variable (condition_variable::wait_for): ++ Convert duration to native clock's duration before addition. ++ * testsuite/30_threads/condition_variable/members/68519.cc: New test. ++ ++ Backport from mainline ++ 2018-06-25 Jonathan Wakely ++ ++ PR libstdc++/86292 ++ * include/bits/stl_vector.h (vector::_M_range_initialize): ++ Add try-catch block. ++ * testsuite/23_containers/vector/cons/86292.cc: New. ++ ++ Backport from mainline ++ 2018-07-31 Jonathan Wakely ++ ++ * doc/xml/manual/test.xml: Improve documentation on writing tests for ++ newer standards. ++ * doc/xml/manual/using.xml: Document all headers for C++11 and later. ++ * doc/html/*: Regenerate. ++ ++ Backport from mainline ++ 2018-08-03 Jonathan Wakely ++ ++ * src/c++11/system_error.cc ++ (system_error_category::default_error_condition): Add workaround for ++ ENOTEMPTY and EEXIST having the same value on AIX. ++ * testsuite/19_diagnostics/error_category/system_category.cc: Add ++ extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY. ++ ++ Backport from mainline ++ 2018-08-01 Jonathan Wakely ++ ++ PR libstdc++/60555 ++ * src/c++11/system_error.cc ++ (system_error_category::default_error_condition): New override to ++ check for POSIX errno values. ++ * testsuite/19_diagnostics/error_category/generic_category.cc: New ++ * testsuite/19_diagnostics/error_category/system_category.cc: New ++ test. ++ ++ Backport from mainline ++ 2018-08-07 Jonathan Wakely ++ ++ PR libstdc++/86861 ++ * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc): ++ Replace macro with inline function. ++ [__sun]: Increase alignment to meet memalign precondition. ++ [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN] ++ (aligned_alloc): Move check for valid alignment to operator new. ++ Remove redundant check for non-zero size, it's enforced by the caller. ++ (operator new): Move check for valid alignment here. Use ++ __builtin_expect on check for zero size. ++ ++ Backport from mainline ++ 2018-07-30 Jonathan Wakely ++ ++ * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add ++ workaround for aligned_alloc bug on AIX. ++ * testsuite/18_support/new_aligned.cc: New test. ++ ++ Backport from mainline ++ 2018-07-30 Jonathan Wakely ++ ++ PR libstdc++/86734 ++ * include/bits/stl_iterator.h (reverse_iterator::operator->): Use ++ addressof (LWG 2188). ++ * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test. ++ ++ Backport from mainline ++ 2018-05-19 Jonathan Wakely ++ ++ * src/c++11/codecvt.cc (__codecvt_utf8_base::do_in) ++ [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set ++ little_endian element in bitmask. ++ * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests. ++ * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New. ++ ++2018-07-05 François Dumont ++ ++ Backport from mainline ++ 2018-07-04 François Dumont ++ ++ PR libstdc++/86272 ++ * include/debug/string ++ (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)): ++ Use __glibcxx_check_insert_range. ++ ++2018-07-04 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-03-09 Jonathan Wakely ++ ++ src/filesystem/ops.cc (create_dir): Pass error_code to is_directory. ++ ++ Backport from mainline ++ 2018-06-18 Jonathan Wakely ++ ++ LWG 3050 Fix cv-qualification of convertibility constraints ++ * include/std/chrono (duration, operator*, operator/, operator%): Use ++ const-qualified type as source type in is_convertible constraints. ++ * testsuite/20_util/duration/arithmetic/dr3050.cc: New. ++ * testsuite/20_util/duration/cons/dr3050.cc: New. ++ * testsuite/20_util/duration/literals/range.cc: Rename to... ++ * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust ++ dg-error lineno. ++ ++ Backport from mainline ++ 2018-06-13 Jonathan Wakely ++ ++ PR libstdc++/86127 ++ * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove ++ unused typedef. ++ (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after): ++ Use node allocator to create and destroy elements. ++ (forward_list::_Tp_alloc_type): Remove unused typedef. ++ (forward_list::_Alloc_traits): Use allocator_traits instead of ++ __gnu_cxx::__alloc_traits. ++ * include/bits/forward_list.tcc (_Fwd_list_base::_M_erase_after): ++ Use node allocator to create and destroy elements. ++ ++ Backport from mainline ++ 2018-05-29 Jonathan Wakely ++ ++ * include/std/variant (__erased_dtor): Qualify call to __get. ++ ++ Backport from mainline ++ 2018-05-15 Jonathan Wakely ++ ++ * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify ++ __invoke to prevent ADL. ++ ++ Backport from mainline ++ 2018-04-05 Jonathan Wakely ++ ++ * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify ++ __get calls to avoid ADL and avoid ambiguity due to Clang bug. ++ ++ Backport from mainline ++ 2018-03-26 Jonathan Wakely ++ ++ * include/std/variant (__get): Qualify calls to avoid ADL. ++ (__select_index): Adjust whitespace. ++ (variant): Add using-declaration to workaround Clang bug. ++ ++ Backport from mainline ++ 2018-05-24 Maya Rashish ++ ++ PR target/85904 ++ * crossconfig.m4: Test for aligned_alloc on netbsd. ++ * configure: Regenerate. ++ ++ Backport from mainline ++ 2018-05-18 Jonathan Wakely ++ ++ PR libstdc++/85098 ++ * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase) ++ (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate) ++ (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended) ++ (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add ++ definitions. ++ * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust ++ whitespace. ++ * testsuite/28_regex/basic_regex/85098.cc: New ++ ++ Backport from mainline ++ 2018-05-07 Jonathan Wakely ++ ++ PR libstdc++/85671 ++ * include/experimental/bits/fs_path.h (operator/): Likewise. ++ ++ Backport from mainline ++ 2018-06-14 Daniel Trebbien ++ Jonathan Wakely ++ ++ PR libstdc++/83982 ++ * include/bits/vector.tcc (vector::_M_default_append(size_type)): ++ Default-construct new elements before moving existing ones. ++ * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc: ++ New. ++ ++ Backport from mainline ++ 2018-05-03 Jonathan Wakely ++ ++ PR libstdc++/84087 LWG DR 2268 basic_string default arguments ++ * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1] ++ (append(const basic_string&, size_type, size_type) ++ (assign(const basic_string&, size_type, size_type) ++ (insert(size_type, const basic_string&, size_type, size_type) ++ (replace(size_type,size_type,const basic_string&,size_type,size_type) ++ (compare(size_type,size_type,constbasic_string&,size_type,size_type)): ++ Add default arguments (LWG 2268). ++ [_GLIBCXX_USE_CXX11_ABI=0] ++ (append(const basic_string&, size_type, size_type) ++ (assign(const basic_string&, size_type, size_type) ++ (insert(size_type, const basic_string&, size_type, size_type) ++ (replace(size_type,size_type,const basic_string&,size_type,size_type) ++ (compare(size_type,size_type,constbasic_string&,size_type,size_type)): ++ Likewise. ++ * testsuite/21_strings/basic_string/dr2268.cc: New test. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ ++2018-06-22 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-06-22 Jonathan Wakely ++ ++ PR libstdc++/86138 ++ * include/bits/basic_string.tcc: ++ [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI] ++ (basic_string::_Rep::_S_empty_rep_storage) ++ (basic_string::_Rep::_S_empty_rep_storage): Add explicit ++ instantiation declarations. ++ [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable ++ explicit instantiation declarations. ++ * testsuite/21_strings/basic_string/cons/char/86138.cc: New. ++ * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New. ++ ++2018-06-21 Jonathan Wakely ++ ++ * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. ++ ++2018-06-19 Jonathan Wakely ++ ++ * include/std/utility: Remove unused header. ++ ++2018-06-15 Jonathan Wakely ++ ++ PR libstdc++/86169 ++ * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] ++ (basic_string::data()): Unshare string. ++ * testsuite/21_strings/basic_string/operations/data/char/86169.cc: ++ New. ++ ++2018-06-15 Jonathan Wakely ++ ++ * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only ++ define for C++17 and above. ++ ++2018-05-17 Jonathan Wakely ++ ++ PR libstdc++/85812 ++ * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare. ++ * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]: ++ Refactor to separate non-throwing and throwing implementations. ++ [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory ++ if constructing the object throws. ++ ++2018-05-14 Jonathan Wakely ++ ++ PR libstdc++/67554 ++ * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>) ++ (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy. ++ ++ PR libstdc++/82966 ++ * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value ++ instead of type. ++ * testsuite/23_containers/set/modifiers/node_swap.cc: New. ++ ++2018-05-10 Jonathan Wakely ++ ++ * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer. ++ * doc/xml/manual/debug_mode.xml: Add array and forward_list to list ++ of C++11 containers with Debug Mode support. ++ * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure. ++ * doc/html/*: Regenerate. ++ ++2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net> ++ Jonathan Wakely ++ ++ Backport from mainline ++ 2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net> ++ ++ PR libstdc++/80506 ++ * include/bits/random.tcc (gamma_distribution::operator()): Fix magic ++ number used in loop condition. ++ (gamma_distribution::__generate_impl()): Ditto. ++ ++2018-05-03 Jonathan Wakely ++ ++ PR libstdc++/84769 ++ * include/std/variant (visit): Qualify std::get call. ++ ++ PR libstdc++/85632 use uintmax_t for arithmetic ++ * src/filesystem/ops.cc (experimental::filesystem::space): Perform ++ arithmetic in result type. ++ * testsuite/experimental/filesystem/operations/space.cc: New. ++ ++2018-04-30 Edward Smith-Rowland <3dw4rd@verizon.net> ++ ++ PR libstdc++/pr66689 - comp_ellint_3 and ellint_3 return garbage values ++ * include/tr1/ell_integral.tcc: Correct the nu sign convention ++ in ellint_3 and comp_ellint_3. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 06_comp_ellint_3/check_value.cc: Regen with correct values. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 14_ellint_3/check_value.cc: Ditto. ++ * testsuite/special_functions/06_comp_ellint_3/check_value.cc: Ditto. ++ * testsuite/special_functions/13_ellint_3/check_value.cc: Ditto. ++ * testsuite/special_functions/06_comp_ellint_3/pr66689.cc: New. ++ * testsuite/special_functions/13_ellint_3/pr66689.cc: New. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 06_comp_ellint_3/pr66689.cc: New. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 14_ellint_3/pr66689.cc: New. ++ ++2018-04-30 Edward Smith-Rowland <3dw4rd@verizon.net> ++ ++ PR libstdc++/68397 std::tr1::expint fails ... long double arguments. ++ * include/tr1/exp_integral.tcc: Increase iteration limits. ++ * testsuite/tr1/5_numerical_facilities/special_functions/15_expint/ ++ pr68397.cc: New test. ++ * testsuite/special_functions/14_expint/pr68397.cc: New test. ++ ++2018-04-18 Jonathan Wakely ++ Jakub Jelinek ++ ++ PR libstdc++/85442 ++ * src/c++11/Makefile.am: Don't generate debuginfo again for ++ cxx11-ios_failure-lt.s and cxx11-ios_failure.s files. ++ * src/c++11/Makefile.in: Regenerate. ++ ++2018-04-13 Jonathan Wakely ++ ++ * src/c++11/Makefile.am: Fix sed command. ++ * src/c++11/Makefile.in: Regenerate. ++ ++ * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to ++ handle mangled names starting with double underscores on darwin. ++ * src/c++11/Makefile.in: Regenerate. ++ ++2018-04-12 Jonathan Wakely ++ ++ * src/c++11/Makefile.am: Fix comment. ++ * src/c++11/Makefile.in: Regenerate. ++ * src/c++11/cxx11-ios_failure.cc: Fix comment. ++ * src/c++98/ios_failure.cc: Likewise. ++ ++ Backport from mainline ++ 2018-04-10 Jonathan Wakely ++ ++ PR libstdc++/85222 ++ * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for ++ cxx11-ios_failure.cc to rewrite type info for __ios_failure. ++ * src/c++11/Makefile.in: Regenerate. ++ * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info): ++ New types. ++ [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here. ++ * src/c++11/ios.cc (__throw_ios_failure): Remove definition. ++ (_GLIBCXX_USE_CXX11_ABI): Don't define here. ++ * src/c++98/ios_failure.cc (__construct_ios_failure) ++ (__destroy_ios_failure, is_ios_failure_handler): New functions. ++ [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here. ++ * testsuite/27_io/ios_base/failure/dual_abi.cc: New. ++ * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to ++ handler types, to always catch std::ios_base::failure. ++ * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise. ++ * testsuite/27_io/basic_istream/extractors_arithmetic/char/ ++ exceptions_failbit.cc: Likewise. ++ * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/ ++ exceptions_failbit.cc: Likewise. ++ * testsuite/27_io/basic_istream/extractors_other/char/ ++ exceptions_null.cc: Likewise. ++ * testsuite/27_io/basic_istream/extractors_other/wchar_t/ ++ exceptions_null.cc: Likewise. ++ * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise. ++ * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise. ++ * testsuite/27_io/basic_ostream/inserters_other/char/ ++ exceptions_null.cc: Likewise. ++ * testsuite/27_io/basic_ostream/inserters_other/wchar_t/ ++ exceptions_null.cc: Likewise. ++ * testsuite/27_io/ios_base/storage/2.cc: Likewise. ++ ++2018-03-22 Rainer Orth ++ ++ PR libstdc++/77691 ++ * testsuite/experimental/memory_resource/resource_adaptor.cc: ++ xfail execution on 32-bit Solaris/x86. ++ ++2018-03-13 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-03-09 Jonathan Wakely ++ ++ PR libstdc++/84769 ++ * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>): ++ Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>. ++ ++2018-03-12 Jonathan Wakely ++ ++ PR libstdc++/84773 ++ PR libstdc++/83662 ++ * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32. ++ * configure: Regenerate. ++ * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC] ++ (aligned_alloc): Add using-declaration. ++ * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test. ++ ++2018-03-02 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-03-02 Jonathan Wakely ++ ++ PR libstdc++/84671 ++ * include/bits/parse_numbers.h (_Number_help): Add partial ++ specialization to handle digit separators. Adjust partial ++ specialization for recursion temrination to require _Pow == 1ULL. ++ * testsuite/20_util/duration/literals/84671.cc: New ++ ++2018-02-26 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-02-23 Jonathan Wakely ++ ++ PR libstdc++/84532 ++ * include/std/thread (thread::__make_invoker): Construct tuple ++ directly instead of using make_tuple. ++ * testsuite/30_threads/async/84532.cc: New. ++ * testsuite/30_threads/thread/84532.cc: New. ++ ++2018-02-19 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-02-15 Jonathan Wakely ++ ++ PR libstdc++/81797 ++ * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define. ++ * configure: Regenerate. ++ * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when ++ defined. ++ * include/Makefile.in: Regenerate. ++ ++2018-01-29 Jonathan Wakely ++ ++ PR libstdc++/83833 ++ * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: ++ Add -ffloat-store to options for m68k and ia32. ++ ++ PR libstdc++/83658 ++ * include/std/any (any::__do_emplace): Only set _M_manager after ++ constructing the contained object. ++ * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line. ++ * testsuite/20_util/any/modifiers/83658.cc: New test. ++ ++ Backport from mainline ++ 2018-01-15 Jonathan Wakely ++ ++ PR libstdc++/83833 ++ * include/bits/random.h (chi_squared_distribution::param): Update ++ gamma distribution parameter. ++ * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New ++ test. ++ ++2018-01-25 Jonathan Wakely ++ ++ PR libstdc++/81076 ++ * include/c_global/cstddef (__byte_operand): Define primary template. ++ * testsuite/18_support/byte/81076.cc: New test. ++ ++ Backport from mainline ++ 2018-01-15 Jonathan Wakely ++ ++ PR libstdc++/83830 ++ * include/std/type_traits (has_unique_object_representations_v): Add ++ variable template. ++ * testsuite/20_util/has_unique_object_representations/value.cc: Check ++ variable template. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,47 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++// PR libstdc++/86734 ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // LWG DR 2188 ++ // Reverse iterator does not fully support targets that overload operator& ++ struct X { ++ int val; ++ int* operator&() { return &val; } ++ const int* operator&() const { return &val; } ++ }; ++ ++ X x[2] = { {1}, {2} }; ++ std::reverse_iterator rev(x+2); ++ VERIFY( rev->val == 2 ); ++ ++rev; ++ VERIFY( rev->val == 1 ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,45 @@ ++// Copyright (C) 2018 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 "-O0" } ++// { dg-do link { target c++11 } } ++ ++#include ++ ++void f(const std::regex_constants::syntax_option_type&) { } ++ ++void ++test01() ++{ ++ f(std::regex::icase); ++ f(std::regex::nosubs); ++ f(std::regex::optimize); ++ f(std::regex::collate); ++ f(std::regex::ECMAScript); ++ f(std::regex::basic); ++ f(std::regex::extended); ++ f(std::regex::awk); ++ f(std::regex::grep); ++ f(std::regex::egrep); ++ // f(std::regex::multiline); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/18_support/new_aligned.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/new_aligned.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/new_aligned.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,119 @@ ++// Copyright (C) 2018 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 run { target c++1z } } ++ ++#include ++#include ++#include ++ ++struct Test ++{ ++ Test(std::size_t size, std::size_t a) ++ : size(size), alignment(std::align_val_t{a}), ++ p(::operator new(size, alignment)) ++ { } ++ ++ ~Test() { ::operator delete(p, size, alignment); } ++ ++ std::size_t size; ++ std::align_val_t alignment; ++ void* p; ++ ++ bool valid() const { return p != nullptr; } ++ ++ bool aligned() const ++ { ++ auto ptr = p; ++ auto space = size; ++ return std::align((std::size_t)alignment, size, ptr, space) == p; ++ } ++}; ++ ++// operator new(size_t size, align_val_t alignment) has ++// undefined behaviour if the alignment argument is not ++// a valid alignment value (i.e. not a power of two). ++// ++// Unlike posix_memalign there is no requirement that ++// alignment >= sizeof(void*). ++// ++// Unlike aligned_alloc there is no requirement that ++// size is an integer multiple of alignment. ++ ++void ++test01() ++{ ++ // Test small values that would not be valid for ++ // posix_memalign or aligned_alloc. ++ ++ Test t11{1, 1}; ++ VERIFY( t11.valid() ); ++ VERIFY( t11.aligned() ); ++ ++ Test t21{2, 1}; ++ VERIFY( t21.valid() ); ++ VERIFY( t21.aligned() ); ++ ++ Test t12{1, 2}; ++ VERIFY( t12.valid() ); ++ VERIFY( t12.aligned() ); ++ ++ Test t22{2, 2}; ++ VERIFY( t22.valid() ); ++ VERIFY( t22.aligned() ); ++ ++ Test t32{3, 2}; ++ VERIFY( t32.valid() ); ++ VERIFY( t32.aligned() ); ++ ++ Test t42{4, 2}; ++ VERIFY( t42.valid() ); ++ VERIFY( t42.aligned() ); ++ ++ Test t24{2, 4}; ++ VERIFY( t24.valid() ); ++ VERIFY( t24.aligned() ); ++ ++ Test t34{3, 4}; ++ VERIFY( t34.valid() ); ++ VERIFY( t34.aligned() ); ++ ++ Test t44{4, 4}; ++ VERIFY( t44.valid() ); ++ VERIFY( t44.aligned() ); ++ ++ // Test some larger values. ++ ++ Test t128_16{128, 16}; ++ VERIFY( t128_16.valid() ); ++ VERIFY( t128_16.aligned() ); ++ ++ Test t128_64{128, 64}; ++ VERIFY( t128_64.valid() ); ++ VERIFY( t128_64.aligned() ); ++ ++ Test t64_128{64, 128}; ++ VERIFY( t64_128.valid() ); ++ VERIFY( t64_128.aligned() ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/18_support/byte/81076.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/byte/81076.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/byte/81076.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// Copyright (C) 2018 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++1z } } ++ ++#include ++ ++template void to_integer(...); ++ ++using T = decltype(to_integer(std::byte{})); ++using T = void; +Index: libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,42 @@ ++// Copyright (C) 2018 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 run { target c++1z } } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++#ifdef _GLIBCXX_HAVE_ALIGNED_ALLOC ++ void* p = std::aligned_alloc(256, 1); ++ if (p) ++ { ++ VERIFY( (reinterpret_cast(p) % 256) == 0 ); ++ std::free(p); ++ } ++#endif ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,51 @@ ++// Copyright (C) 2017 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run } ++// { dg-options "-pthread" } ++// { dg-require-effective-target c++11 } ++// { dg-require-effective-target pthread } ++// { dg-require-cstdint "" } ++// { dg-require-gthreads "" } ++ ++#include ++#include ++ ++// PR libstdc++/68519 ++ ++bool val = false; ++std::mutex mx; ++std::condition_variable cv; ++ ++void ++test01() ++{ ++ for (int i = 0; i < 3; ++i) ++ { ++ std::unique_lock l(mx); ++ auto start = std::chrono::system_clock::now(); ++ cv.wait_for(l, std::chrono::duration(1), [] { return val; }); ++ auto t = std::chrono::system_clock::now(); ++ VERIFY( (t - start) >= std::chrono::seconds(1) ); ++ } ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/30_threads/thread/84532.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/thread/84532.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/thread/84532.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,38 @@ ++// { dg-do compile { target c++11 } } ++// { dg-require-cstdint "" } ++// { dg-require-gthreads "" } ++ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++ ++// PR libstdc++/84532 ++ ++struct F ++{ ++ template ++ void operator()(T, U, int&) ++ { ++ using std::is_same; ++ using std::reference_wrapper; ++ static_assert(is_same>::value, ""); ++ static_assert(is_same>::value, ""); ++ } ++}; ++int i = 0; ++std::thread t(F{}, std::ref(i), std::cref(i), std::ref(i)); +Index: libstdc++-v3/testsuite/30_threads/async/84532.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/async/84532.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/async/84532.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,38 @@ ++// { dg-do compile { target c++11 } } ++// { dg-require-cstdint "" } ++// { dg-require-gthreads "" } ++ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++ ++// PR libstdc++/84532 ++ ++struct F ++{ ++ template ++ void operator()(T, U, int&) ++ { ++ using std::is_same; ++ using std::reference_wrapper; ++ static_assert(is_same>::value, ""); ++ static_assert(is_same>::value, ""); ++ } ++}; ++int i = 0; ++auto fut = std::async(F{}, std::ref(i), std::cref(i), std::ref(i)); +Index: libstdc++-v3/testsuite/ext/ext_pointer/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/ext/ext_pointer/1.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/ext/ext_pointer/1.cc (.../branches/gcc-7-branch) +@@ -180,6 +180,19 @@ + VERIFY(bPtr3 == aPtr); + } + ++// Check that long long values can be used for pointer arithmetic. ++void test05() ++{ ++ A a[2] = { 1, 2 }; ++ A_pointer p = a; ++ A_pointer q = p + 0ull; ++ VERIFY( p == q ); ++ q += 0ll; ++ VERIFY( p == q ); ++ q += 1ll; ++ VERIFY( q->i == p[1ll].i ); ++} ++ + int main() + { + test01(); +@@ -186,5 +199,6 @@ + test02(); + test03(); + test04(); ++ test05(); + return 0; + } +Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,52 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++ const char out[] = u8"\u00A33.50"; ++ wchar_t in[8] = {}; ++ std::codecvt_utf8 cvt; ++ std::mbstate_t st; ++ const char* no; ++ wchar_t* ni; ++ auto res = cvt.in(st, out, out+6, no, in, in+8, ni); ++ VERIFY( res == std::codecvt_base::ok ); ++ VERIFY( in[1] == L'3' ); ++ VERIFY( in[2] == L'.' ); ++ VERIFY( in[3] == L'5' ); ++ VERIFY( in[4] == L'0' ); ++ ++ char out2[8] = {}; ++ char* no2; ++ const wchar_t* ni2; ++ res = cvt.out(st, in, ni, ni2, out2, out2+8, no2); ++ VERIFY( res == std::codecvt_base::ok ); ++ VERIFY( out2 == std::string(out) ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc (.../branches/gcc-7-branch) +@@ -68,7 +68,6 @@ + VERIFY( in[2] == U'c' ); + } + +- + void + test04() + { +@@ -90,6 +89,6 @@ + { + test01(); + test02(); +- test01(); +- test02(); ++ test03(); ++ test04(); + } +Index: libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc (.../branches/gcc-7-branch) +@@ -1,4 +1,4 @@ +-// { dg-require-namedlocale "it_IT.ISO8859-15" } ++// { dg-require-namedlocale "nl_NL.ISO8859-15" } + + // 2001-01-24 Benjamin Kosnik + +@@ -28,12 +28,14 @@ + { + using namespace std; + +- locale loc_it = locale(ISO_8859(15,it_IT)); ++ // nl_NL chosen because it has no thousands separator (at this time). ++ locale loc_it = locale(ISO_8859(15,nl_NL)); + + const numpunct& nump_it = use_facet >(loc_it); + + string g = nump_it.grouping(); + ++ // Ensure that grouping is empty for locales with empty thousands separator. + VERIFY( g == "" ); + } + +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++ ++#include ++#include ++ ++void ++test01() ++{ ++ double Pi1 = std::tr1::comp_ellint_3(0.75, 0.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::tr1::comp_ellint_3(0.75, 0.5); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ +-// 2007-02-04 Edward Smith-Rowland <3dw4rd@verizon.net> ++// { dg-do run { target c++11 } } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2007-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 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 +@@ -18,826 +19,490 @@ + // . + + // comp_ellint_3 +- +- + // Compare against values generated by the GNU Scientific Library. + // The GSL can be found on the web: http://www.gnu.org/software/gsl/ +- ++#include + #include + #if defined(__TEST_DEBUG) +-#include +-#define VERIFY(A) \ +-if (!(A)) \ +- { \ +- std::cout << "line " << __LINE__ \ +- << " max_abs_frac = " << max_abs_frac \ +- << std::endl; \ +- } ++# include ++# define VERIFY(A) \ ++ if (!(A)) \ ++ { \ ++ std::cout << "line " << __LINE__ \ ++ << " max_abs_frac = " << max_abs_frac \ ++ << std::endl; \ ++ } + #else +-#include ++# include + #endif +-#include "../testcase.h" ++#include + +- + // Test data for k=-0.90000000000000002. +-testcase_comp_ellint_3 data001[] = { ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.2838262090802751e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 ++const testcase_comp_ellint_3 ++data001[10] = ++{ + { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998 }, +- { 1.6600480747670938, -0.90000000000000002, 0.69999999999999996 }, +- { 1.6044591960982204, -0.90000000000000002, 0.80000000000000004 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002 }, ++ { 2.4295011187834885, -0.90000000000000002, 0.10000000000000001 }, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001 }, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004 }, ++ { 3.1000689868578619, -0.90000000000000002, 0.40000000000000002 }, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000 }, ++ { 3.9549939883570229, -0.90000000000000002, 0.60000000000000009 }, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007 }, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004 }, ++ { 8.9942562031858699, -0.90000000000000002, 0.90000000000000002 }, + }; ++const double toler001 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002. +-template +-void test001() ++// Test data for k=-0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 ++const testcase_comp_ellint_3 ++data002[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data001) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data001[i].k), Tp(data001[i].nu)); +- const Tp f0 = data001[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004. +-testcase_comp_ellint_3 data002[] = { +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309474, -0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, -0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, -0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, -0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, -0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, -0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, -0.80000000000000004, 0.90000000000000002 }, + }; ++const double toler002 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004. +-template +-void test002() ++// Test data for k=-0.69999999999999996. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.9832236886714888e-16 ++// mean(f - f_Boost): -1.5543122344752191e-16 ++// variance(f - f_Boost): 2.9825759533819119e-33 ++// stddev(f - f_Boost): 5.4612965066748680e-17 ++const testcase_comp_ellint_3 ++data003[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data002) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data002[i].k), Tp(data002[i].nu)); +- const Tp f0 = data002[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996. +-testcase_comp_ellint_3 data003[] = { +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092147, -0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397533, -0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695911, -0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000 }, ++ { 1.9541347343119564, -0.69999999999999996, 0.10000000000000001 }, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001 }, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004 }, ++ { 2.4342502915307880, -0.69999999999999996, 0.40000000000000002 }, ++ { 2.6868019968236996, -0.69999999999999996, 0.50000000000000000 }, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009 }, ++ { 3.5408408771788564, -0.69999999999999996, 0.70000000000000007 }, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004 }, ++ { 6.3796094177887754, -0.69999999999999996, 0.90000000000000002 }, + }; ++const double toler003 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996. +-template +-void test003() ++// Test data for k=-0.59999999999999998. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -1.9984014443252818e-16 ++// variance(f - f_Boost): 4.9303806576313241e-33 ++// stddev(f - f_Boost): 7.0216669371534022e-17 ++const testcase_comp_ellint_3 ++data004[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data003) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data003[i].k), Tp(data003[i].nu)); +- const Tp f0 = data003[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998. +-testcase_comp_ellint_3 data004[] = { + { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998 }, +- { 1.3232737468822811, -0.59999999999999998, 0.69999999999999996 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002 }, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001 }, ++ { 1.9695980282802217, -0.59999999999999998, 0.20000000000000001 }, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004 }, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002 }, ++ { 2.5239007084492711, -0.59999999999999998, 0.50000000000000000 }, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009 }, ++ { 3.3029735898397159, -0.59999999999999998, 0.70000000000000007 }, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004 }, ++ { 5.8709993116265604, -0.59999999999999998, 0.90000000000000002 }, + }; ++const double toler004 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998. +-template +-void test004() ++// Test data for k=-0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 ++const testcase_comp_ellint_3 ++data005[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data004) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data004[i].k), Tp(data004[i].nu)); +- const Tp f0 = data004[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000. +-testcase_comp_ellint_3 data005[] = { +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, -0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, -0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, -0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, -0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, -0.50000000000000000, 0.90000000000000002 }, + }; ++const double toler005 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000. +-template +-void test005() ++// Test data for k=-0.39999999999999991. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718164615986397e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 1.6458949750907531e-31 ++// stddev(f - f_Boost): 4.0569631192441877e-16 ++const testcase_comp_ellint_3 ++data006[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data005) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data005[i].k), Tp(data005[i].nu)); +- const Tp f0 = data005[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002. +-testcase_comp_ellint_3 data006[] = { +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002 }, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000 }, ++ { 1.7306968836847190, -0.39999999999999991, 0.10000000000000001 }, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001 }, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004 }, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002 }, ++ { 2.3367461373176512, -0.39999999999999991, 0.50000000000000000 }, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009 }, ++ { 3.0327078743873246, -0.39999999999999991, 0.70000000000000007 }, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004 }, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002 }, + }; ++const double toler006 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002. +-template +-void test006() ++// Test data for k=-0.29999999999999993. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9274792319434433e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 8.7651211691223537e-33 ++// stddev(f - f_Boost): 9.3622225828712025e-17 ++const testcase_comp_ellint_3 ++data007[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data006) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data006[i].k), Tp(data006[i].nu)); +- const Tp f0 = data006[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004. +-testcase_comp_ellint_3 data007[] = { +- { 1.6080486199305126, -0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557526, -0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259875, -0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479089, -0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969761, -0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814960, -0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420666, -0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274980, -0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590046, -0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064912, -0.30000000000000004, 0.90000000000000002 }, ++ { 1.6080486199305128, -0.29999999999999993, 0.0000000000000000 }, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001 }, ++ { 1.8002173372290500, -0.29999999999999993, 0.20000000000000001 }, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004 }, ++ { 2.0822121773175533, -0.29999999999999993, 0.40000000000000002 }, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000 }, ++ { 2.5560975528589065, -0.29999999999999993, 0.60000000000000009 }, ++ { 2.9562123549913877, -0.29999999999999993, 0.70000000000000007 }, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004 }, ++ { 5.1479514944016795, -0.29999999999999993, 0.90000000000000002 }, + }; ++const double toler007 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004. +-template +-void test007() ++// Test data for k=-0.19999999999999996. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 ++const testcase_comp_ellint_3 ++data008[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data007) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data007[i].k), Tp(data007[i].nu)); +- const Tp f0 = data007[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996. +-testcase_comp_ellint_3 data008[] = { +- { 1.5868678474541664, -0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261092, -0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249568, -0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752481, -0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661010, -0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397376, -0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914561, -0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075867, -0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909913, -0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141863, -0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000 }, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001 }, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001 }, ++ { 1.8983924169967101, -0.19999999999999996, 0.30000000000000004 }, ++ { 2.0512956926676806, -0.19999999999999996, 0.40000000000000002 }, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000 }, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009 }, ++ { 2.9058704854500967, -0.19999999999999996, 0.70000000000000007 }, ++ { 3.5622166386422633, -0.19999999999999996, 0.80000000000000004 }, ++ { 5.0448269356200370, -0.19999999999999996, 0.90000000000000002 }, + }; ++const double toler008 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996. +-template +-void test008() ++// Test data for k=-0.099999999999999978. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): 0.0000000000000000 ++// variance(f - f_Boost): 6.8368087769470551e-64 ++// stddev(f - f_Boost): 2.6147291976315738e-32 ++const testcase_comp_ellint_3 ++data009[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data008) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data008[i].k), Tp(data008[i].nu)); +- const Tp f0 = data008[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978. +-testcase_comp_ellint_3 data009[] = { +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998 }, +- { 1.2073745911083187, -0.099999999999999978, 0.69999999999999996 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002 }, ++ { 1.5747455615173560, -0.099999999999999978, 0.0000000000000000 }, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001 }, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001 }, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004 }, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002 }, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000 }, ++ { 2.4913004919173827, -0.099999999999999978, 0.60000000000000009 }, ++ { 2.8771910188009744, -0.099999999999999978, 0.70000000000000007 }, ++ { 3.5246199613295617, -0.099999999999999978, 0.80000000000000004 }, ++ { 4.9862890417305508, -0.099999999999999978, 0.90000000000000002 }, + }; ++const double toler009 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978. +-template +-void test009() ++// Test data for k=0.0000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.1899085000907084e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 5.4782007307014711e-32 ++// stddev(f - f_Boost): 2.3405556457178008e-16 ++const testcase_comp_ellint_3 ++data010[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data009) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data009[i].k), Tp(data009[i].nu)); +- const Tp f0 = data009[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000. +-testcase_comp_ellint_3 data010[] = { + { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999 }, +- { 1.3275651989026322, 0.0000000000000000, 0.40000000000000002 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002 }, ++ { 1.6557647109660170, 0.0000000000000000, 0.10000000000000001 }, ++ { 1.7562036827601817, 0.0000000000000000, 0.20000000000000001 }, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004 }, ++ { 2.0278893379868062, 0.0000000000000000, 0.40000000000000002 }, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000 }, ++ { 2.4836470664490258, 0.0000000000000000, 0.60000000000000009 }, ++ { 2.8678686047727386, 0.0000000000000000, 0.70000000000000007 }, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004 }, ++ { 4.9672941328980516, 0.0000000000000000, 0.90000000000000002 }, + }; ++const double toler010 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000. +-template +-void test010() ++// Test data for k=0.10000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): -2.2204460492503132e-17 ++// variance(f - f_Boost): 6.0868897007794120e-35 ++// stddev(f - f_Boost): 7.8018521523926693e-18 ++const testcase_comp_ellint_3 ++data011[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data010) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data010[i].k), Tp(data010[i].nu)); +- const Tp f0 = data010[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009. +-testcase_comp_ellint_3 data011[] = { +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998 }, +- { 1.2073745911083187, 0.10000000000000009, 0.69999999999999996 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002 }, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000 }, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001 }, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001 }, ++ { 1.8826015946315440, 0.10000000000000009, 0.30000000000000004 }, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002 }, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000 }, ++ { 2.4913004919173827, 0.10000000000000009, 0.60000000000000009 }, ++ { 2.8771910188009744, 0.10000000000000009, 0.70000000000000007 }, ++ { 3.5246199613295617, 0.10000000000000009, 0.80000000000000004 }, ++ { 4.9862890417305508, 0.10000000000000009, 0.90000000000000002 }, + }; ++const double toler011 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009. +-template +-void test011() ++// Test data for k=0.20000000000000018. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 ++const testcase_comp_ellint_3 ++data012[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data011) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data011[i].k), Tp(data011[i].nu)); +- const Tp f0 = data011[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996. +-testcase_comp_ellint_3 data012[] = { +- { 1.5868678474541664, 0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261092, 0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249568, 0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752481, 0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661010, 0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397376, 0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914561, 0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075867, 0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909913, 0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141863, 0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000 }, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001 }, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001 }, ++ { 1.8983924169967101, 0.20000000000000018, 0.30000000000000004 }, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002 }, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000 }, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009 }, ++ { 2.9058704854500967, 0.20000000000000018, 0.70000000000000007 }, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004 }, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002 }, + }; ++const double toler012 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996. +-template +-void test012() ++// Test data for k=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.4585997630846713e-16 ++// mean(f - f_Boost): 5.1070259132757197e-16 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 ++const testcase_comp_ellint_3 ++data013[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data012) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data012[i].k), Tp(data012[i].nu)); +- const Tp f0 = data012[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004. +-testcase_comp_ellint_3 data013[] = { +- { 1.6080486199305126, 0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557526, 0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259875, 0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479089, 0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969761, 0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814960, 0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420666, 0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274980, 0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590046, 0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064912, 0.30000000000000004, 0.90000000000000002 }, ++ { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000 }, ++ { 1.6960848815118228, 0.30000000000000004, 0.10000000000000001 }, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001 }, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004 }, ++ { 2.0822121773175533, 0.30000000000000004, 0.40000000000000002 }, ++ { 2.2833505881933975, 0.30000000000000004, 0.50000000000000000 }, ++ { 2.5560975528589065, 0.30000000000000004, 0.60000000000000009 }, ++ { 2.9562123549913877, 0.30000000000000004, 0.70000000000000007 }, ++ { 3.6283050484567174, 0.30000000000000004, 0.80000000000000004 }, ++ { 5.1479514944016795, 0.30000000000000004, 0.90000000000000002 }, + }; ++const double toler013 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004. +-template +-void test013() ++// Test data for k=0.40000000000000013. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.7696531428672557e-16 ++// mean(f - f_Boost): 1.1990408665951691e-15 ++// variance(f - f_Boost): 2.6514491536595121e-31 ++// stddev(f - f_Boost): 5.1492224205791612e-16 ++const testcase_comp_ellint_3 ++data014[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data013) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data013[i].k), Tp(data013[i].nu)); +- const Tp f0 = data013[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991. +-testcase_comp_ellint_3 data014[] = { +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002 }, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000 }, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001 }, ++ { 1.8380358826317629, 0.40000000000000013, 0.20000000000000001 }, ++ { 1.9677924132520141, 0.40000000000000013, 0.30000000000000004 }, ++ { 2.1289968719280030, 0.40000000000000013, 0.40000000000000002 }, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000 }, ++ { 2.6186940209850196, 0.40000000000000013, 0.60000000000000009 }, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007 }, ++ { 3.7289548002199906, 0.40000000000000013, 0.80000000000000004 }, ++ { 5.3055535102872522, 0.40000000000000013, 0.90000000000000002 }, + }; ++const double toler014 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991. +-template +-void test014() ++// Test data for k=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 ++const testcase_comp_ellint_3 ++data015[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data014) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data014[i].k), Tp(data014[i].nu)); +- const Tp f0 = data014[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000. +-testcase_comp_ellint_3 data015[] = { +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, 0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, 0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, 0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, 0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, 0.50000000000000000, 0.90000000000000002 }, + }; ++const double toler015 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000. +-template +-void test015() ++// Test data for k=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 6.0868897007794117e-33 ++// stddev(f - f_Boost): 7.8018521523926690e-17 ++const testcase_comp_ellint_3 ++data016[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data015) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data015[i].k), Tp(data015[i].nu)); +- const Tp f0 = data015[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009. +-testcase_comp_ellint_3 data016[] = { + { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998 }, +- { 1.3232737468822811, 0.60000000000000009, 0.69999999999999996 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004 }, +- { 1.2479362973851875, 0.60000000000000009, 0.90000000000000002 }, ++ { 1.8508766487100687, 0.60000000000000009, 0.10000000000000001 }, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001 }, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004 }, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002 }, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000 }, ++ { 2.8388723099514976, 0.60000000000000009, 0.60000000000000009 }, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007 }, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004 }, ++ { 5.8709993116265613, 0.60000000000000009, 0.90000000000000002 }, + }; ++const double toler016 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009. +-template +-void test016() ++// Test data for k=0.70000000000000018. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9298727220933567e-16 ++// mean(f - f_Boost): 4.8849813083506892e-16 ++// variance(f - f_Boost): 2.0476296953421943e-31 ++// stddev(f - f_Boost): 4.5250742483877478e-16 ++const testcase_comp_ellint_3 ++data017[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data016) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data016[i].k), Tp(data016[i].nu)); +- const Tp f0 = data016[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996. +-testcase_comp_ellint_3 data017[] = { +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092147, 0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397533, 0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695911, 0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747238, 0.70000000000000018, 0.0000000000000000 }, ++ { 1.9541347343119566, 0.70000000000000018, 0.10000000000000001 }, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001 }, ++ { 2.2392290510988540, 0.70000000000000018, 0.30000000000000004 }, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002 }, ++ { 2.6868019968237000, 0.70000000000000018, 0.50000000000000000 }, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009 }, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007 }, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004 }, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002 }, + }; ++const double toler017 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996. +-template +-void test017() ++// Test data for k=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 ++const testcase_comp_ellint_3 ++data018[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data017) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data017[i].k), Tp(data017[i].nu)); +- const Tp f0 = data017[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004. +-testcase_comp_ellint_3 data018[] = { +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309474, 0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, 0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, 0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, 0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, 0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, 0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, 0.80000000000000004, 0.90000000000000002 }, + }; ++const double toler018 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004. +-template +-void test018() ++// Test data for k=0.90000000000000013. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.5716352001310461e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 ++const testcase_comp_ellint_3 ++data019[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data018) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data018[i].k), Tp(data018[i].nu)); +- const Tp f0 = data018[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991. +-testcase_comp_ellint_3 data019[] = { +- { 2.2805491384227699, 0.89999999999999991, 0.0000000000000000 }, +- { 2.1537868513875282, 0.89999999999999991, 0.10000000000000001 }, +- { 2.0443194576468890, 0.89999999999999991, 0.20000000000000001 }, +- { 1.9486280260314424, 0.89999999999999991, 0.29999999999999999 }, +- { 1.8641114227238347, 0.89999999999999991, 0.40000000000000002 }, +- { 1.7888013241937859, 0.89999999999999991, 0.50000000000000000 }, +- { 1.7211781128919521, 0.89999999999999991, 0.59999999999999998 }, +- { 1.6600480747670936, 0.89999999999999991, 0.69999999999999996 }, +- { 1.6044591960982200, 0.89999999999999991, 0.80000000000000004 }, +- { 1.5536420236310944, 0.89999999999999991, 0.90000000000000002 }, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000 }, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001 }, ++ { 2.6076835743348421, 0.90000000000000013, 0.20000000000000001 }, ++ { 2.8256506968858521, 0.90000000000000013, 0.30000000000000004 }, ++ { 3.1000689868578628, 0.90000000000000013, 0.40000000000000002 }, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000 }, ++ { 3.9549939883570242, 0.90000000000000013, 0.60000000000000009 }, ++ { 4.6985482312992453, 0.90000000000000013, 0.70000000000000007 }, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004 }, ++ { 8.9942562031858735, 0.90000000000000013, 0.90000000000000002 }, + }; ++const double toler019 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991. +-template +-void test019() +-{ +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data019) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data019[i].k), Tp(data019[i].nu)); +- const Tp f0 = data019[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} ++template ++ void ++ test(const testcase_comp_ellint_3 (&data)[Num], Ret toler) ++ { ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); ++ unsigned int num_datum = Num; ++ for (unsigned int i = 0; i < num_datum; ++i) ++ { ++ const Ret f = std::tr1::comp_ellint_3(data[i].k, data[i].nu); ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; ++ if (std::abs(diff) > max_abs_diff) ++ max_abs_diff = std::abs(diff); ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) ++ { ++ const Ret frac = diff / f0; ++ if (std::abs(frac) > max_abs_frac) ++ max_abs_frac = std::abs(frac); ++ } ++ } ++ VERIFY(max_abs_frac < toler); ++ } + +-int main(int, char**) ++int ++main() + { +- test001(); +- test002(); +- test003(); +- test004(); +- test005(); +- test006(); +- test007(); +- test008(); +- test009(); +- test010(); +- test011(); +- test012(); +- test013(); +- test014(); +- test015(); +- test016(); +- test017(); +- test018(); +- test019(); ++ test(data001, toler001); ++ test(data002, toler002); ++ test(data003, toler003); ++ test(data004, toler004); ++ test(data005, toler005); ++ test(data006, toler006); ++ test(data007, toler007); ++ test(data008, toler008); ++ test(data009, toler009); ++ test(data010, toler010); ++ test(data011, toler011); ++ test(data012, toler012); ++ test(data013, toler013); ++ test(data014, toler014); ++ test(data015, toler015); ++ test(data016, toler016); ++ test(data017, toler017); ++ test(data018, toler018); ++ test(data019, toler019); + return 0; + } +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,46 @@ ++// Copyright (C) 2017 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 ++// . ++ ++// PR libstdc++/68397 - std::tr1::expint fails in __expint_En_cont_frac ++// for some long double arguments due to low __max_iter value ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // Answers from Wolfram Alpha. ++ long double ans_ok = -0.10001943365331651406888645149537315243646135979573L; ++ long double ans_bomb = -0.10777727809650077516264612749163100483995270163783L; ++ ++ long double Ei_ok = std::tr1::expint(-1.500001L); ++ long double diff_ok = std::abs(Ei_ok - ans_ok); ++ VERIFY(diff_ok < 1.0e-15L); ++ ++ long double Ei_bomb = std::tr1::expint(-1.450001L); ++ long double diff_bomb = std::abs(Ei_bomb - ans_bomb); ++ VERIFY(diff_bomb < 1.0e-15L); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} ++ +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,22 @@ ++ ++#include ++#include ++ ++void ++test01() ++{ ++ const double pi = 3.141592654; ++ ++ double Pi1 = std::tr1::ellint_3(0.75, 0.0, pi / 2.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::tr1::ellint_3(0.75, 0.5, pi / 2.0); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ +-// 2007-02-04 Edward Smith-Rowland <3dw4rd@verizon.net> ++// { dg-do run { target c++11 } } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2007-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 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 +@@ -18,10098 +19,6324 @@ + // . + + // ellint_3 +- +- + // Compare against values generated by the GNU Scientific Library. + // The GSL can be found on the web: http://www.gnu.org/software/gsl/ +- ++#include + #include + #if defined(__TEST_DEBUG) +-#include +-#define VERIFY(A) \ +-if (!(A)) \ +- { \ +- std::cout << "line " << __LINE__ \ +- << " max_abs_frac = " << max_abs_frac \ +- << std::endl; \ +- } ++# include ++# define VERIFY(A) \ ++ if (!(A)) \ ++ { \ ++ std::cout << "line " << __LINE__ \ ++ << " max_abs_frac = " << max_abs_frac \ ++ << std::endl; \ ++ } + #else +-#include ++# include + #endif +-#include "../testcase.h" ++#include + +- + // Test data for k=-0.90000000000000002, nu=0.0000000000000000. +-testcase_ellint_3 data001[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.54388221416157134, -0.90000000000000002, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.74797400423532523, -0.90000000000000002, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.97463898451966458, -0.90000000000000002, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.2334463254523440, -0.90000000000000002, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.5355247765594910, -0.90000000000000002, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.8882928567775124, -0.90000000000000002, 0.0000000000000000, +- 1.3962634015954636 }, +- { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, +- 1.5707963267948966 }, ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.7842011620951154e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data001[10] = ++{ ++ { 0.0000000000000000, -0.90000000000000002, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.54388221416157123, -0.90000000000000002, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.74797400423532512, -0.90000000000000002, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.97463898451966446, -0.90000000000000002, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.2334463254523438, -0.90000000000000002, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.5355247765594913, -0.90000000000000002, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.8882928567775126, -0.90000000000000002, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler001 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.0000000000000000. +-template +-void test001() ++// Test data for k=-0.90000000000000002, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data002[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data001) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data001[i].k), Tp(data001[i].nu), +- Tp(data001[i].phi)); +- const Tp f0 = data001[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.10000000000000001. +-testcase_ellint_3 data002[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17507714233254659, -0.90000000000000002, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35350932904326521, -0.90000000000000002, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53911129989870998, -0.90000000000000002, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.73666644254508429, -0.90000000000000002, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.95250736612100184, -0.90000000000000002, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1950199550905594, -0.90000000000000002, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.4741687286340848, -0.90000000000000002, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.7968678183506059, -0.90000000000000002, 0.10000000000000001, +- 1.3962634015954636 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17543204932716244, -0.90000000000000002, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35636022898551184, -0.90000000000000002, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54880278898382584, -0.90000000000000002, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.75988834774529268, -0.90000000000000002, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.99853303003568117, -0.90000000000000002, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2759958823999022, -0.90000000000000002, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.6051187364639401, -0.90000000000000002, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.9941406879519472, -0.90000000000000002, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.4295011187834881, -0.90000000000000002, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler002 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.10000000000000001. +-template +-void test002() ++// Test data for k=-0.90000000000000002, nu=0.20000000000000001. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.2711357908578066e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 7.9985534974304465e-34 ++// stddev(f - f_Boost): 2.8281714052423424e-17 ++const testcase_ellint_3 ++data003[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data002) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data002[i].k), Tp(data002[i].nu), +- Tp(data002[i].phi)); +- const Tp f0 = data002[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.20000000000000001. +-testcase_ellint_3 data003[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17490065089140930, -0.90000000000000002, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35211377590661436, -0.90000000000000002, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53448220334204122, -0.90000000000000002, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.72591368943179613, -0.90000000000000002, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.93192539780038763, -0.90000000000000002, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1600809679692683, -0.90000000000000002, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.4195407225882508, -0.90000000000000002, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.7168966476424528, -0.90000000000000002, 0.20000000000000001, +- 1.3962634015954636 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17561047321968409, -0.90000000000000002, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35781659944356109, -0.90000000000000002, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.55388150905215283, -0.90000000000000002, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.77246874123251441, -0.90000000000000002, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 1.0244466254771925, -0.90000000000000002, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.3234824077640801, -0.90000000000000002, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.6849848968804237, -0.90000000000000002, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 2.1185749045502273, -0.90000000000000002, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler003 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.20000000000000001. +-template +-void test003() ++// Test data for k=-0.90000000000000002, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.9955372494296814e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data004[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data003) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data003[i].k), Tp(data003[i].nu), +- Tp(data003[i].phi)); +- const Tp f0 = data003[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.29999999999999999. +-testcase_ellint_3 data004[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17472479532647534, -0.90000000000000002, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.35073750187374114, -0.90000000000000002, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52998766129466979, -0.90000000000000002, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.71566993548699587, -0.90000000000000002, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.91271517762560195, -0.90000000000000002, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.1281241199843370, -0.90000000000000002, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.3704929576917448, -0.90000000000000002, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.6461981511487715, -0.90000000000000002, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17578954966746221, -0.90000000000000002, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35929429810867447, -0.90000000000000002, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55912757154240811, -0.90000000000000002, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.78578314722025389, -0.90000000000000002, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0526941001131365, -0.90000000000000002, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3769682234538601, -0.90000000000000002, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.7779437432911238, -0.90000000000000002, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.2676509341813631, -0.90000000000000002, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler004 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.29999999999999999. +-template +-void test004() ++// Test data for k=-0.90000000000000002, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 2.0261570199409106e-16 ++// variance(f - f_Boost): 5.8024227149195491e-32 ++// stddev(f - f_Boost): 2.4088218520512364e-16 ++const testcase_ellint_3 ++data005[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data004) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data004[i].k), Tp(data004[i].nu), +- Tp(data004[i].phi)); +- const Tp f0 = data004[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.40000000000000002. +-testcase_ellint_3 data005[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17454957156468839, -0.90000000000000002, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34938003933330430, -0.90000000000000002, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52562093533067455, -0.90000000000000002, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.70589461324915703, -0.90000000000000002, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.89472658511942849, -0.90000000000000002, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0987419542323440, -0.90000000000000002, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.3261349565496301, -0.90000000000000002, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.5831293909853767, -0.90000000000000002, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17596928293938452, -0.90000000000000002, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.36079388642472821, -0.90000000000000002, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.56455096667115612, -0.90000000000000002, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.79990996997869435, -0.90000000000000002, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0836647913872215, -0.90000000000000002, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.4378726836091849, -0.90000000000000002, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.8880446720682853, -0.90000000000000002, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.4505848932025227, -0.90000000000000002, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 3.1000689868578615, -0.90000000000000002, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler005 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.40000000000000002. +-template +-void test005() ++// Test data for k=-0.90000000000000002, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.8944086593755267e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 1.7333369499485123e-32 ++// stddev(f - f_Boost): 1.3165625507162629e-16 ++const testcase_ellint_3 ++data006[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data005) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data005[i].k), Tp(data005[i].nu), +- Tp(data005[i].phi)); +- const Tp f0 = data005[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.50000000000000000. +-testcase_ellint_3 data006[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17437497557073336, -0.90000000000000002, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34804093691586013, -0.90000000000000002, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.52137576320372914, -0.90000000000000002, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.69655163996912284, -0.90000000000000002, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.87783188683054236, -0.90000000000000002, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0716015959755185, -0.90000000000000002, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2857636916026747, -0.90000000000000002, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.5264263913252365, -0.90000000000000002, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17614967734498183, -0.90000000000000002, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36231594750319435, -0.90000000000000002, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.57016256984349567, -0.90000000000000002, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.81494025918293422, -0.90000000000000002, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.1178482279283477, -0.90000000000000002, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.5081455873012106, -0.90000000000000002, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 2.0213599730863998, -0.90000000000000002, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.6822467012926827, -0.90000000000000002, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler006 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.50000000000000000. +-template +-void test006() ++// Test data for k=-0.90000000000000002, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.0602096790645418e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data007[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data006) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data006[i].k), Tp(data006[i].nu), +- Tp(data006[i].phi)); +- const Tp f0 = data006[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.59999999999999998. +-testcase_ellint_3 data007[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17420100334657815, -0.90000000000000002, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34671975876122157, -0.90000000000000002, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51724631570707968, -0.90000000000000002, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.68760879113743056, -0.90000000000000002, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.86192157779698364, -0.90000000000000002, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0464279696166354, -0.90000000000000002, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.2488156247094004, -0.90000000000000002, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.4750988777188474, -0.90000000000000002, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17633073723493825, -0.90000000000000002, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36386108723492810, -0.90000000000000002, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57597424744716241, -0.90000000000000002, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.83098051948501150, -0.90000000000000002, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1558706545698916, -0.90000000000000002, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5905576379415669, -0.90000000000000002, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.1875186010215080, -0.90000000000000002, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.9885767771316849, -0.90000000000000002, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.9549939883570224, -0.90000000000000002, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler007 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.59999999999999998. +-template +-void test007() ++// Test data for k=-0.90000000000000002, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1938610791060186e-16 ++// mean(f - f_Boost): 3.0253577421035517e-16 ++// variance(f - f_Boost): 4.2342877557562532e-32 ++// stddev(f - f_Boost): 2.0577385051935665e-16 ++const testcase_ellint_3 ++data008[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data007) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data007[i].k), Tp(data007[i].nu), +- Tp(data007[i].phi)); +- const Tp f0 = data007[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.69999999999999996. +-testcase_ellint_3 data008[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17402765093102210, -0.90000000000000002, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34541608382635131, -0.90000000000000002, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.51322715827061705, -0.90000000000000002, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.67903717872440306, -0.90000000000000002, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.84690113601682671, -0.90000000000000002, 0.69999999999999996, +- 0.87266462599716477 }, +- { 1.0229914311548418, -0.90000000000000002, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.2148329639709381, -0.90000000000000002, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.4283586501307806, -0.90000000000000002, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.6600480747670938, -0.90000000000000002, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17651246700160939, -0.90000000000000002, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36542993547358982, -0.90000000000000002, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.58199897877674867, -0.90000000000000002, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.84815633587352857, -0.90000000000000002, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1985495623872375, -0.90000000000000002, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.6892158134027688, -0.90000000000000002, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.4029722191094236, -0.90000000000000002, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 3.4201084941340052, -0.90000000000000002, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler008 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.69999999999999996. +-template +-void test008() ++// Test data for k=-0.90000000000000002, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5091520146032660e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 9.8950000698295322e-33 ++// stddev(f - f_Boost): 9.9473614943006532e-17 ++const testcase_ellint_3 ++data009[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data008) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data008[i].k), Tp(data008[i].nu), +- Tp(data008[i].phi)); +- const Tp f0 = data008[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.80000000000000004. +-testcase_ellint_3 data009[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17385491439925149, -0.90000000000000002, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34412950523113928, -0.90000000000000002, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50931321668729612, -0.90000000000000002, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.67081081392296349, -0.90000000000000002, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.83268846097293259, -0.90000000000000002, 0.80000000000000004, +- 0.87266462599716477 }, +- { 1.0010985015814027, -0.90000000000000002, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1834394045489678, -0.90000000000000002, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.3855695891683188, -0.90000000000000002, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.6044591960982204, -0.90000000000000002, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17669487107954862, -0.90000000000000002, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36702314729628421, -0.90000000000000002, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58825099711365492, -0.90000000000000002, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.86661711422209031, -0.90000000000000002, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2469779109884802, -0.90000000000000002, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.8105469760531578, -0.90000000000000002, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.6989505165893752, -0.90000000000000002, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 4.0935213267757424, -0.90000000000000002, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler009 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.80000000000000004. +-template +-void test009() ++// Test data for k=-0.90000000000000002, nu=0.90000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.2628580104449673e-16 ++// mean(f - f_Boost): 8.5764728652293339e-16 ++// variance(f - f_Boost): 8.9671393318321280e-31 ++// stddev(f - f_Boost): 9.4694980499666013e-16 ++const testcase_ellint_3 ++data010[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data009) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data009[i].k), Tp(data009[i].nu), +- Tp(data009[i].phi)); +- const Tp f0 = data009[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.90000000000000002. +-testcase_ellint_3 data010[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17368278986240138, -0.90000000000000002, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34285962963961397, -0.90000000000000002, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50549974644993323, -0.90000000000000002, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.66290623857720898, -0.90000000000000002, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.81921183128847164, -0.90000000000000002, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.98058481956066390, -0.90000000000000002, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.1543223520473567, -0.90000000000000002, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.3462119782292938, -0.90000000000000002, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17687795394604169, -0.90000000000000002, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36864140434751286, -0.90000000000000002, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.59474595366817051, -0.90000000000000002, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.88654237226056665, -0.90000000000000002, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.3026595810616726, -0.90000000000000002, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.9653635459278078, -0.90000000000000002, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 3.1451407527189463, -0.90000000000000002, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 5.3745230680316114, -0.90000000000000002, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 8.9942562031858682, -0.90000000000000002, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler010 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.90000000000000002. +-template +-void test010() ++// Test data for k=-0.80000000000000004, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 ++const testcase_ellint_3 ++data011[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data010) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data010[i].k), Tp(data010[i].nu), +- Tp(data010[i].phi)); +- const Tp f0 = data010[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data011[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17510154241338902, -0.80000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35365068839779390, -0.80000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53926804409084561, -0.80000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.73587926028070383, -0.80000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1789022995388239, -0.80000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.4323027881876009, -0.80000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.7069629739121674, -0.80000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17510154241338899, -0.80000000000000004, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35365068839779396, -0.80000000000000004, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53926804409084550, -0.80000000000000004, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.73587926028070372, -0.80000000000000004, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1789022995388236, -0.80000000000000004, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.4323027881876012, -0.80000000000000004, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.7069629739121677, -0.80000000000000004, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler011 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.0000000000000000. +-template +-void test011() ++// Test data for k=-0.80000000000000004, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 ++const testcase_ellint_3 ++data012[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data011) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data011[i].k), Tp(data011[i].nu), +- Tp(data011[i].phi)); +- const Tp f0 = data011[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data012[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17492468824017166, -0.80000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35224443521476911, -0.80000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53456851853226961, -0.80000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.72488875602364944, -0.80000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.92661354274638952, -0.80000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1432651144499077, -0.80000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3774479927211429, -0.80000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.6287092337196041, -0.80000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17527903952342144, -0.80000000000000004, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35507705313548549, -0.80000000000000004, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54411455987643553, -0.80000000000000004, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.74745625666804383, -0.80000000000000004, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.97046953684238557, -0.80000000000000004, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2183080025184605, -0.80000000000000004, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4943711151994405, -0.80000000000000004, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.7972401309544201, -0.80000000000000004, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler012 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.10000000000000001. +-template +-void test012() ++// Test data for k=-0.80000000000000004, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 ++const testcase_ellint_3 ++data013[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data012) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data012[i].k), Tp(data012[i].nu), +- Tp(data012[i].phi)); +- const Tp f0 = data012[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data013[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17474847286224943, -0.80000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35085779529084682, -0.80000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53000829263059157, -0.80000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.71443466027453406, -0.80000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.90698196872715420, -0.80000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1108198200558581, -0.80000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.3284988909963957, -0.80000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.5600369318140328, -0.80000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17545718375086419, -0.80000000000000004, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35652404627248163, -0.80000000000000004, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54911638512920913, -0.80000000000000004, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.75967684282131176, -0.80000000000000004, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.99513526893543769, -0.80000000000000004, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2622192109995993, -0.80000000000000004, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.5654106676347741, -0.80000000000000004, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.9029531718534984, -0.80000000000000004, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler013 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.20000000000000001. +-template +-void test013() ++// Test data for k=-0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 ++const testcase_ellint_3 ++data014[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data013) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data013[i].k), Tp(data013[i].nu), +- Tp(data013[i].phi)); +- const Tp f0 = data013[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data014[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17457289217669891, -0.80000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34949028801501258, -0.80000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52558024362769318, -0.80000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.70447281740094914, -0.80000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.88864745641528986, -0.80000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0811075819341465, -0.80000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2844589654082377, -0.80000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4991461361277849, -0.80000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17563597931587369, -0.80000000000000004, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35799220412005128, -0.80000000000000004, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55428253691111318, -0.80000000000000004, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.77260647376977365, -0.80000000000000004, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0220015271210958, -0.80000000000000004, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3115965312302671, -0.80000000000000004, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.6478518468813512, -0.80000000000000004, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.0290458414203481, -0.80000000000000004, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.4392042002725693, -0.80000000000000004, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler014 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.29999999999999999. +-template +-void test014() ++// Test data for k=-0.80000000000000004, nu=0.40000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 ++const testcase_ellint_3 ++data015[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data014) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data014[i].k), Tp(data014[i].nu), +- Tp(data014[i].phi)); +- const Tp f0 = data014[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data015[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17439794211872178, -0.80000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34814144964568972, -0.80000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52127776285273075, -0.80000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.69496411438966599, -0.80000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.87146878427509589, -0.80000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0537579024937762, -0.80000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.2445534387922637, -0.80000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.4446769766361993, -0.80000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17581543047866136, -0.80000000000000004, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35948208343061633, -0.80000000000000004, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55962280893702021, -0.80000000000000004, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.78632063889234116, -0.80000000000000004, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0514333069550323, -0.80000000000000004, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3677213138838757, -0.80000000000000004, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.7451736773665165, -0.80000000000000004, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.1830100424586831, -0.80000000000000004, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.6604037035529724, -0.80000000000000004, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler015 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.40000000000000002. +-template +-void test015() ++// Test data for k=-0.80000000000000004, nu=0.50000000000000000. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 ++const testcase_ellint_3 ++data016[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data015) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data015[i].k), Tp(data015[i].nu), +- Tp(data015[i].phi)); +- const Tp f0 = data015[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data016[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17422361866118047, -0.80000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34681083254170475, -0.80000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51709470815494440, -0.80000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.68587375344080259, -0.80000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.85532571852810624, -0.80000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0284677391874906, -0.80000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2081693942686225, -0.80000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3955803006426311, -0.80000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17599554153999472, -0.80000000000000004, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36099426243351540, -0.80000000000000004, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56514786174780673, -0.80000000000000004, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.80090697622371010, -0.80000000000000004, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0838891627679339, -0.80000000000000004, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.4323506654466280, -0.80000000000000004, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.8625761085390575, -0.80000000000000004, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.3768757305654766, -0.80000000000000004, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.9478781158239746, -0.80000000000000004, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler016 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.50000000000000000. +-template +-void test016() ++// Test data for k=-0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 ++const testcase_ellint_3 ++data017[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data016) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data016[i].k), Tp(data016[i].nu), +- Tp(data016[i].phi)); +- const Tp f0 = data016[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data017[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17404991781414092, -0.80000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34549800443625167, -0.80000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51302536167001556, -0.80000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.67717065003912258, -0.80000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.84011512421134416, -0.80000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0049863847088742, -0.80000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1748145941898918, -0.80000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.3510319699755071, -0.80000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17617631684170665, -0.80000000000000004, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36252934193666231, -0.80000000000000004, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57086932622945163, -0.80000000000000004, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.81646796740150973, -0.80000000000000004, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1199552158519064, -0.80000000000000004, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5079766673336394, -0.80000000000000004, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.0082747447038165, -0.80000000000000004, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.6315146066775523, -0.80000000000000004, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.3418121892288051, -0.80000000000000004, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler017 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.59999999999999998. +-template +-void test017() ++// Test data for k=-0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 ++const testcase_ellint_3 ++data018[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data017) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data017[i].k), Tp(data017[i].nu), +- Tp(data017[i].phi)); +- const Tp f0 = data017[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data018[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17387683562442202, -0.80000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34420254775101611, -0.80000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50906439222143685, -0.80000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66882693152688433, -0.80000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.82574792844091316, -0.80000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.98310431309490953, -0.80000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.1440884535113258, -0.80000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.3103743938952537, -0.80000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17635776076721221, -0.80000000000000004, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36408794649916976, -0.80000000000000004, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57679992290624138, -0.80000000000000004, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.83312441418142813, -0.80000000000000004, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1603958891464856, -0.80000000000000004, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5982855143796213, -0.80000000000000004, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.1962484408371821, -0.80000000000000004, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.9873281786111869, -0.80000000000000004, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler018 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.69999999999999996. +-template +-void test018() ++// Test data for k=-0.80000000000000004, nu=0.80000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 ++const testcase_ellint_3 ++data019[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data018) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data018[i].k), Tp(data018[i].nu), +- Tp(data018[i].phi)); +- const Tp f0 = data018[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data019[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17370436817515206, -0.80000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34292405894783395, -0.80000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50520682176250087, -0.80000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.66081751679736189, -0.80000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.81214672249355102, -0.80000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.96264481387685574, -0.80000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1156611352656258, -0.80000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2730756225143889, -0.80000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.4339837018309474, -0.80000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17653987774203392, -0.80000000000000004, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36567072568046877, -0.80000000000000004, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58295359996558616, -0.80000000000000004, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.85101998309176108, -0.80000000000000004, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2062322059736537, -0.80000000000000004, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.7090321420917429, -0.80000000000000004, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.4529058049405066, -0.80000000000000004, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.5368893360106948, -0.80000000000000004, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.9246422058196062, -0.80000000000000004, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler019 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.80000000000000004. +-template +-void test019() ++// Test data for k=-0.80000000000000004, nu=0.90000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 ++const testcase_ellint_3 ++data020[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data019) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data019[i].k), Tp(data019[i].nu), +- Tp(data019[i].phi)); +- const Tp f0 = data019[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data020[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17353251158533153, -0.80000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34166214791545768, -0.80000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50144799535130580, -0.80000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.65311976193814447, -0.80000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.79924384892320866, -0.80000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.94345762353365625, -0.80000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0892582069219159, -0.80000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.2387000876610268, -0.80000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17672267223433513, -0.80000000000000004, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36727835537196063, -0.80000000000000004, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58934569363716649, -0.80000000000000004, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.87032723471138851, -0.80000000000000004, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2588676111323349, -0.80000000000000004, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.8498731900660019, -0.80000000000000004, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.8368381299300420, -0.80000000000000004, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.5674844191654058, -0.80000000000000004, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 7.2263259298637115, -0.80000000000000004, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler020 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.90000000000000002. +-template +-void test020() ++// Test data for k=-0.69999999999999996, nu=0.0000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.5425633303580569e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 ++const testcase_ellint_3 ++data021[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data020) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data020[i].k), Tp(data020[i].nu), +- Tp(data020[i].phi)); +- const Tp f0 = data020[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data021[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17496737466916720, -0.69999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35254687535677925, -0.69999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.72603797651684465, -0.69999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.92698296348313458, -0.69999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.6024686895959159, -0.69999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17496737466916723, -0.69999999999999996, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35254687535677931, -0.69999999999999996, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.72603797651684454, -0.69999999999999996, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.92698296348313447, -0.69999999999999996, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.6024686895959162, -0.69999999999999996, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler021 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.0000000000000000. +-template +-void test021() ++// Test data for k=-0.69999999999999996, nu=0.10000000000000001. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.2736371663370261e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 9.7390235212470591e-34 ++// stddev(f - f_Boost): 3.1207408609570677e-17 ++const testcase_ellint_3 ++data022[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data021) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data021[i].k), Tp(data021[i].nu), +- Tp(data021[i].phi)); +- const Tp f0 = data021[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data022[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17479076384884681, -0.69999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35114844900396364, -0.69999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53072776947527012, -0.69999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.71530198262386246, -0.69999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.90666760677828306, -0.69999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1063366517438080, -0.69999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3149477243092147, -0.69999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.5314886725038925, -0.69999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17514462737300920, -0.69999999999999996, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35396527997470451, -0.69999999999999996, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54015179589433981, -0.69999999999999996, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.73734430854477728, -0.69999999999999996, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.94888950796697047, -0.69999999999999996, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1772807959736322, -0.69999999999999996, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4231796401075831, -0.69999999999999996, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6841856799887469, -0.69999999999999996, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.9541347343119562, -0.69999999999999996, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler022 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.10000000000000001. +-template +-void test022() ++// Test data for k=-0.69999999999999996, nu=0.20000000000000001. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9907249355047774e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data023[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data022) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data022[i].k), Tp(data022[i].nu), +- Tp(data022[i].phi)); +- const Tp f0 = data022[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data023[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17461479077791472, -0.69999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34976950621407538, -0.69999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52622533231350188, -0.69999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.70508774017895226, -0.69999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.88775302531730294, -0.69999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0756195476149006, -0.69999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2695349716654372, -0.69999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4690814617070540, -0.69999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.6721098780092147, -0.69999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17532252613350796, -0.69999999999999996, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35540417596807522, -0.69999999999999996, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54508913033361928, -0.69999999999999996, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74927635777718415, -0.69999999999999996, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.97261706337936338, -0.69999999999999996, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2187303976209327, -0.69999999999999996, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4887796709222487, -0.69999999999999996, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.7796581281839212, -0.69999999999999996, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler023 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.20000000000000001. +-template +-void test023() ++// Test data for k=-0.69999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.6912897610535316e-16 ++// mean(f - f_Boost): 1.6653345369377347e-17 ++// variance(f - f_Boost): 2.6207864467918357e-32 ++// stddev(f - f_Boost): 1.6188843216214787e-16 ++const testcase_ellint_3 ++data024[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data023) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data023[i].k), Tp(data023[i].nu), +- Tp(data023[i].phi)); +- const Tp f0 = data023[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data024[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17443945136076172, -0.69999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34840956983535287, -0.69999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52185308551329179, -0.69999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.69535240431168266, -0.69999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.87007983473964923, -0.69999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0474657975577066, -0.69999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2286225419931889, -0.69999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4136490671013271, -0.69999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17550107516328570, -0.69999999999999996, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35686409576571959, -0.69999999999999996, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55018827316513352, -0.69999999999999996, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.76189759494390275, -0.69999999999999996, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.99844623430885615, -0.69999999999999996, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2652862989039833, -0.69999999999999996, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5647666808691361, -0.69999999999999996, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8932499694938163, -0.69999999999999996, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler024 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.29999999999999999. +-template +-void test024() ++// Test data for k=-0.69999999999999996, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5578567644745380e-16 ++// mean(f - f_Boost): 1.4710455076283324e-16 ++// variance(f - f_Boost): 2.6715739327327140e-33 ++// stddev(f - f_Boost): 5.1687270509601433e-17 ++const testcase_ellint_3 ++data025[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data024) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data024[i].k), Tp(data024[i].nu), +- Tp(data024[i].phi)); +- const Tp f0 = data024[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data025[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17426474153983226, -0.69999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34706817945773732, -0.69999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51760452851738159, -0.69999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.68605801534722766, -0.69999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.85351339387296532, -0.69999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0215297967969537, -0.69999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1915051074460528, -0.69999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3639821911744707, -0.69999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17568027871494424, -0.69999999999999996, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35834559208180261, -0.69999999999999996, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55545885451190613, -0.69999999999999996, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.77528120402568101, -0.69999999999999996, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0267241287600319, -0.69999999999999996, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3181380338980246, -0.69999999999999996, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.6542840785132085, -0.69999999999999996, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.0315595131131818, -0.69999999999999996, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.4342502915307875, -0.69999999999999996, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler025 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.40000000000000002. +-template +-void test025() ++// Test data for k=-0.69999999999999996, nu=0.50000000000000000. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.0416041815443256e-16 ++// mean(f - f_Boost): 1.9151347174783951e-16 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 ++const testcase_ellint_3 ++data026[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data025) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data025[i].k), Tp(data025[i].nu), +- Tp(data025[i].phi)); +- const Tp f0 = data025[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data026[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17409065729516093, -0.69999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34574489064986091, -0.69999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51347361925579793, -0.69999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67717079489579290, -0.69999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.83793902055292280, -0.69999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.99752863545289705, -0.69999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1576240080401499, -0.69999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3191464023923762, -0.69999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17586014108156545, -0.69999999999999996, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35984923894341653, -0.69999999999999996, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56091135606739995, -0.69999999999999996, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78951212635197054, -0.69999999999999996, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0578865732938729, -0.69999999999999996, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3789149005151722, -0.69999999999999996, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.7620212286086225, -0.69999999999999996, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.2051554347435585, -0.69999999999999996, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.6868019968236991, -0.69999999999999996, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler026 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.50000000000000000. +-template +-void test026() ++// Test data for k=-0.69999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.6515644573247170e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 ++const testcase_ellint_3 ++data027[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data026) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data026[i].k), Tp(data026[i].nu), +- Tp(data026[i].phi)); +- const Tp f0 = data026[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data027[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17391719464391611, -0.69999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34443927423869031, -0.69999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50945473266486074, -0.69999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66866056326513823, -0.69999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.82325830002337352, -0.69999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.97522808245669357, -0.69999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1265300613705282, -0.69999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2784066076152003, -0.69999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17604066659721918, -0.69999999999999996, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36137563278353424, -0.69999999999999996, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56655721272747606, -0.69999999999999996, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.80468966552978305, -0.69999999999999996, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0924902943683852, -0.69999999999999996, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4499247992499797, -0.69999999999999996, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8953714382113815, -0.69999999999999996, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.4323229949248670, -0.69999999999999996, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler027 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.59999999999999998. +-template +-void test027() ++// Test data for k=-0.69999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.8475278552871384e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 ++const testcase_ellint_3 ++data028[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data027) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data027[i].k), Tp(data027[i].nu), +- Tp(data027[i].phi)); +- const Tp f0 = data027[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data028[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17374434963995028, -0.69999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34315091562900674, -0.69999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50554262375653358, -0.69999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66050025406305812, -0.69999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.80938620118847404, -0.69999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.95443223855852144, -0.69999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0978573207128302, -0.69999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.2411754575007123, -0.69999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17622185963747933, -0.69999999999999996, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36292539360435261, -0.69999999999999996, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57240892970150015, -0.69999999999999996, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.82093084713182629, -0.69999999999999996, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1312609022179871, -0.69999999999999996, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5345768067715795, -0.69999999999999996, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.0668847445934420, -0.69999999999999996, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.7483444537551240, -0.69999999999999996, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.5408408771788560, -0.69999999999999996, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler028 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.69999999999999996. +-template +-void test028() ++// Test data for k=-0.69999999999999996, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.8664526853112274e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 3.5389557150937801e-33 ++// stddev(f - f_Boost): 5.9489122661994095e-17 ++const testcase_ellint_3 ++data029[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data028) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data028[i].k), Tp(data028[i].nu), +- Tp(data028[i].phi)); +- const Tp f0 = data028[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data029[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17357211837335737, -0.69999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34187941416012108, -0.69999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50173239465478270, -0.69999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.65266550725988315, -0.69999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.79624879865249298, -0.69999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.93497577043296920, -0.69999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0713041566930748, -0.69999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2069772023255652, -0.69999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.3427110650397533, -0.69999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17640372461994805, -0.69999999999999996, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36449916621651091, -0.69999999999999996, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57848021800372573, -0.69999999999999996, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.83837480968392586, -0.69999999999999996, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1751669030061143, -0.69999999999999996, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.6381851899173601, -0.69999999999999996, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.3002065924302197, -0.69999999999999996, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.2337600665337862, -0.69999999999999996, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler029 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.80000000000000004. +-template +-void test029() ++// Test data for k=-0.69999999999999996, nu=0.90000000000000002. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 6.7723604502134545e-16 ++// variance(f - f_Boost): 4.8757508225668289e-31 ++// stddev(f - f_Boost): 6.9826576763914390e-16 ++const testcase_ellint_3 ++data030[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data029) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data029[i].k), Tp(data029[i].nu), +- Tp(data029[i].phi)); +- const Tp f0 = data029[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data030[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17340049697003634, -0.69999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34062438249741556, -0.69999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49801946510076878, -0.69999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.64513432604750487, -0.69999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.78378145487573758, -0.69999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.91671799500854634, -0.69999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0466193579463123, -0.69999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1754218079199146, -0.69999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3040500499695911, -0.69999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17658626600478800, -0.69999999999999996, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36609762156017206, -0.69999999999999996, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58478615187842409, -0.69999999999999996, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.85718862878291846, -0.69999999999999996, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2255385617397643, -0.69999999999999996, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7696521899992939, -0.69999999999999996, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.6476314987883502, -0.69999999999999996, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.1373434902898083, -0.69999999999999996, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 6.3796094177887746, -0.69999999999999996, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler030 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.90000000000000002. +-template +-void test030() ++// Test data for k=-0.59999999999999998, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 ++const testcase_ellint_3 ++data031[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data030) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data030[i].k), Tp(data030[i].nu), +- Tp(data030[i].phi)); +- const Tp f0 = data030[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.0000000000000000. +-testcase_ellint_3 data031[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17485154362988362, -0.59999999999999998, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35160509865544326, -0.59999999999999998, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53210652578446160, -0.59999999999999998, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71805304664485670, -0.59999999999999998, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.91082759030195970, -0.59999999999999998, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.5332022105084773, -0.59999999999999998, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17485154362988359, -0.59999999999999998, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35160509865544320, -0.59999999999999998, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53210652578446138, -0.59999999999999998, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71805304664485659, -0.59999999999999998, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.91082759030195981, -0.59999999999999998, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.5332022105084779, -0.59999999999999998, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.7507538029157523, -0.59999999999999998, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler031 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.0000000000000000. +-template +-void test031() ++// Test data for k=-0.59999999999999998, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 ++const testcase_ellint_3 ++data032[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data031) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data031[i].k), Tp(data031[i].nu), +- Tp(data031[i].phi)); +- const Tp f0 = data031[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.10000000000000001. +-testcase_ellint_3 data032[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17467514275022014, -0.59999999999999998, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35021333086258255, -0.59999999999999998, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52751664092962713, -0.59999999999999998, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70752126971957885, -0.59999999999999998, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.89111058756112871, -0.59999999999999998, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0789241202877768, -0.59999999999999998, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2710800210399946, -0.59999999999999998, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4669060574440276, -0.59999999999999998, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502858548476194, -0.59999999999999998, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35301673150537388, -0.59999999999999998, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53683932476326812, -0.59999999999999998, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72914228589586771, -0.59999999999999998, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.93208036718354692, -0.59999999999999998, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1468984688863377, -0.59999999999999998, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3733904977062528, -0.59999999999999998, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6094225663372157, -0.59999999999999998, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler032 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.10000000000000001. +-template +-void test032() ++// Test data for k=-0.59999999999999998, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0940560416437693e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 ++const testcase_ellint_3 ++data033[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data032) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data032[i].k), Tp(data032[i].nu), +- Tp(data032[i].phi)); +- const Tp f0 = data032[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.20000000000000001. +-testcase_ellint_3 data033[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17449937871800653, -0.59999999999999998, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34884093647346553, -0.59999999999999998, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52306221119844110, -0.59999999999999998, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69749955678982223, -0.59999999999999998, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.87274610682416853, -0.59999999999999998, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0494620540750792, -0.59999999999999998, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2280847305507339, -0.59999999999999998, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4085436279696886, -0.59999999999999998, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17520627248155893, -0.59999999999999998, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35444873935437748, -0.59999999999999998, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54172310557682524, -0.59999999999999998, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74084300280734672, -0.59999999999999998, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.95509001527006121, -0.59999999999999998, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1865688084431796, -0.59999999999999998, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4352978868932598, -0.59999999999999998, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6983400371331816, -0.59999999999999998, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.9695980282802215, -0.59999999999999998, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler033 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.20000000000000001. +-template +-void test033() ++// Test data for k=-0.59999999999999998, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 7.4940054162198071e-17 ++// variance(f - f_Boost): 1.6823592487044846e-32 ++// stddev(f - f_Boost): 1.2970579203352812e-16 ++const testcase_ellint_3 ++data034[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data033) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data033[i].k), Tp(data033[i].nu), +- Tp(data033[i].phi)); +- const Tp f0 = data033[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.29999999999999999. +-testcase_ellint_3 data034[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17432424744393935, -0.59999999999999998, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34748744127146447, -0.59999999999999998, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51873632743924847, -0.59999999999999998, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68794610396313127, -0.59999999999999998, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.85558070175468726, -0.59999999999999998, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0224416343605653, -0.59999999999999998, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1893144457936788, -0.59999999999999998, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3566435377982575, -0.59999999999999998, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17538460882640122, -0.59999999999999998, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35590165133735557, -0.59999999999999998, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54676661152254535, -0.59999999999999998, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.75321709418305305, -0.59999999999999998, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.98012637808992920, -0.59999999999999998, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2310891277158875, -0.59999999999999998, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5069157924585623, -0.59999999999999998, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8039583598337940, -0.59999999999999998, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler034 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.29999999999999999. +-template +-void test034() ++// Test data for k=-0.59999999999999998, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.7909659715991921e-16 ++// mean(f - f_Boost): -2.7755575615628915e-18 ++// variance(f - f_Boost): 2.4044165394594425e-32 ++// stddev(f - f_Boost): 1.5506181152880429e-16 ++const testcase_ellint_3 ++data035[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data034) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data034[i].k), Tp(data034[i].nu), +- Tp(data034[i].phi)); +- const Tp f0 = data034[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.40000000000000002. +-testcase_ellint_3 data035[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17414974487670720, -0.59999999999999998, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34615238767335027, -0.59999999999999998, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51453257838108579, -0.59999999999999998, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67882386787534410, -0.59999999999999998, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.83948470233173578, -0.59999999999999998, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.99753496200073977, -0.59999999999999998, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1541101404388487, -0.59999999999999998, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3100911323398814, -0.59999999999999998, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17556359876533037, -0.59999999999999998, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35737601674244679, -0.59999999999999998, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55197933771320218, -0.59999999999999998, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.76633591620002894, -0.59999999999999998, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0075231136019616, -0.59999999999999998, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2815842073813450, -0.59999999999999998, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5911666941449827, -0.59999999999999998, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.9323227566025762, -0.59999999999999998, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler035 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.40000000000000002. +-template +-void test035() ++// Test data for k=-0.59999999999999998, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6240126899196213e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 ++const testcase_ellint_3 ++data036[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data035) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data035[i].k), Tp(data035[i].nu), +- Tp(data035[i].phi)); +- const Tp f0 = data035[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.50000000000000000. +-testcase_ellint_3 data036[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17397586700252810, -0.59999999999999998, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34483533397138516, -0.59999999999999998, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51044500461706499, -0.59999999999999998, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67009988034712675, -0.59999999999999998, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.82434762375735193, -0.59999999999999998, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.97447346702798998, -0.59999999999999998, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1219494000522143, -0.59999999999999998, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2680242605954486, -0.59999999999999998, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17574324658480217, -0.59999999999999998, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35887240603169313, -0.59999999999999998, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55737161826345261, -0.59999999999999998, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78028227313077458, -0.59999999999999998, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0376989776486290, -0.59999999999999998, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3395933991042925, -0.59999999999999998, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6924049626591782, -0.59999999999999998, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0931011856518920, -0.59999999999999998, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.5239007084492706, -0.59999999999999998, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler036 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.50000000000000000. +-template +-void test036() ++// Test data for k=-0.59999999999999998, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 ++const testcase_ellint_3 ++data037[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data036) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data036[i].k), Tp(data036[i].nu), +- Tp(data036[i].phi)); +- const Tp f0 = data036[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.59999999999999998. +-testcase_ellint_3 data037[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17380260984469356, -0.59999999999999998, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34353585361777839, -0.59999999999999998, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50646805774321402, -0.59999999999999998, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66174468108625517, -0.59999999999999998, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.81007462280278408, -0.59999999999999998, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.95303466945718729, -0.59999999999999998, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0924118588677503, -0.59999999999999998, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2297640574847937, -0.59999999999999998, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17592355661219386, -0.59999999999999998, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36039141192661606, -0.59999999999999998, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56295472636903854, -0.59999999999999998, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.79515295130165986, -0.59999999999999998, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0711886441942242, -0.59999999999999998, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4072952835139891, -0.59999999999999998, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8174863977376825, -0.59999999999999998, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.3029921578542232, -0.59999999999999998, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler037 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.59999999999999998. +-template +-void test037() ++// Test data for k=-0.59999999999999998, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2451074234797436e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 ++const testcase_ellint_3 ++data038[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data037) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data037[i].k), Tp(data037[i].nu), +- Tp(data037[i].phi)); +- const Tp f0 = data037[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.69999999999999996. +-testcase_ellint_3 data038[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17362996946312009, -0.59999999999999998, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34225353454870588, -0.59999999999999998, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50259656397799546, -0.59999999999999998, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.65373184496628944, -0.59999999999999998, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.79658372884056439, -0.59999999999999998, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.93303240100245421, -0.59999999999999998, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0651547944716557, -0.59999999999999998, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1947676204853441, -0.59999999999999998, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3232737468822811, -0.59999999999999998, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17610453321631936, -0.59999999999999998, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36193365056369764, -0.59999999999999998, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56874098962268527, -0.59999999999999998, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.81106198671477181, -0.59999999999999998, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1086886419010082, -0.59999999999999998, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4879048567239257, -0.59999999999999998, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9780310073615923, -0.59999999999999998, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.5941545586772712, -0.59999999999999998, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.3029735898397155, -0.59999999999999998, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler038 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.69999999999999996. +-template +-void test038() ++// Test data for k=-0.59999999999999998, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3826960061025914e-16 ++// mean(f - f_Boost): 2.7478019859472625e-16 ++// variance(f - f_Boost): 4.6451528105588637e-32 ++// stddev(f - f_Boost): 2.1552616570984749e-16 ++const testcase_ellint_3 ++data039[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data038) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data038[i].k), Tp(data038[i].nu), +- Tp(data038[i].phi)); +- const Tp f0 = data038[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.80000000000000004. +-testcase_ellint_3 data039[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17345794195390687, -0.59999999999999998, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34098797854531027, -0.59999999999999998, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49882569168826230, -0.59999999999999998, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64603758566475511, -0.59999999999999998, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.78380365594769730, -0.59999999999999998, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.91430946255611190, -0.59999999999999998, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0398955217270607, -0.59999999999999998, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1625948314277676, -0.59999999999999998, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17628618080795252, -0.59999999999999998, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36349976272521012, -0.59999999999999998, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57474392342151914, -0.59999999999999998, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.82814493499158159, -0.59999999999999998, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1511281795998280, -0.59999999999999998, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5864286332503075, -0.59999999999999998, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1958944866494527, -0.59999999999999998, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.0398358172574604, -0.59999999999999998, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler039 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.80000000000000004. +-template +-void test039() ++// Test data for k=-0.59999999999999998, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.7440178400898422e-16 ++// mean(f - f_Boost): 5.0792703376600914e-16 ++// variance(f - f_Boost): 1.9863137923719990e-31 ++// stddev(f - f_Boost): 4.4568080420543122e-16 ++const testcase_ellint_3 ++data040[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data039) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data039[i].k), Tp(data039[i].nu), +- Tp(data039[i].phi)); +- const Tp f0 = data039[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.90000000000000002. +-testcase_ellint_3 data040[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17328652344890033, -0.59999999999999998, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33973880062929018, -0.59999999999999998, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49515092233122765, -0.59999999999999998, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63864042139737043, -0.59999999999999998, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.77167205646538850, -0.59999999999999998, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.89673202848034383, -0.59999999999999998, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0163984492661304, -0.59999999999999998, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1328845785162431, -0.59999999999999998, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17646850384035848, -0.59999999999999998, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36509041515134105, -0.59999999999999998, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58097838596260631, -0.59999999999999998, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.84656453396163722, -0.59999999999999998, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1997828426963724, -0.59999999999999998, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7112436789225605, -0.59999999999999998, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.5193168553672312, -0.59999999999999998, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.8656670488606686, -0.59999999999999998, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.8709993116265595, -0.59999999999999998, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler040 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.90000000000000002. +-template +-void test040() ++// Test data for k=-0.50000000000000000, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 ++const testcase_ellint_3 ++data041[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data040) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data040[i].k), Tp(data040[i].nu), +- Tp(data040[i].phi)); +- const Tp f0 = data040[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.0000000000000000. +-testcase_ellint_3 data041[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35081868470101585, -0.50000000000000000, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52942862705190585, -0.50000000000000000, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0895506700518851, -0.50000000000000000, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4845545520549484, -0.50000000000000000, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35081868470101579, -0.50000000000000000, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52942862705190574, -0.50000000000000000, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0895506700518853, -0.50000000000000000, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4845545520549488, -0.50000000000000000, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler041 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.0000000000000000. +-template +-void test041() ++// Test data for k=-0.50000000000000000, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 ++const testcase_ellint_3 ++data042[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data041) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data041[i].k), Tp(data041[i].nu), +- Tp(data041[i].phi)); +- const Tp f0 = data041[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.10000000000000001. +-testcase_ellint_3 data042[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17457763120814676, -0.50000000000000000, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34943246340849154, -0.50000000000000000, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52487937869610801, -0.50000000000000000, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70127785096388395, -0.50000000000000000, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.87898815988624479, -0.50000000000000000, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0582764576094172, -0.50000000000000000, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2391936844060207, -0.50000000000000000, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4214793542995841, -0.50000000000000000, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17493071928248824, -0.50000000000000000, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35222467688034798, -0.50000000000000000, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53411928652008112, -0.50000000000000000, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72256398117177589, -0.50000000000000000, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.91899583232771009, -0.50000000000000000, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1240549163055360, -0.50000000000000000, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3372938086286021, -0.50000000000000000, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5570024469132429, -0.50000000000000000, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7803034946545480, -0.50000000000000000, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler042 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.10000000000000001. +-template +-void test042() ++// Test data for k=-0.50000000000000000, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 ++const testcase_ellint_3 ++data043[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data042) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data042[i].k), Tp(data042[i].nu), +- Tp(data042[i].phi)); +- const Tp f0 = data042[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.20000000000000001. +-testcase_ellint_3 data043[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17440204336345433, -0.50000000000000000, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34806552388338824, -0.50000000000000000, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52046416757129821, -0.50000000000000000, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69140924550993876, -0.50000000000000000, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.86104678636125520, -0.50000000000000000, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0297439459053981, -0.50000000000000000, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1979214112912036, -0.50000000000000000, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3659033858648930, -0.50000000000000000, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17510822779582402, -0.50000000000000000, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35365094725531487, -0.50000000000000000, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53895933237328697, -0.50000000000000000, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.73408090840070794, -0.50000000000000000, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.94145442818535396, -0.50000000000000000, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1624120186296487, -0.50000000000000000, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3965823372867114, -0.50000000000000000, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6414308440430099, -0.50000000000000000, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8922947612264018, -0.50000000000000000, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler043 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.20000000000000001. +-template +-void test043() ++// Test data for k=-0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 ++const testcase_ellint_3 ++data044[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data043) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data043[i].k), Tp(data043[i].nu), +- Tp(data043[i].phi)); +- const Tp f0 = data043[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.29999999999999999. +-testcase_ellint_3 data044[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17422708752228896, -0.50000000000000000, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34671739434855858, -0.50000000000000000, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51617616305641889, -0.50000000000000000, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68200047612545178, -0.50000000000000000, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.84427217869498372, -0.50000000000000000, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0035637821389782, -0.50000000000000000, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1606800483933113, -0.50000000000000000, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3164407134643459, -0.50000000000000000, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17528638488102041, -0.50000000000000000, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35509802222332720, -0.50000000000000000, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54395740731866193, -0.50000000000000000, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74625871438752667, -0.50000000000000000, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.96588271186092023, -0.50000000000000000, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2054319584357329, -0.50000000000000000, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4651077994832871, -0.50000000000000000, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.7416018368052644, -0.50000000000000000, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler044 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.29999999999999999. +-template +-void test044() ++// Test data for k=-0.50000000000000000, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 ++const testcase_ellint_3 ++data045[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data044) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data044[i].k), Tp(data044[i].nu), +- Tp(data044[i].phi)); +- const Tp f0 = data044[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.40000000000000002. +-testcase_ellint_3 data045[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17405275963859917, -0.50000000000000000, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34538761957029329, -0.50000000000000000, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51200902646603919, -0.50000000000000000, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67301522212868792, -0.50000000000000000, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82853844466313320, -0.50000000000000000, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.97942097862681488, -0.50000000000000000, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1268429801220616, -0.50000000000000000, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2720406704533922, -0.50000000000000000, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17546519477859268, -0.50000000000000000, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35656644822531680, -0.50000000000000000, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54912289677411319, -0.50000000000000000, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75916731611690047, -0.50000000000000000, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.99260415631328214, -0.50000000000000000, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2541925856918670, -0.50000000000000000, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5456393705347609, -0.50000000000000000, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8631904972952076, -0.50000000000000000, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler045 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.40000000000000002. +-template +-void test045() ++// Test data for k=-0.50000000000000000, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 ++const testcase_ellint_3 ++data046[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data045) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data045[i].k), Tp(data045[i].nu), +- Tp(data045[i].phi)); +- const Tp f0 = data045[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.50000000000000000. +-testcase_ellint_3 data046[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17387905570381157, -0.50000000000000000, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34407576010465207, -0.50000000000000000, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50795686560160835, -0.50000000000000000, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.66442115453330175, -0.50000000000000000, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.81373829119355345, -0.50000000000000000, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.95705743313235825, -0.50000000000000000, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0959131991362556, -0.50000000000000000, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2318900529754597, -0.50000000000000000, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17564466176941509, -0.50000000000000000, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35805679276065394, -0.50000000000000000, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55446601496200032, -0.50000000000000000, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.77288783578259013, -0.50000000000000000, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0220246013918972, -0.50000000000000000, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3101681612463965, -0.50000000000000000, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6422994881851025, -0.50000000000000000, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0152636030998816, -0.50000000000000000, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler046 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.50000000000000000. +-template +-void test046() ++// Test data for k=-0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 ++const testcase_ellint_3 ++data047[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data046) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data046[i].k), Tp(data046[i].nu), +- Tp(data046[i].phi)); +- const Tp f0 = data046[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.59999999999999998. +-testcase_ellint_3 data047[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17370597174637581, -0.50000000000000000, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34278139158591414, -0.50000000000000000, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50401419439302719, -0.50000000000000000, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65618938076167221, -0.50000000000000000, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79977959248855424, -0.50000000000000000, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.93625925190753545, -0.50000000000000000, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0674905658379710, -0.50000000000000000, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1953481298023048, -0.50000000000000000, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17582479017522740, -0.50000000000000000, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35956964546660036, -0.50000000000000000, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55999790372984193, -0.50000000000000000, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78751507911209895, -0.50000000000000000, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0546620505035220, -0.50000000000000000, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3754438357425935, -0.50000000000000000, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7615727400820127, -0.50000000000000000, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.2134638067565242, -0.50000000000000000, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler047 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.59999999999999998. +-template +-void test047() ++// Test data for k=-0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 ++const testcase_ellint_3 ++data048[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data047) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data047[i].k), Tp(data047[i].nu), +- Tp(data047[i].phi)); +- const Tp f0 = data047[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.69999999999999996. +-testcase_ellint_3 data048[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17353350383131641, -0.50000000000000000, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34150410405436771, -0.50000000000000000, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50017589696443487, -0.50000000000000000, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64829398188419962, -0.50000000000000000, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.78658270782402073, -0.50000000000000000, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.91684738336675053, -0.50000000000000000, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0412486789555937, -0.50000000000000000, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1619021847612001, -0.50000000000000000, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17600558435914915, -0.50000000000000000, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36110561926726259, -0.50000000000000000, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56573074641137111, -0.50000000000000000, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.80316073084237205, -0.50000000000000000, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0911910688131461, -0.50000000000000000, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4530946406380640, -0.50000000000000000, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9144386536785372, -0.50000000000000000, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4878788958234970, -0.50000000000000000, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.1433945297859225, -0.50000000000000000, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler048 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.69999999999999996. +-template +-void test048() ++// Test data for k=-0.50000000000000000, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 ++const testcase_ellint_3 ++data049[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data048) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data048[i].k), Tp(data048[i].nu), +- Tp(data048[i].phi)); +- const Tp f0 = data048[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.80000000000000004. +-testcase_ellint_3 data049[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17336164805979126, -0.50000000000000000, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34024350132086773, -0.50000000000000000, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49643719555734084, -0.50000000000000000, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64071162456976150, -0.50000000000000000, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.77407836177211908, -0.50000000000000000, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.89867058251905652, -0.50000000000000000, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0169181822134912, -0.50000000000000000, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1311363312779448, -0.50000000000000000, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17618704872620228, -0.50000000000000000, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36266535159745827, -0.50000000000000000, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57167789954529158, -0.50000000000000000, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81995752984315018, -0.50000000000000000, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1325112162158122, -0.50000000000000000, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5479055930718042, -0.50000000000000000, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1215243941010486, -0.50000000000000000, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.9069405767650132, -0.50000000000000000, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.8750701888108066, -0.50000000000000000, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler049 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.80000000000000004. +-template +-void test049() ++// Test data for k=-0.50000000000000000, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 ++const testcase_ellint_3 ++data050[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data049) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data049[i].k), Tp(data049[i].nu), +- Tp(data049[i].phi)); +- const Tp f0 = data049[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.90000000000000002. +-testcase_ellint_3 data050[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17319040056865681, -0.50000000000000000, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33899920036578557, -0.50000000000000000, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49279362182695186, -0.50000000000000000, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63342123379746151, -0.50000000000000000, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.76220595179550321, -0.50000000000000000, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.88160004743532294, -0.50000000000000000, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.99427448642310134, -0.50000000000000000, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1027091512470093, -0.50000000000000000, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17636918772384180, -0.50000000000000000, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36424950570740700, -0.50000000000000000, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57785404590231426, -0.50000000000000000, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83806480521716531, -0.50000000000000000, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1798568683069752, -0.50000000000000000, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6678766243739607, -0.50000000000000000, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.4282976450693483, -0.50000000000000000, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.6810787666126656, -0.50000000000000000, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.5355132096026454, -0.50000000000000000, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler050 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.90000000000000002. +-template +-void test050() ++// Test data for k=-0.39999999999999991, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1423314994346225e-16 ++// mean(f - f_Boost): 1.9428902930940238e-17 ++// variance(f - f_Boost): 2.2263750157116445e-32 ++// stddev(f - f_Boost): 1.4921042241450980e-16 ++const testcase_ellint_3 ++data051[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data050) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data050[i].k), Tp(data050[i].nu), +- Tp(data050[i].phi)); +- const Tp f0 = data050[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.0000000000000000. +-testcase_ellint_3 data051[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17467414669441531, -0.40000000000000002, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35018222772483443, -0.40000000000000002, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52729015917508748, -0.40000000000000002, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70662374407341255, -0.40000000000000002, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88859210497602170, -0.40000000000000002, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0733136290471379, -0.40000000000000002, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2605612170157061, -0.40000000000000002, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4497513956433437, -0.40000000000000002, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17467414669441528, -0.39999999999999991, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35018222772483443, -0.39999999999999991, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52729015917508748, -0.39999999999999991, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70662374407341244, -0.39999999999999991, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88859210497602159, -0.39999999999999991, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0733136290471381, -0.39999999999999991, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2605612170157066, -0.39999999999999991, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4497513956433439, -0.39999999999999991, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler051 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.0000000000000000. +-template +-void test051() ++// Test data for k=-0.39999999999999991, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8489340395463703e-16 ++// mean(f - f_Boost): 6.3837823915946496e-17 ++// variance(f - f_Boost): 4.4785242050000272e-32 ++// stddev(f - f_Boost): 2.1162523963365114e-16 ++const testcase_ellint_3 ++data052[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data051) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data051[i].k), Tp(data051[i].nu), +- Tp(data051[i].phi)); +- const Tp f0 = data051[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.10000000000000001. +-testcase_ellint_3 data052[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17449806706684673, -0.40000000000000002, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34880048623856075, -0.40000000000000002, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52277322065757403, -0.40000000000000002, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69638072056918376, -0.40000000000000002, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86968426619831540, -0.40000000000000002, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0428044206578095, -0.40000000000000002, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2158651158274378, -0.40000000000000002, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3889447129893322, -0.40000000000000002, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17485086590796767, -0.39999999999999991, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35158366412506992, -0.39999999999999991, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53194731675711726, -0.39999999999999991, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71740615528010931, -0.39999999999999991, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90896157773487030, -0.39999999999999991, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1069605483834348, -0.39999999999999991, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3109353428823001, -0.39999999999999991, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5195460789903448, -0.39999999999999991, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7306968836847187, -0.39999999999999991, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler052 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.10000000000000001. +-template +-void test052() ++// Test data for k=-0.39999999999999991, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.0467985583872730e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 ++const testcase_ellint_3 ++data053[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data052) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data052[i].k), Tp(data052[i].nu), +- Tp(data052[i].phi)); +- const Tp f0 = data052[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.20000000000000001. +-testcase_ellint_3 data053[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17432262290723399, -0.40000000000000002, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34743795258968596, -0.40000000000000002, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51838919472805123, -0.40000000000000002, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68663134739057918, -0.40000000000000002, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.85206432981833979, -0.40000000000000002, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0149595349004430, -0.40000000000000002, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1758349405464676, -0.40000000000000002, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3353337673882635, -0.40000000000000002, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502822886437389, -0.39999999999999991, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35300530062530805, -0.39999999999999991, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53675259548210896, -0.39999999999999991, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72878006428676934, -0.39999999999999991, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.93100219010583563, -0.39999999999999991, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1443487271187609, -0.39999999999999991, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3683427764108813, -0.39999999999999991, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6008221459300933, -0.39999999999999991, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler053 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.20000000000000001. +-template +-void test053() ++// Test data for k=-0.39999999999999991, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9973414591826100e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 ++const testcase_ellint_3 ++data054[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data053) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data053[i].k), Tp(data053[i].nu), +- Tp(data053[i].phi)); +- const Tp f0 = data053[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.29999999999999999. +-testcase_ellint_3 data054[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17414781013591543, -0.40000000000000002, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34609415696777285, -0.40000000000000002, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51413131295862546, -0.40000000000000002, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67733527622935630, -0.40000000000000002, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.83558675182733266, -0.40000000000000002, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.98940140808865906, -0.40000000000000002, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1396968797728058, -0.40000000000000002, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2875920037865087, -0.40000000000000002, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17520623975982899, -0.39999999999999991, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35444766141612105, -0.39999999999999991, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54171455841536009, -0.39999999999999991, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74080517001084012, -0.39999999999999991, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.95496950509296563, -0.39999999999999991, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1862627879844718, -0.39999999999999991, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4346501803799458, -0.39999999999999991, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6971744798077697, -0.39999999999999991, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler054 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.29999999999999999. +-template +-void test054() ++// Test data for k=-0.39999999999999991, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2577246923979600e-16 ++// mean(f - f_Boost): 1.8596235662471373e-16 ++// variance(f - f_Boost): 1.6222417021441306e-31 ++// stddev(f - f_Boost): 4.0277061736727151e-16 ++const testcase_ellint_3 ++data055[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data054) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data054[i].k), Tp(data054[i].nu), +- Tp(data054[i].phi)); +- const Tp f0 = data054[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.40000000000000002. +-testcase_ellint_3 data055[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17397362471112710, -0.40000000000000002, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34476864603333196, -0.40000000000000002, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50999329415379357, -0.40000000000000002, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66845674551396017, -0.40000000000000002, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82012848346231748, -0.40000000000000002, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.96582449258349057, -0.40000000000000002, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1068473749476286, -0.40000000000000002, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2447132729159986, -0.40000000000000002, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17538490283034375, -0.39999999999999991, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35591129064319948, -0.39999999999999991, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54684250413264535, -0.39999999999999991, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75355027742668290, -0.39999999999999991, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.98117935026780634, -0.39999999999999991, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2337464222030734, -0.39999999999999991, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5125183419289221, -0.39999999999999991, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8140224451130311, -0.39999999999999991, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler055 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.40000000000000002. +-template +-void test055() ++// Test data for k=-0.39999999999999991, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8009196014748294e-16 ++// mean(f - f_Boost): 1.6375789613221060e-16 ++// variance(f - f_Boost): 6.4788283329186610e-32 ++// stddev(f - f_Boost): 2.5453542647181080e-16 ++const testcase_ellint_3 ++data056[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data055) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data055[i].k), Tp(data055[i].nu), +- Tp(data055[i].phi)); +- const Tp f0 = data055[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.50000000000000000. +-testcase_ellint_3 data056[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17380006262854139, -0.40000000000000002, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34346098216756610, -0.40000000000000002, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50596929935059420, -0.40000000000000002, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65996392089131262, -0.40000000000000002, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.80558463511364786, -0.40000000000000002, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.94397834522857704, -0.40000000000000002, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0768075114108115, -0.40000000000000002, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2059184624251329, -0.40000000000000002, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17556422235224273, -0.39999999999999991, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35739675341763921, -0.39999999999999991, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55214655195037188, -0.39999999999999991, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76709520942047438, -0.39999999999999991, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0100278761577499, -0.39999999999999991, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2882265661384342, -0.39999999999999991, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6059059780051874, -0.39999999999999991, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9600182740224081, -0.39999999999999991, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.3367461373176508, -0.39999999999999991, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler056 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.50000000000000000. +-template +-void test056() ++// Test data for k=-0.39999999999999991, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.8411408870840790e-16 ++// mean(f - f_Boost): 9.7144514654701197e-17 ++// variance(f - f_Boost): 1.4860570558543486e-32 ++// stddev(f - f_Boost): 1.2190393988113545e-16 ++const testcase_ellint_3 ++data057[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data056) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data056[i].k), Tp(data056[i].nu), +- Tp(data056[i].phi)); +- const Tp f0 = data056[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.59999999999999998. +-testcase_ellint_3 data057[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17362711992081248, -0.40000000000000002, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34217074276403953, -0.40000000000000002, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50205389185761617, -0.40000000000000002, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65182834920372745, -0.40000000000000002, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79186512820565136, -0.40000000000000002, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.92365535916287134, -0.40000000000000002, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0491915663957907, -0.40000000000000002, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1705934291745104, -0.40000000000000002, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17574420264267029, -0.39999999999999991, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35890463689046265, -0.39999999999999991, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55763773975194486, -0.39999999999999991, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78153324227761267, -0.39999999999999991, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0420205885765887, -0.39999999999999991, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3517205230381770, -0.39999999999999991, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7210360970313896, -0.39999999999999991, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1500780510169242, -0.39999999999999991, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler057 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.59999999999999998. +-template +-void test057() ++// Test data for k=-0.39999999999999991, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.1553900340611668e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.3242789405258207e-32 ++// stddev(f - f_Boost): 1.1507731924779187e-16 ++const testcase_ellint_3 ++data058[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data057) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data057[i].k), Tp(data057[i].nu), +- Tp(data057[i].phi)); +- const Tp f0 = data057[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.69999999999999996. +-testcase_ellint_3 data058[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17345479265712871, -0.40000000000000002, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34089751955950354, -0.40000000000000002, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49824200167361343, -0.40000000000000002, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64402450341199413, -0.40000000000000002, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77889207804122873, -0.40000000000000002, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.90468169720957992, -0.40000000000000002, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0236847823692916, -0.40000000000000002, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1382465247425164, -0.40000000000000002, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17592484806010436, -0.39999999999999991, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36043555139631439, -0.39999999999999991, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56332813669944881, -0.39999999999999991, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79697424562157548, -0.39999999999999991, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0778155987523672, -0.39999999999999991, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4272018169896268, -0.39999999999999991, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8684377907453380, -0.39999999999999991, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4128677409207469, -0.39999999999999991, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.0327078743873241, -0.39999999999999991, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler058 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.69999999999999996. +-template +-void test058() ++// Test data for k=-0.39999999999999991, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5727642219519274e-16 ++// mean(f - f_Boost): 2.1926904736346843e-16 ++// variance(f - f_Boost): 1.5293405480859847e-31 ++// stddev(f - f_Boost): 3.9106783913868252e-16 ++const testcase_ellint_3 ++data059[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data058) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data058[i].k), Tp(data058[i].nu), +- Tp(data058[i].phi)); +- const Tp f0 = data058[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.80000000000000004. +-testcase_ellint_3 data059[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17328307694277156, -0.40000000000000002, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33964091800132007, -0.40000000000000002, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49452889372467451, -0.40000000000000002, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63652940095937327, -0.40000000000000002, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76659772511159097, -0.40000000000000002, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.88691047977338111, -0.40000000000000002, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0000273200611638, -0.40000000000000002, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1084787902188007, -0.40000000000000002, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17610616300487833, -0.39999999999999991, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36199013167171978, -0.39999999999999991, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56923097361842423, -0.39999999999999991, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81354878456624347, -0.39999999999999991, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1182902719261825, -0.39999999999999991, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5192950589409022, -0.39999999999999991, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0678761710223981, -0.39999999999999991, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.8135222249879783, -0.39999999999999991, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler059 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.80000000000000004. +-template +-void test059() ++// Test data for k=-0.39999999999999991, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.0221626338023938e-16 ++// mean(f - f_Boost): 4.1910919179599658e-16 ++// variance(f - f_Boost): 6.2246150910247033e-31 ++// stddev(f - f_Boost): 7.8896229891070860e-16 ++const testcase_ellint_3 ++data060[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data059) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data059[i].k), Tp(data059[i].nu), +- Tp(data059[i].phi)); +- const Tp f0 = data059[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.90000000000000002. +-testcase_ellint_3 data060[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17311196891868130, -0.40000000000000002, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33840055664911906, -0.40000000000000002, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49091013944075340, -0.40000000000000002, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62932228186809591, -0.40000000000000002, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.75492278323019801, -0.40000000000000002, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.87021659043854294, -0.40000000000000002, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.97800245228239246, -0.40000000000000002, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0809625773173694, -0.40000000000000002, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17628815191971123, -0.39999999999999991, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36356903815378772, -0.39999999999999991, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57536079447000310, -0.39999999999999991, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83141355850172571, -0.39999999999999991, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1646481598721361, -0.39999999999999991, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6357275034001995, -0.39999999999999991, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3628787566572398, -0.39999999999999991, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.5521010369134958, -0.39999999999999991, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler060 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.90000000000000002. +-template +-void test060() ++// Test data for k=-0.29999999999999993, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 4.9960036108132046e-17 ++// variance(f - f_Boost): 4.6872855002064458e-32 ++// stddev(f - f_Boost): 2.1650139722889657e-16 ++const testcase_ellint_3 ++data061[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data060) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data060[i].k), Tp(data060[i].nu), +- Tp(data060[i].phi)); +- const Tp f0 = data060[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data061[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17461228653000102, -0.30000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34969146102798415, -0.30000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52565822873726320, -0.30000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70284226512408532, -0.30000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88144139195111182, -0.30000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0614897067260523, -0.30000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2428416824174218, -0.30000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4251795877015925, -0.30000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6080486199305126, -0.30000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17461228653000099, -0.29999999999999993, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34969146102798421, -0.29999999999999993, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52565822873726309, -0.29999999999999993, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70284226512408543, -0.29999999999999993, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88144139195111171, -0.29999999999999993, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0614897067260520, -0.29999999999999993, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2428416824174220, -0.29999999999999993, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4251795877015929, -0.29999999999999993, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6080486199305126, -0.29999999999999993, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler061 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.0000000000000000. +-template +-void test061() ++// Test data for k=-0.29999999999999993, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 4.0359883022230488e-32 ++// stddev(f - f_Boost): 2.0089769292411121e-16 ++const testcase_ellint_3 ++data062[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data061) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data061[i].k), Tp(data061[i].nu), +- Tp(data061[i].phi)); +- const Tp f0 = data061[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data062[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17443631884814378, -0.30000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34831316835124926, -0.30000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52116586276523857, -0.30000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69269385837910036, -0.30000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86279023163070856, -0.30000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0315321461438265, -0.30000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1991449111869024, -0.30000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3659561780923211, -0.30000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5323534693557526, -0.30000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17478889331392972, -0.29999999999999993, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35108939018329183, -0.29999999999999993, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53028990896115835, -0.29999999999999993, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71352417052371409, -0.29999999999999993, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90153086032405894, -0.29999999999999993, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0945187977283313, -0.29999999999999993, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2920699268385680, -0.29999999999999993, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4931243665896394, -0.29999999999999993, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler062 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.10000000000000001. +-template +-void test062() ++// Test data for k=-0.29999999999999993, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 3.8043060629871325e-32 ++// stddev(f - f_Boost): 1.9504630380981672e-16 ++const testcase_ellint_3 ++data063[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data062) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data062[i].k), Tp(data062[i].nu), +- Tp(data062[i].phi)); +- const Tp f0 = data062[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data063[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17426098615372090, -0.30000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34695402664689923, -0.30000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51680555567038933, -0.30000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68303375225260210, -0.30000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84540662891295026, -0.30000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0041834051646927, -0.30000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1599952702345711, -0.30000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3137179520499163, -0.30000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4663658145259875, -0.30000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17496614335337535, -0.29999999999999993, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35250745937139372, -0.29999999999999993, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53506875002836884, -0.29999999999999993, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72479106622248191, -0.29999999999999993, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.92326451535891607, -0.29999999999999993, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1312092060698349, -0.29999999999999993, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3481473154592321, -0.29999999999999993, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5722049569662748, -0.29999999999999993, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8002173372290498, -0.29999999999999993, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler063 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.20000000000000001. +-template +-void test063() ++// Test data for k=-0.29999999999999993, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 ++const testcase_ellint_3 ++data064[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data063) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data063[i].k), Tp(data063[i].nu), +- Tp(data063[i].phi)); +- const Tp f0 = data063[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data064[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17408628437042845, -0.30000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34561356761638401, -0.30000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51257058617875850, -0.30000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67382207124602866, -0.30000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82914751587825131, -0.30000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97907434814374950, -0.30000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1246399297351584, -0.30000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2671793970398146, -0.30000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4081767433479089, -0.30000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17514404084107435, -0.29999999999999993, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35394619108645647, -0.29999999999999993, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54000325463372689, -0.29999999999999993, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73670193794067651, -0.29999999999999993, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94689345491722177, -0.29999999999999993, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1723274608389140, -0.29999999999999993, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4128880552936287, -0.29999999999999993, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6659010047449661, -0.29999999999999993, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler064 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.29999999999999999. +-template +-void test064() ++// Test data for k=-0.29999999999999993, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 ++const testcase_ellint_3 ++data065[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data064) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data064[i].k), Tp(data064[i].nu), +- Tp(data064[i].phi)); +- const Tp f0 = data064[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data065[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17391220945982730, -0.30000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34429133937639689, -0.30000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50845471668581632, -0.30000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66502347027873854, -0.30000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.81389191978012254, -0.30000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.95590618002140593, -0.30000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0924915195213121, -0.30000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2253651604038058, -0.30000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3563643538969761, -0.30000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17532259000954434, -0.29999999999999993, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35540612770983693, -0.29999999999999993, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54510265552938919, -0.29999999999999993, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74932476310965057, -0.29999999999999993, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.97272793583093109, -0.29999999999999993, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2188928987074241, -0.29999999999999993, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4888771674085941, -0.29999999999999993, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7794558498219191, -0.29999999999999993, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0822121773175528, -0.29999999999999993, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler065 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.40000000000000002. +-template +-void test065() ++// Test data for k=-0.29999999999999993, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 ++const testcase_ellint_3 ++data066[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data065) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data065[i].k), Tp(data065[i].nu), +- Tp(data065[i].phi)); +- const Tp f0 = data065[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data066[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17373875742088235, -0.30000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34298690571124157, -0.30000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50445214859646936, -0.30000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65660648352418516, -0.30000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79953670639287289, -0.30000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.93443393926588558, -0.30000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0630838369016911, -0.30000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1875197325653026, -0.30000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3098448759814960, -0.30000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17550179513158179, -0.29999999999999993, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35688783251681200, -0.29999999999999993, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55037700010142798, -0.29999999999999993, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76273839789895992, -0.29999999999999993, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0011570518830419, -0.29999999999999993, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2722987414055109, -0.29999999999999993, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5799590511080066, -0.29999999999999993, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9212367220124293, -0.29999999999999993, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler066 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.50000000000000000. +-template +-void test066() ++// Test data for k=-0.29999999999999993, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 ++const testcase_ellint_3 ++data067[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data066) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data066[i].k), Tp(data066[i].nu), +- Tp(data066[i].phi)); +- const Tp f0 = data066[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data067[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17356592428950826, -0.30000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34169984536697379, -0.30000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50055748266498457, -0.30000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64854298527106768, -0.30000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78599329284207431, -0.30000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.91445452089128221, -0.30000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0360412952290587, -0.30000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1530473919778639, -0.30000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2677758800420666, -0.30000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17568166052076745, -0.29999999999999993, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35839189074731181, -0.29999999999999993, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55583724744367558, -0.29999999999999993, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77703498090888223, -0.29999999999999993, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0326772113675962, -0.29999999999999993, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3345139983717369, -0.29999999999999993, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6921742922838403, -0.29999999999999993, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1056608968472186, -0.29999999999999993, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5560975528589061, -0.29999999999999993, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler067 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.59999999999999998. +-template +-void test067() ++// Test data for k=-0.29999999999999993, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 1.6653345369377348e-16 ++// variance(f - f_Boost): 3.1994213989721786e-31 ++// stddev(f - f_Boost): 5.6563428104846852e-16 ++const testcase_ellint_3 ++data068[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data067) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data067[i].k), Tp(data067[i].nu), +- Tp(data067[i].phi)); +- const Tp f0 = data067[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data068[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17339370613812227, -0.30000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34042975138455933, -0.30000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49676568368075985, -0.30000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64080774055753720, -0.30000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77318507779667278, -0.30000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.89579782346548631, -0.30000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0110573286052202, -0.30000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1214710972949633, -0.30000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2294913236274980, -0.30000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17586219053197988, -0.29999999999999993, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35991891074557669, -0.29999999999999993, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56149538019961731, -0.29999999999999993, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79232303189667685, -0.29999999999999993, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0679345542878826, -0.29999999999999993, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4084400085913955, -0.29999999999999993, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8357382859296454, -0.29999999999999993, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3604197996171519, -0.29999999999999993, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9562123549913872, -0.29999999999999993, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler068 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.69999999999999996. +-template +-void test068() ++// Test data for k=-0.29999999999999993, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 ++const testcase_ellint_3 ++data069[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data068) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data068[i].k), Tp(data068[i].nu), +- Tp(data068[i].phi)); +- const Tp f0 = data068[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data069[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17322209907520361, -0.30000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33917623046949996, -0.30000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49307204894329176, -0.30000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63337802830291723, -0.30000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76104540997689407, -0.30000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87832009635450736, -0.30000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.98787879723171790, -0.30000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0924036340069336, -0.30000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1944567571590046, -0.30000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17604338956191670, -0.29999999999999993, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36146952517410791, -0.29999999999999993, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56736453393774644, -0.29999999999999993, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80873149979001091, -0.29999999999999993, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1077903069860620, -0.29999999999999993, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4985874311132998, -0.29999999999999993, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0298167266724954, -0.29999999999999993, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7483929054985432, -0.29999999999999993, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler069 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.80000000000000004. +-template +-void test069() ++// Test data for k=-0.29999999999999993, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 ++const testcase_ellint_3 ++data070[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data069) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data069[i].k), Tp(data069[i].nu), +- Tp(data069[i].phi)); +- const Tp f0 = data069[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data070[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17305109924485948, -0.30000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33793890239556984, -0.30000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48947218005089738, -0.30000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62623332340775151, -0.30000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74951596581511148, -0.30000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.86189886597756005, -0.30000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.96629451153092005, -0.30000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0655269133492680, -0.30000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1622376896064912, -0.30000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17622526204962433, -0.29999999999999993, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36304439230777141, -0.29999999999999993, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57345914744719195, -0.29999999999999993, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82641512928845162, -0.29999999999999993, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1534256210757743, -0.29999999999999993, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6124900353411677, -0.29999999999999993, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3165905514845089, -0.29999999999999993, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4625619526539824, -0.29999999999999993, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.1479514944016787, -0.29999999999999993, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler070 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.90000000000000002. +-template +-void test070() ++// Test data for k=-0.19999999999999996, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 ++const testcase_ellint_3 ++data071[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data070) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data070[i].k), Tp(data070[i].nu), +- Tp(data070[i].phi)); +- const Tp f0 = data070[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data071[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17456817290292811, -0.19999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34934315932086801, -0.19999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70020491009844910, -0.19999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87651006649967955, -0.19999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2308975521670784, -0.19999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5868678474541664, -0.19999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17456817290292806, -0.19999999999999996, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34934315932086796, -0.19999999999999996, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70020491009844887, -0.19999999999999996, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87651006649967977, -0.19999999999999996, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2308975521670789, -0.19999999999999996, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler071 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.0000000000000000. +-template +-void test071() ++// Test data for k=-0.19999999999999996, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 ++const testcase_ellint_3 ++data072[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data071) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data071[i].k), Tp(data071[i].nu), +- Tp(data071[i].phi)); +- const Tp f0 = data071[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data072[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17439228502691750, -0.19999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34796731137565740, -0.19999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52003370294544848, -0.19999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69012222258631495, -0.19999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85803491465566772, -0.19999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0238463961099364, -0.19999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1878691059202153, -0.19999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3505985031831940, -0.19999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5126513474261092, -0.19999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17474469953608965, -0.19999999999999996, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35073860234984255, -0.19999999999999996, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52912258712951521, -0.19999999999999996, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71081701558898069, -0.19999999999999996, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89640758521169384, -0.19999999999999996, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0860417038089853, -0.19999999999999996, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2793599255528623, -0.19999999999999996, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4754938544089076, -0.19999999999999996, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler072 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.10000000000000001. +-template +-void test072() ++// Test data for k=-0.19999999999999996, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 ++const testcase_ellint_3 ++data073[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data072) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data072[i].k), Tp(data072[i].nu), +- Tp(data072[i].phi)); +- const Tp f0 = data072[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data073[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17421703179583750, -0.19999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34661057411998791, -0.19999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51569006052647393, -0.19999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68052412821107278, -0.19999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84081341263313825, -0.19999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99683359988842890, -0.19999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1493086715118852, -0.19999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2992699693957541, -0.19999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4479323932249568, -0.19999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17492186907740698, -0.19999999999999996, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35215414286134267, -0.19999999999999996, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53388285615182440, -0.19999999999999996, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72200960282688265, -0.19999999999999996, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91793087614428526, -0.19999999999999996, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1222602841587976, -0.19999999999999996, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3345489407496247, -0.19999999999999996, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5531225705475502, -0.19999999999999996, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler073 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.20000000000000001. +-template +-void test073() ++// Test data for k=-0.19999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 ++const testcase_ellint_3 ++data074[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data073) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data073[i].k), Tp(data073[i].nu), +- Tp(data073[i].phi)); +- const Tp f0 = data073[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data074[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17404240913577707, -0.19999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34527248032587193, -0.19999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51147118981668416, -0.19999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67137107867777635, -0.19999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82470418188668893, -0.19999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97202873223594299, -0.19999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1144773569375266, -0.19999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2535292433701000, -0.19999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3908453514752481, -0.19999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17509968571715159, -0.19999999999999996, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35359030214835629, -0.19999999999999996, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53879807274537084, -0.19999999999999996, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73384116418059731, -0.19999999999999996, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94132799329524031, -0.19999999999999996, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1628407021801439, -0.19999999999999996, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3982440216739438, -0.19999999999999996, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6450634983653640, -0.19999999999999996, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8983924169967099, -0.19999999999999996, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler074 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.29999999999999999. +-template +-void test074() ++// Test data for k=-0.19999999999999996, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3298410018355870e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 9.4370567274974557e-32 ++// stddev(f - f_Boost): 3.0719792850046133e-16 ++const testcase_ellint_3 ++data075[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data074) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data074[i].k), Tp(data074[i].nu), +- Tp(data074[i].phi)); +- const Tp f0 = data074[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data075[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17386841301066677, -0.19999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34395257914113253, -0.19999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50737088376869466, -0.19999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66262801717277664, -0.19999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80958766645079094, -0.19999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94913754236162040, -0.19999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0827985514223000, -0.19999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2124212429050478, -0.19999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3400002519661010, -0.19999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17527815368535152, -0.19999999999999996, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35504762134297801, -0.19999999999999996, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54387742353211344, -0.19999999999999996, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74637910471804259, -0.19999999999999996, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96690539714174639, -0.19999999999999996, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2087859420184757, -0.19999999999999996, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4729799844168852, -0.19999999999999996, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7564445064596661, -0.19999999999999996, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0512956926676802, -0.19999999999999996, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler075 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.40000000000000002. +-template +-void test075() ++// Test data for k=-0.19999999999999996, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 8.0538110429953348e-32 ++// stddev(f - f_Boost): 2.8379237204328335e-16 ++const testcase_ellint_3 ++data076[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data075) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data075[i].k), Tp(data075[i].nu), +- Tp(data075[i].phi)); +- const Tp f0 = data075[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data076[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17369503942181802, -0.19999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34265043534362660, -0.19999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50338337208655415, -0.19999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65426373297163642, -0.19999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79536193036145808, -0.19999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92791875910061605, -0.19999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0538145052725829, -0.19999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1752060022875899, -0.19999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2943374404397376, -0.19999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17545727725228877, -0.19999999999999996, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35652666242062175, -0.19999999999999996, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54913090549102406, -0.19999999999999996, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75970161209211551, -0.19999999999999996, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99504737401590326, -0.19999999999999996, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2614666007124373, -0.19999999999999996, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5625255355205496, -0.19999999999999996, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8954460255613343, -0.19999999999999996, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler076 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.50000000000000000. +-template +-void test076() ++// Test data for k=-0.19999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 ++const testcase_ellint_3 ++data077[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data076) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data076[i].k), Tp(data076[i].nu), +- Tp(data076[i].phi)); +- const Tp f0 = data076[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data077[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17352228440746928, -0.19999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34136562863713626, -0.19999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49950328177638481, -0.19999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64625032705690832, -0.19999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78193941198403094, -0.19999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90817230934317128, -0.19999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0271563751276462, -0.19999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1412999379040518, -0.19999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2530330675914561, -0.19999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17563706072900442, -0.19999999999999996, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35802800926807238, -0.19999999999999996, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55456942250515051, -0.19999999999999996, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77390003828438203, -0.19999999999999996, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0262441366366397, -0.19999999999999996, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3228192988439669, -0.19999999999999996, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6728005754680795, -0.19999999999999996, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0761587107468511, -0.19999999999999996, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler077 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.59999999999999998. +-template +-void test077() ++// Test data for k=-0.19999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1818454249546518e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 ++const testcase_ellint_3 ++data078[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data077) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data077[i].k), Tp(data077[i].nu), +- Tp(data077[i].phi)); +- const Tp f0 = data077[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data078[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17335014404233898, -0.19999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34009775298617811, -0.19999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49572560201923810, -0.19999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63856276669886525, -0.19999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76924438644867565, -0.19999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88973060843856466, -0.19999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0025230471636377, -0.19999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1102356376093103, -0.19999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2154356555075867, -0.19999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17581750846781172, -0.19999999999999996, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35955226882028513, -0.19999999999999996, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56020489659466499, -0.19999999999999996, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78908196988531487, -0.19999999999999996, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0611336754143517, -0.19999999999999996, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3956969951058884, -0.19999999999999996, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8138131612209609, -0.19999999999999996, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3256365528879561, -0.19999999999999996, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9058704854500963, -0.19999999999999996, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler078 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.69999999999999996. +-template +-void test078() ++// Test data for k=-0.19999999999999996, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9866614515542431e-16 ++// mean(f - f_Boost): 1.8318679906315082e-16 ++// variance(f - f_Boost): 3.1335688610218711e-31 ++// stddev(f - f_Boost): 5.5978289193417400e-16 ++const testcase_ellint_3 ++data079[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data078) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data078[i].k), Tp(data078[i].nu), +- Tp(data078[i].phi)); +- const Tp f0 = data078[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data079[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17317861443718541, -0.19999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33884641598718701, -0.19999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49204565281259494, -0.19999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63117851188220353, -0.19999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75721095949544170, -0.19999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87245201443919118, -0.19999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97966584238831089, -0.19999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0816336325174360, -0.19999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1810223448909913, -0.19999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17599862486281712, -0.19999999999999996, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36110007227128776, -0.19999999999999996, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56605039658567224, -0.19999999999999996, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80537523874517691, -0.19999999999999996, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1005662342414086, -0.19999999999999996, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4845340298105778, -0.19999999999999996, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0043332244969392, -0.19999999999999996, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7052856676744761, -0.19999999999999996, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5622166386422629, -0.19999999999999996, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler079 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.80000000000000004. +-template +-void test079() ++// Test data for k=-0.19999999999999996, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2817178727913890e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 6.6311432369155086e-31 ++// stddev(f - f_Boost): 8.1431831840598485e-16 ++const testcase_ellint_3 ++data080[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data079) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data079[i].k), Tp(data079[i].nu), +- Tp(data079[i].phi)); +- const Tp f0 = data079[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data080[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17300769173837280, -0.19999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33761123827372508, -0.19999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48845905690769426, -0.19999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62407720017324986, -0.19999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74578146525124289, -0.19999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85621583540073076, -0.19999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95837725988001199, -0.19999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0551821412633928, -0.19999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1493679916141863, -0.19999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17618041435044951, -0.19999999999999996, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36267207636502929, -0.19999999999999996, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57212028758237743, -0.19999999999999996, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82293323876704483, -0.19999999999999996, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1457077279880385, -0.19999999999999996, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5967346899325681, -0.19999999999999996, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2856537353421724, -0.19999999999999996, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4034714304613902, -0.19999999999999996, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.0448269356200361, -0.19999999999999996, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler080 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.90000000000000002. +-template +-void test080() ++// Test data for k=-0.099999999999999978, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 8.2258607846939269e-33 ++// stddev(f - f_Boost): 9.0696531271564778e-17 ++const testcase_ellint_3 ++data081[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data080) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data080[i].k), Tp(data080[i].nu), +- Tp(data080[i].phi)); +- const Tp f0 = data080[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.0000000000000000. +-testcase_ellint_3 data081[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17454173353063665, -0.099999999999999978, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34913506721468085, -0.099999999999999978, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.69864700854177031, -0.099999999999999978, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87361792586964870, -0.099999999999999978, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2239913752078757, -0.099999999999999978, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.3993423113684049, -0.099999999999999978, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17454173353063662, -0.099999999999999978, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34913506721468096, -0.099999999999999978, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.69864700854177020, -0.099999999999999978, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87361792586964859, -0.099999999999999978, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2239913752078759, -0.099999999999999978, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.3993423113684051, -0.099999999999999978, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5747455615173558, -0.099999999999999978, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler081 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.0000000000000000. +-template +-void test081() ++// Test data for k=-0.099999999999999978, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 ++const testcase_ellint_3 ++data082[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data081) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data081[i].k), Tp(data081[i].nu), +- Tp(data081[i].phi)); +- const Tp f0 = data081[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.10000000000000001. +-testcase_ellint_3 data082[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17436589347616618, -0.099999999999999978, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34776067871237354, -0.099999999999999978, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.51936064354727807, -0.099999999999999978, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.68860303749364360, -0.099999999999999978, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85524561882332051, -0.099999999999999978, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0193708301908337, -0.099999999999999978, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1813474067123044, -0.099999999999999978, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3417670770424983, -0.099999999999999978, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17471821213559732, -0.099999999999999978, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35052902610011138, -0.099999999999999978, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52842865990255727, -0.099999999999999978, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.70921799731166713, -0.099999999999999978, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89340330535868662, -0.099999999999999978, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0811075784236857, -0.099999999999999978, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2720133232666426, -0.099999999999999978, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4653630031861395, -0.099999999999999978, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler082 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.10000000000000001. +-template +-void test082() ++// Test data for k=-0.099999999999999978, nu=0.20000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 ++const testcase_ellint_3 ++data083[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data082) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data082[i].k), Tp(data082[i].nu), +- Tp(data082[i].phi)); +- const Tp f0 = data082[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.20000000000000001. +-testcase_ellint_3 data083[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17419068786141345, -0.099999999999999978, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34640537686230127, -0.099999999999999978, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51502689171753957, -0.099999999999999978, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.67904147863672726, -0.099999999999999978, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.83811885126105179, -0.099999999999999978, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99255278555742810, -0.099999999999999978, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1431260546194930, -0.099999999999999978, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2909589656532101, -0.099999999999999978, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17489533344059083, -0.099999999999999978, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35194305707815038, -0.099999999999999978, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53317790741512527, -0.099999999999999978, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72036681615081222, -0.099999999999999978, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91480372268244303, -0.099999999999999978, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1170528708071514, -0.099999999999999978, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3266916802718358, -0.099999999999999978, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5421622241831547, -0.099999999999999978, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler083 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.20000000000000001. +-template +-void test083() ++// Test data for k=-0.099999999999999978, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 ++const testcase_ellint_3 ++data084[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data083) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data083[i].k), Tp(data083[i].nu), +- Tp(data083[i].phi)); +- const Tp f0 = data083[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.29999999999999999. +-testcase_ellint_3 data084[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17401611261390110, -0.099999999999999978, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34506869507511767, -0.099999999999999978, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51081757604259870, -0.099999999999999978, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.66992297597712303, -0.099999999999999978, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82209722856174228, -0.099999999999999978, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.96792430487669612, -0.099999999999999978, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1085964108954092, -0.099999999999999978, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2456748370836999, -0.099999999999999978, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17507310163441189, -0.099999999999999978, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35337768072524217, -0.099999999999999978, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53808167801629170, -0.099999999999999978, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73215166755955019, -0.099999999999999978, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.93806546000201219, -0.099999999999999978, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1573218723395986, -0.099999999999999978, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3897859679542097, -0.099999999999999978, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6331009404328622, -0.099999999999999978, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler084 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.29999999999999999. +-template +-void test084() ++// Test data for k=-0.099999999999999978, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 ++const testcase_ellint_3 ++data085[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data084) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data084[i].k), Tp(data084[i].nu), +- Tp(data084[i].phi)); +- const Tp f0 = data084[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.40000000000000002. +-testcase_ellint_3 data085[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17384216369897937, -0.099999999999999978, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34375018311376782, -0.099999999999999978, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50672650758380455, -0.099999999999999978, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66121264213337616, -0.099999999999999978, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80706202005774441, -0.099999999999999978, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94519376138245892, -0.099999999999999978, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0771880300759584, -0.099999999999999978, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2049711557188272, -0.099999999999999978, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17525152094559704, -0.099999999999999978, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35483343742825979, -0.099999999999999978, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54314913099505446, -0.099999999999999978, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74463962034766862, -0.099999999999999978, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96349276837570441, -0.099999999999999978, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2029081382746343, -0.099999999999999978, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4638022887050806, -0.099999999999999978, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7432413830105224, -0.099999999999999978, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler085 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.40000000000000002. +-template +-void test085() ++// Test data for k=-0.099999999999999978, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 ++const testcase_ellint_3 ++data086[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data085) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data085[i].k), Tp(data085[i].nu), +- Tp(data085[i].phi)); +- const Tp f0 = data085[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.50000000000000000. +-testcase_ellint_3 data086[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17366883711936554, -0.099999999999999978, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34244940634881876, -0.099999999999999978, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50274793281634378, -0.099999999999999978, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65287941633275093, -0.099999999999999978, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79291198790315398, -0.099999999999999978, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92412201537880345, -0.099999999999999978, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0484480076799370, -0.099999999999999978, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1681168130475206, -0.099999999999999978, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17543059564292182, -0.099999999999999978, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35631088838721664, -0.099999999999999978, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54839023346436444, -0.099999999999999978, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75790846946088830, -0.099999999999999978, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99146713686720678, -0.099999999999999978, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2551692247937198, -0.099999999999999978, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5524660788146873, -0.099999999999999978, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8806578570830670, -0.099999999999999978, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler086 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.50000000000000000. +-template +-void test086() ++// Test data for k=-0.099999999999999978, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 ++const testcase_ellint_3 ++data087[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data086) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data086[i].k), Tp(data086[i].nu), +- Tp(data086[i].phi)); +- const Tp f0 = data086[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.59999999999999998. +-testcase_ellint_3 data087[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17349612891469018, -0.099999999999999978, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34116594505539438, -0.099999999999999978, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49887649430466685, -0.099999999999999978, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64489553282165157, -0.099999999999999978, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.77956016553782437, -0.099999999999999978, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90451074530096309, -0.099999999999999978, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0220113666961632, -0.099999999999999978, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1345351441065563, -0.099999999999999978, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17561033003590576, -0.099999999999999978, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35781061668171932, -0.099999999999999978, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55381585659629196, -0.099999999999999978, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77204910484575640, -0.099999999999999978, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0224751740393108, -0.099999999999999978, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3160230906351114, -0.099999999999999978, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6616282844233206, -0.099999999999999978, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0592555664850392, -0.099999999999999978, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.4913004919173822, -0.099999999999999978, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler087 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.59999999999999998. +-template +-void test087() ++// Test data for k=-0.099999999999999978, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data088[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data087) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data087[i].k), Tp(data087[i].nu), +- Tp(data087[i].phi)); +- const Tp f0 = data087[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.69999999999999996. +-testcase_ellint_3 data088[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17332403516105052, -0.099999999999999978, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.33989939374896877, -0.099999999999999978, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49510719568614081, -0.099999999999999978, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63723607776354974, -0.099999999999999978, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76693133887935327, -0.099999999999999978, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88619382078823827, -0.099999999999999978, 0.69999999999999996, +- 1.0471975511965976 }, +- { 0.99758012018676490, -0.099999999999999978, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1037642270814410, -0.099999999999999978, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2073745911083187, -0.099999999999999978, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17579072847532518, -0.099999999999999978, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35933322840606297, -0.099999999999999978, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.55943788649460324, -0.099999999999999978, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78716856504031707, -0.099999999999999978, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0571501305617423, -0.099999999999999978, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3882948301743525, -0.099999999999999978, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8011785680114223, -0.099999999999999978, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3057268183616464, -0.099999999999999978, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.8771910188009739, -0.099999999999999978, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler088 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.69999999999999996. +-template +-void test088() ++// Test data for k=-0.099999999999999978, nu=0.80000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 ++const testcase_ellint_3 ++data089[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data088) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data088[i].k), Tp(data088[i].nu), +- Tp(data088[i].phi)); +- const Tp f0 = data088[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.80000000000000004. +-testcase_ellint_3 data089[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17315255197057020, -0.099999999999999978, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33864936055747985, -0.099999999999999978, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49143537041117619, -0.099999999999999978, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.62987861760047492, -0.099999999999999978, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75496005490917517, -0.099999999999999978, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.86903081862701903, -0.099999999999999978, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97490814820725591, -0.099999999999999978, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0754290107171083, -0.099999999999999978, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17597179535373417, -0.099999999999999978, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36087935387831499, -0.099999999999999978, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56526935244526444, -0.099999999999999978, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80339402590612397, -0.099999999999999978, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.0963358646374459, -0.099999999999999978, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4763748483246868, -0.099999999999999978, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 1.9896610222794102, -0.099999999999999978, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.6806423920122024, -0.099999999999999978, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5246199613295612, -0.099999999999999978, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler089 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.80000000000000004. +-template +-void test089() ++// Test data for k=-0.099999999999999978, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 ++const testcase_ellint_3 ++data090[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data089) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data089[i].k), Tp(data089[i].nu), +- Tp(data089[i].phi)); +- const Tp f0 = data089[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.90000000000000002. +-testcase_ellint_3 data090[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17298167549096569, -0.099999999999999978, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33741546662741584, -0.099999999999999978, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48785665376856879, -0.099999999999999978, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62280288554518959, -0.099999999999999978, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74358903115455199, -0.099999999999999978, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85290207679298358, -0.099999999999999978, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95379006645397379, -0.099999999999999978, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0492213119872327, -0.099999999999999978, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17615353510599349, -0.099999999999999978, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36244964892922371, -0.099999999999999978, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57132457590110530, -0.099999999999999978, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82087808820385000, -0.099999999999999978, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1411894342144451, -0.099999999999999978, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5875929286844597, -0.099999999999999978, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2678622986596659, -0.099999999999999978, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.3697528941897903, -0.099999999999999978, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 4.9862890417305499, -0.099999999999999978, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler090 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.90000000000000002. +-template +-void test090() ++// Test data for k=0.0000000000000000, nu=0.0000000000000000. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1203697876423447e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data091[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data090) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data090[i].k), Tp(data090[i].nu), +- Tp(data090[i].phi)); +- const Tp f0 = data090[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.0000000000000000. +-testcase_ellint_3 data091[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34906585039886584, 0.0000000000000000, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2217304763960304, 0.0000000000000000, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.3962634015954631, 0.0000000000000000, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34906585039886590, 0.0000000000000000, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2217304763960306, 0.0000000000000000, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.3962634015954636, 0.0000000000000000, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler091 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.0000000000000000. +-template +-void test091() ++// Test data for k=0.0000000000000000, nu=0.10000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1019052604815601e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 9.5107651574678312e-37 ++// stddev(f - f_Boost): 9.7523151904908366e-19 ++const testcase_ellint_3 ++data092[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data091) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data091[i].k), Tp(data091[i].nu), +- Tp(data091[i].phi)); +- const Tp f0 = data091[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.10000000000000001. +-testcase_ellint_3 data092[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17435710107516608, 0.0000000000000000, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34769194715329604, 0.0000000000000000, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.51913731575866118, 0.0000000000000000, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.68810051897078461, 0.0000000000000000, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85432615661706823, 0.0000000000000000, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0179006647340796, 0.0000000000000000, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1792120640746322, 0.0000000000000000, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3388834245070498, 0.0000000000000000, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17470938780535167, 0.0000000000000000, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35045931581655582, 0.0000000000000000, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52819841383849875, 0.0000000000000000, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.70868910807992958, 0.0000000000000000, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89241311307249638, 0.0000000000000000, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0794871444666669, 0.0000000000000000, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2696086247356864, 0.0000000000000000, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4620562617494721, 0.0000000000000000, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6557647109660167, 0.0000000000000000, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler092 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.10000000000000001. +-template +-void test092() ++// Test data for k=0.0000000000000000, nu=0.20000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0831888697465320e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data093[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data092) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data092[i].k), Tp(data092[i].nu), +- Tp(data092[i].phi)); +- const Tp f0 = data092[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.20000000000000001. +-testcase_ellint_3 data093[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17418191132226077, 0.0000000000000000, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34633712256943405, 0.0000000000000000, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51480684302043711, 0.0000000000000000, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.67855102942481949, 0.0000000000000000, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.83723056090326253, 0.0000000000000000, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99114645269578183, 0.0000000000000000, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1411014627915537, 0.0000000000000000, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2882448138013969, 0.0000000000000000, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17488649304197776, 0.0000000000000000, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35187284488675424, 0.0000000000000000, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53294400750146131, 0.0000000000000000, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.71982347021822823, 0.0000000000000000, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91377311030258745, 0.0000000000000000, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1153429007215137, 0.0000000000000000, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3241202847784086, 0.0000000000000000, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5385854914338242, 0.0000000000000000, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7562036827601815, 0.0000000000000000, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler093 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.20000000000000001. +-template +-void test093() ++// Test data for k=0.0000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0642101770923591e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data094[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data093) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data093[i].k), Tp(data093[i].nu), +- Tp(data093[i].phi)); +- const Tp f0 = data093[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.29999999999999999. +-testcase_ellint_3 data094[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17400735186871727, 0.0000000000000000, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34500091027020219, 0.0000000000000000, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51060069523901541, 0.0000000000000000, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.66944393961375459, 0.0000000000000000, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82123776744538157, 0.0000000000000000, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.96657579245516523, 0.0000000000000000, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1066703663542414, 0.0000000000000000, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2431094251944901, 0.0000000000000000, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17506424509761404, 0.0000000000000000, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35330695794774630, 0.0000000000000000, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53784398359522367, 0.0000000000000000, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73159289408687844, 0.0000000000000000, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.93699031797084975, 0.0000000000000000, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1555098909390267, 0.0000000000000000, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3870184960144325, 0.0000000000000000, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6291980835772994, 0.0000000000000000, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler094 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.29999999999999999. +-template +-void test094() ++// Test data for k=0.0000000000000000, nu=0.40000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0449580089795878e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data095[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data094) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data094[i].k), Tp(data094[i].nu), +- Tp(data094[i].phi)); +- const Tp f0 = data094[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.40000000000000002. +-testcase_ellint_3 data095[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17383341868035865, 0.0000000000000000, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34368286022299821, 0.0000000000000000, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50651268947499406, 0.0000000000000000, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66074441806097550, 0.0000000000000000, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80622931670113485, 0.0000000000000000, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94389791565435233, 0.0000000000000000, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0753503387899728, 0.0000000000000000, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2025374759127518, 0.0000000000000000, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3275651989026322, 0.0000000000000000, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17524264820030025, 0.0000000000000000, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35476219513871499, 0.0000000000000000, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54290749235440094, 0.0000000000000000, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74406433757109913, 0.0000000000000000, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96236826162553313, 0.0000000000000000, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2009785880262487, 0.0000000000000000, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4608000106167567, 0.0000000000000000, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7389349574753439, 0.0000000000000000, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0278893379868057, 0.0000000000000000, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler095 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.40000000000000002. +-template +-void test095() ++// Test data for k=0.0000000000000000, nu=0.50000000000000000. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0254203825026289e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data096[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data095) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data095[i].k), Tp(data095[i].nu), +- Tp(data095[i].phi)); +- const Tp f0 = data095[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.50000000000000000. +-testcase_ellint_3 data096[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17366010776037047, 0.0000000000000000, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34238253799539309, 0.0000000000000000, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50253707775976408, 0.0000000000000000, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65242145347295766, 0.0000000000000000, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79210420018698058, 0.0000000000000000, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92287437995632193, 0.0000000000000000, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0466900550798661, 0.0000000000000000, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1658007366618623, 0.0000000000000000, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17542170661831016, 0.0000000000000000, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35623911740195419, 0.0000000000000000, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54814449099863127, 0.0000000000000000, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75731546607718081, 0.0000000000000000, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99028751188233310, 0.0000000000000000, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2531022857760581, 0.0000000000000000, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5491761777615785, 0.0000000000000000, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8758359693666533, 0.0000000000000000, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler096 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.50000000000000000. +-template +-void test096() ++// Test data for k=0.0000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1742785192400269e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 2.3776912893669577e-35 ++// stddev(f - f_Boost): 4.8761575952454181e-18 ++const testcase_ellint_3 ++data097[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data096) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data096[i].k), Tp(data096[i].nu), +- Tp(data096[i].phi)); +- const Tp f0 = data096[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.59999999999999998. +-testcase_ellint_3 data097[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17348741514884702, 0.0000000000000000, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34109952405241289, 0.0000000000000000, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49866850781226296, 0.0000000000000000, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64444732407062510, 0.0000000000000000, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.77877564686544720, 0.0000000000000000, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90330743691883497, 0.0000000000000000, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0203257987604104, 0.0000000000000000, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1323247918768631, 0.0000000000000000, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17560142466065651, 0.0000000000000000, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35773830754879005, 0.0000000000000000, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55356583986445973, 0.0000000000000000, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77143701715151514, 0.0000000000000000, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0212334940541210, 0.0000000000000000, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3137928444460387, 0.0000000000000000, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6579755004159076, 0.0000000000000000, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0537461418295506, 0.0000000000000000, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.4836470664490253, 0.0000000000000000, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler097 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.59999999999999998. +-template +-void test097() ++// Test data for k=0.0000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 4 ++// max(|f - f_Boost| / |f_Boost|): 3.0903019454022601e-16 ++// mean(f - f_Boost): -6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 ++const testcase_ellint_3 ++data098[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data097) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data097[i].k), Tp(data097[i].nu), +- Tp(data097[i].phi)); +- const Tp f0 = data097[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.69999999999999996. +-testcase_ellint_3 data098[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17331533692234477, 0.0000000000000000, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.33983341309265941, 0.0000000000000000, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49490198805931990, 0.0000000000000000, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63679715525145308, 0.0000000000000000, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76616861049481944, 0.0000000000000000, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88503143209004220, 0.0000000000000000, 0.69999999999999996, +- 1.0471975511965976 }, +- { 0.99596060249112173, 0.0000000000000000, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1016495050260424, 0.0000000000000000, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17578180667760368, 0.0000000000000000, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35926037139410999, 0.0000000000000000, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.55918341315855080, 0.0000000000000000, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78653584856932546, 0.0000000000000000, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0558379029273324, 0.0000000000000000, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3858662544850615, 0.0000000000000000, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.7970491170359040, 0.0000000000000000, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.2992404490153917, 0.0000000000000000, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.8678686047727382, 0.0000000000000000, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler098 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.69999999999999996. +-template +-void test098() ++// Test data for k=0.0000000000000000, nu=0.80000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2373744057922657e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data099[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data098) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data098[i].k), Tp(data098[i].nu), +- Tp(data098[i].phi)); +- const Tp f0 = data098[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.80000000000000004. +-testcase_ellint_3 data099[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17314386919344213, 0.0000000000000000, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33858381342073240, 0.0000000000000000, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49123285640844738, 0.0000000000000000, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.62944854858904520, 0.0000000000000000, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75421778305499343, 0.0000000000000000, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.86790634112156639, 0.0000000000000000, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97334918087427558, 0.0000000000000000, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0734012615283985, 0.0000000000000000, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17596285706118869, 0.0000000000000000, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36080593896484231, 0.0000000000000000, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56501022706967863, 0.0000000000000000, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80273891984116930, 0.0000000000000000, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.0949425007763358, 0.0000000000000000, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4736985692253419, 0.0000000000000000, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 1.9848676587180696, 0.0000000000000000, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.6726187823193546, 0.0000000000000000, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler099 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.80000000000000004. +-template +-void test099() ++// Test data for k=0.0000000000000000, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.6108624815885066e-16 ++// mean(f - f_Boost): 2.1371793224034264e-16 ++// variance(f - f_Boost): 5.6389326618626776e-33 ++// stddev(f - f_Boost): 7.5092826966779442e-17 ++const testcase_ellint_3 ++data100[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data099) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data099[i].k), Tp(data099[i].nu), +- Tp(data099[i].phi)); +- const Tp f0 = data099[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.90000000000000002. +-testcase_ellint_3 data100[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17297300811030600, 0.0000000000000000, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33735034635360817, 0.0000000000000000, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48765675230233141, 0.0000000000000000, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62238126886123568, 0.0000000000000000, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74286600807269243, 0.0000000000000000, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85181283909264971, 0.0000000000000000, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95228683995371122, 0.0000000000000000, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0472730487412552, 0.0000000000000000, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17614458024574997, 0.0000000000000000, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36237566578821978, 0.0000000000000000, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57106058859196640, 0.0000000000000000, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82019857015755915, 0.0000000000000000, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1397014388908147, 0.0000000000000000, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5845952415154960, 0.0000000000000000, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2620531413370775, 0.0000000000000000, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.3587842061975066, 0.0000000000000000, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 4.9672941328980507, 0.0000000000000000, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler100 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.90000000000000002. +-template +-void test100() ++// Test data for k=0.10000000000000009, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data101[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data100) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data100[i].k), Tp(data100[i].nu), +- Tp(data100[i].phi)); +- const Tp f0 = data100[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.0000000000000000. +-testcase_ellint_3 data101[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17454173353063665, 0.10000000000000009, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34913506721468085, 0.10000000000000009, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.69864700854177031, 0.10000000000000009, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87361792586964870, 0.10000000000000009, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2239913752078757, 0.10000000000000009, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.3993423113684049, 0.10000000000000009, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17454173353063662, 0.10000000000000009, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34913506721468096, 0.10000000000000009, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.69864700854177020, 0.10000000000000009, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87361792586964859, 0.10000000000000009, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2239913752078759, 0.10000000000000009, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.3993423113684051, 0.10000000000000009, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler101 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.0000000000000000. +-template +-void test101() ++// Test data for k=0.10000000000000009, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 ++const testcase_ellint_3 ++data102[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data101) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data101[i].k), Tp(data101[i].nu), +- Tp(data101[i].phi)); +- const Tp f0 = data101[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.10000000000000001. +-testcase_ellint_3 data102[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17436589347616618, 0.10000000000000009, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34776067871237354, 0.10000000000000009, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.51936064354727807, 0.10000000000000009, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.68860303749364360, 0.10000000000000009, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85524561882332051, 0.10000000000000009, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0193708301908337, 0.10000000000000009, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1813474067123044, 0.10000000000000009, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3417670770424983, 0.10000000000000009, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17471821213559732, 0.10000000000000009, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35052902610011138, 0.10000000000000009, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52842865990255727, 0.10000000000000009, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.70921799731166713, 0.10000000000000009, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89340330535868662, 0.10000000000000009, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0811075784236857, 0.10000000000000009, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2720133232666426, 0.10000000000000009, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4653630031861395, 0.10000000000000009, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler102 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.10000000000000001. +-template +-void test102() ++// Test data for k=0.10000000000000009, nu=0.20000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 ++const testcase_ellint_3 ++data103[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data102) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data102[i].k), Tp(data102[i].nu), +- Tp(data102[i].phi)); +- const Tp f0 = data102[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.20000000000000001. +-testcase_ellint_3 data103[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17419068786141345, 0.10000000000000009, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34640537686230127, 0.10000000000000009, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51502689171753957, 0.10000000000000009, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.67904147863672726, 0.10000000000000009, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.83811885126105179, 0.10000000000000009, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99255278555742810, 0.10000000000000009, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1431260546194930, 0.10000000000000009, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2909589656532101, 0.10000000000000009, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17489533344059083, 0.10000000000000009, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35194305707815038, 0.10000000000000009, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53317790741512527, 0.10000000000000009, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72036681615081222, 0.10000000000000009, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91480372268244303, 0.10000000000000009, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1170528708071514, 0.10000000000000009, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3266916802718358, 0.10000000000000009, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5421622241831547, 0.10000000000000009, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler103 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.20000000000000001. +-template +-void test103() ++// Test data for k=0.10000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 ++const testcase_ellint_3 ++data104[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data103) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data103[i].k), Tp(data103[i].nu), +- Tp(data103[i].phi)); +- const Tp f0 = data103[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.29999999999999999. +-testcase_ellint_3 data104[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17401611261390110, 0.10000000000000009, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34506869507511767, 0.10000000000000009, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51081757604259870, 0.10000000000000009, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.66992297597712303, 0.10000000000000009, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82209722856174228, 0.10000000000000009, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.96792430487669612, 0.10000000000000009, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1085964108954092, 0.10000000000000009, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2456748370836999, 0.10000000000000009, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17507310163441189, 0.10000000000000009, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35337768072524217, 0.10000000000000009, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53808167801629170, 0.10000000000000009, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73215166755955019, 0.10000000000000009, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.93806546000201219, 0.10000000000000009, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1573218723395986, 0.10000000000000009, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3897859679542097, 0.10000000000000009, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6331009404328622, 0.10000000000000009, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8826015946315438, 0.10000000000000009, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler104 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.29999999999999999. +-template +-void test104() ++// Test data for k=0.10000000000000009, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 ++const testcase_ellint_3 ++data105[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data104) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data104[i].k), Tp(data104[i].nu), +- Tp(data104[i].phi)); +- const Tp f0 = data104[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.40000000000000002. +-testcase_ellint_3 data105[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17384216369897937, 0.10000000000000009, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34375018311376782, 0.10000000000000009, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50672650758380455, 0.10000000000000009, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66121264213337616, 0.10000000000000009, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80706202005774441, 0.10000000000000009, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94519376138245892, 0.10000000000000009, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0771880300759584, 0.10000000000000009, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2049711557188272, 0.10000000000000009, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17525152094559704, 0.10000000000000009, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35483343742825979, 0.10000000000000009, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54314913099505446, 0.10000000000000009, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74463962034766862, 0.10000000000000009, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96349276837570441, 0.10000000000000009, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2029081382746343, 0.10000000000000009, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4638022887050806, 0.10000000000000009, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7432413830105224, 0.10000000000000009, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler105 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.40000000000000002. +-template +-void test105() ++// Test data for k=0.10000000000000009, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 ++const testcase_ellint_3 ++data106[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data105) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data105[i].k), Tp(data105[i].nu), +- Tp(data105[i].phi)); +- const Tp f0 = data105[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.50000000000000000. +-testcase_ellint_3 data106[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17366883711936554, 0.10000000000000009, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34244940634881876, 0.10000000000000009, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50274793281634378, 0.10000000000000009, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65287941633275093, 0.10000000000000009, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79291198790315398, 0.10000000000000009, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92412201537880345, 0.10000000000000009, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0484480076799370, 0.10000000000000009, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1681168130475206, 0.10000000000000009, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17543059564292182, 0.10000000000000009, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35631088838721664, 0.10000000000000009, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54839023346436455, 0.10000000000000009, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75790846946088830, 0.10000000000000009, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99146713686720678, 0.10000000000000009, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2551692247937198, 0.10000000000000009, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5524660788146873, 0.10000000000000009, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8806578570830670, 0.10000000000000009, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler106 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.50000000000000000. +-template +-void test106() ++// Test data for k=0.10000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 ++const testcase_ellint_3 ++data107[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data106) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data106[i].k), Tp(data106[i].nu), +- Tp(data106[i].phi)); +- const Tp f0 = data106[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.59999999999999998. +-testcase_ellint_3 data107[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17349612891469018, 0.10000000000000009, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34116594505539438, 0.10000000000000009, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49887649430466685, 0.10000000000000009, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64489553282165157, 0.10000000000000009, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.77956016553782437, 0.10000000000000009, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90451074530096309, 0.10000000000000009, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0220113666961632, 0.10000000000000009, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1345351441065563, 0.10000000000000009, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17561033003590576, 0.10000000000000009, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35781061668171932, 0.10000000000000009, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55381585659629196, 0.10000000000000009, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77204910484575640, 0.10000000000000009, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0224751740393108, 0.10000000000000009, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3160230906351114, 0.10000000000000009, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6616282844233206, 0.10000000000000009, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0592555664850392, 0.10000000000000009, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.4913004919173822, 0.10000000000000009, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler107 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.59999999999999998. +-template +-void test107() ++// Test data for k=0.10000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data108[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data107) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data107[i].k), Tp(data107[i].nu), +- Tp(data107[i].phi)); +- const Tp f0 = data107[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.69999999999999996. +-testcase_ellint_3 data108[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17332403516105052, 0.10000000000000009, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.33989939374896877, 0.10000000000000009, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49510719568614081, 0.10000000000000009, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63723607776354974, 0.10000000000000009, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76693133887935327, 0.10000000000000009, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88619382078823827, 0.10000000000000009, 0.69999999999999996, +- 1.0471975511965976 }, +- { 0.99758012018676490, 0.10000000000000009, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1037642270814410, 0.10000000000000009, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2073745911083187, 0.10000000000000009, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17579072847532518, 0.10000000000000009, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35933322840606297, 0.10000000000000009, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.55943788649460324, 0.10000000000000009, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78716856504031707, 0.10000000000000009, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0571501305617423, 0.10000000000000009, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3882948301743525, 0.10000000000000009, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8011785680114223, 0.10000000000000009, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3057268183616464, 0.10000000000000009, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.8771910188009739, 0.10000000000000009, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler108 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.69999999999999996. +-template +-void test108() ++// Test data for k=0.10000000000000009, nu=0.80000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 ++const testcase_ellint_3 ++data109[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data108) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data108[i].k), Tp(data108[i].nu), +- Tp(data108[i].phi)); +- const Tp f0 = data108[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.80000000000000004. +-testcase_ellint_3 data109[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17315255197057020, 0.10000000000000009, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33864936055747985, 0.10000000000000009, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49143537041117619, 0.10000000000000009, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.62987861760047492, 0.10000000000000009, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75496005490917517, 0.10000000000000009, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.86903081862701903, 0.10000000000000009, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97490814820725591, 0.10000000000000009, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0754290107171083, 0.10000000000000009, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17597179535373417, 0.10000000000000009, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36087935387831499, 0.10000000000000009, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56526935244526444, 0.10000000000000009, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80339402590612397, 0.10000000000000009, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.0963358646374459, 0.10000000000000009, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4763748483246868, 0.10000000000000009, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 1.9896610222794102, 0.10000000000000009, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.6806423920122024, 0.10000000000000009, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5246199613295612, 0.10000000000000009, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler109 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.80000000000000004. +-template +-void test109() ++// Test data for k=0.10000000000000009, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 ++const testcase_ellint_3 ++data110[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data109) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data109[i].k), Tp(data109[i].nu), +- Tp(data109[i].phi)); +- const Tp f0 = data109[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.90000000000000002. +-testcase_ellint_3 data110[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17298167549096569, 0.10000000000000009, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33741546662741584, 0.10000000000000009, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48785665376856879, 0.10000000000000009, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62280288554518959, 0.10000000000000009, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74358903115455199, 0.10000000000000009, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85290207679298358, 0.10000000000000009, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95379006645397379, 0.10000000000000009, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0492213119872327, 0.10000000000000009, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17615353510599349, 0.10000000000000009, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36244964892922371, 0.10000000000000009, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57132457590110530, 0.10000000000000009, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82087808820385000, 0.10000000000000009, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1411894342144451, 0.10000000000000009, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5875929286844597, 0.10000000000000009, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2678622986596659, 0.10000000000000009, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.3697528941897903, 0.10000000000000009, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 4.9862890417305499, 0.10000000000000009, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler110 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.90000000000000002. +-template +-void test110() ++// Test data for k=0.20000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 ++const testcase_ellint_3 ++data111[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data110) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data110[i].k), Tp(data110[i].nu), +- Tp(data110[i].phi)); +- const Tp f0 = data110[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data111[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17456817290292811, 0.19999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34934315932086801, 0.19999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52450880529443988, 0.19999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70020491009844910, 0.19999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87651006649967955, 0.19999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0534305870298994, 0.19999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2308975521670784, 0.19999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4087733584990738, 0.19999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5868678474541664, 0.19999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17456817290292806, 0.20000000000000018, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34934315932086796, 0.20000000000000018, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52450880529443988, 0.20000000000000018, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70020491009844887, 0.20000000000000018, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87651006649967977, 0.20000000000000018, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0534305870298994, 0.20000000000000018, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2308975521670789, 0.20000000000000018, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4087733584990738, 0.20000000000000018, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler111 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.0000000000000000. +-template +-void test111() ++// Test data for k=0.20000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 ++const testcase_ellint_3 ++data112[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data111) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data111[i].k), Tp(data111[i].nu), +- Tp(data111[i].phi)); +- const Tp f0 = data111[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data112[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17439228502691750, 0.19999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34796731137565740, 0.19999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52003370294544848, 0.19999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69012222258631495, 0.19999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85803491465566772, 0.19999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0238463961099364, 0.19999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1878691059202153, 0.19999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3505985031831940, 0.19999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5126513474261092, 0.19999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17474469953608965, 0.20000000000000018, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35073860234984255, 0.20000000000000018, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52912258712951521, 0.20000000000000018, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71081701558898069, 0.20000000000000018, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89640758521169384, 0.20000000000000018, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0860417038089853, 0.20000000000000018, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2793599255528623, 0.20000000000000018, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4754938544089076, 0.20000000000000018, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler112 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.10000000000000001. +-template +-void test112() ++// Test data for k=0.20000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 ++const testcase_ellint_3 ++data113[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data112) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data112[i].k), Tp(data112[i].nu), +- Tp(data112[i].phi)); +- const Tp f0 = data112[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data113[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17421703179583750, 0.19999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34661057411998791, 0.19999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51569006052647393, 0.19999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68052412821107278, 0.19999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84081341263313825, 0.19999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99683359988842890, 0.19999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1493086715118852, 0.19999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2992699693957541, 0.19999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4479323932249568, 0.19999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17492186907740698, 0.20000000000000018, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35215414286134267, 0.20000000000000018, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53388285615182440, 0.20000000000000018, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72200960282688265, 0.20000000000000018, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91793087614428526, 0.20000000000000018, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1222602841587976, 0.20000000000000018, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3345489407496247, 0.20000000000000018, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5531225705475502, 0.20000000000000018, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler113 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.20000000000000001. +-template +-void test113() ++// Test data for k=0.20000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 ++const testcase_ellint_3 ++data114[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data113) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data113[i].k), Tp(data113[i].nu), +- Tp(data113[i].phi)); +- const Tp f0 = data113[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data114[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17404240913577707, 0.19999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34527248032587193, 0.19999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51147118981668416, 0.19999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67137107867777635, 0.19999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82470418188668893, 0.19999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97202873223594299, 0.19999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1144773569375266, 0.19999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2535292433701000, 0.19999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3908453514752481, 0.19999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17509968571715159, 0.20000000000000018, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35359030214835629, 0.20000000000000018, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53879807274537084, 0.20000000000000018, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73384116418059731, 0.20000000000000018, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94132799329524031, 0.20000000000000018, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1628407021801439, 0.20000000000000018, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3982440216739438, 0.20000000000000018, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6450634983653640, 0.20000000000000018, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8983924169967099, 0.20000000000000018, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler114 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.29999999999999999. +-template +-void test114() ++// Test data for k=0.20000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.6738449250038925e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 2.7810428396951687e-32 ++// stddev(f - f_Boost): 1.6676458975739331e-16 ++const testcase_ellint_3 ++data115[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data114) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data114[i].k), Tp(data114[i].nu), +- Tp(data114[i].phi)); +- const Tp f0 = data114[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data115[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17386841301066677, 0.19999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34395257914113253, 0.19999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50737088376869466, 0.19999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66262801717277664, 0.19999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80958766645079094, 0.19999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94913754236162040, 0.19999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0827985514223000, 0.19999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2124212429050478, 0.19999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3400002519661010, 0.19999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17527815368535152, 0.20000000000000018, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35504762134297801, 0.20000000000000018, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54387742353211344, 0.20000000000000018, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74637910471804259, 0.20000000000000018, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96690539714174639, 0.20000000000000018, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2087859420184757, 0.20000000000000018, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4729799844168852, 0.20000000000000018, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7564445064596661, 0.20000000000000018, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler115 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.40000000000000002. +-template +-void test115() ++// Test data for k=0.20000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 ++const testcase_ellint_3 ++data116[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data115) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data115[i].k), Tp(data115[i].nu), +- Tp(data115[i].phi)); +- const Tp f0 = data115[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data116[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17369503942181802, 0.19999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34265043534362660, 0.19999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50338337208655415, 0.19999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65426373297163642, 0.19999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79536193036145808, 0.19999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92791875910061605, 0.19999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0538145052725829, 0.19999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1752060022875899, 0.19999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2943374404397376, 0.19999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17545727725228877, 0.20000000000000018, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35652666242062175, 0.20000000000000018, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54913090549102406, 0.20000000000000018, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75970161209211551, 0.20000000000000018, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99504737401590326, 0.20000000000000018, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2614666007124373, 0.20000000000000018, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5625255355205498, 0.20000000000000018, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8954460255613346, 0.20000000000000018, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler116 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.50000000000000000. +-template +-void test116() ++// Test data for k=0.20000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 ++const testcase_ellint_3 ++data117[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data116) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data116[i].k), Tp(data116[i].nu), +- Tp(data116[i].phi)); +- const Tp f0 = data116[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data117[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17352228440746928, 0.19999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34136562863713626, 0.19999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49950328177638481, 0.19999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64625032705690832, 0.19999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78193941198403094, 0.19999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90817230934317128, 0.19999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0271563751276462, 0.19999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1412999379040518, 0.19999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2530330675914561, 0.19999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17563706072900442, 0.20000000000000018, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35802800926807238, 0.20000000000000018, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55456942250515051, 0.20000000000000018, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77390003828438203, 0.20000000000000018, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0262441366366397, 0.20000000000000018, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3228192988439669, 0.20000000000000018, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6728005754680795, 0.20000000000000018, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0761587107468511, 0.20000000000000018, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler117 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.59999999999999998. +-template +-void test117() ++// Test data for k=0.20000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2209418045118284e-16 ++// mean(f - f_Boost): 2.4980018054066023e-17 ++// variance(f - f_Boost): 9.1989071679544611e-32 ++// stddev(f - f_Boost): 3.0329700242426498e-16 ++const testcase_ellint_3 ++data118[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data117) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data117[i].k), Tp(data117[i].nu), +- Tp(data117[i].phi)); +- const Tp f0 = data117[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data118[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17335014404233898, 0.19999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34009775298617811, 0.19999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49572560201923810, 0.19999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63856276669886525, 0.19999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76924438644867565, 0.19999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88973060843856466, 0.19999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0025230471636377, 0.19999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1102356376093103, 0.19999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2154356555075867, 0.19999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17581750846781172, 0.20000000000000018, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35955226882028513, 0.20000000000000018, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56020489659466499, 0.20000000000000018, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78908196988531498, 0.20000000000000018, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0611336754143517, 0.20000000000000018, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3956969951058884, 0.20000000000000018, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8138131612209609, 0.20000000000000018, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3256365528879561, 0.20000000000000018, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9058704854500963, 0.20000000000000018, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler118 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.69999999999999996. +-template +-void test118() ++// Test data for k=0.20000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7399960886656824e-16 ++// mean(f - f_Boost): 1.3877787807814457e-16 ++// variance(f - f_Boost): 1.7585404776158019e-31 ++// stddev(f - f_Boost): 4.1934955319110593e-16 ++const testcase_ellint_3 ++data119[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data118) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data118[i].k), Tp(data118[i].nu), +- Tp(data118[i].phi)); +- const Tp f0 = data118[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data119[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17317861443718541, 0.19999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33884641598718701, 0.19999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49204565281259494, 0.19999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63117851188220353, 0.19999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75721095949544170, 0.19999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87245201443919118, 0.19999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97966584238831089, 0.19999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0816336325174360, 0.19999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1810223448909913, 0.19999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17599862486281712, 0.20000000000000018, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36110007227128776, 0.20000000000000018, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56605039658567224, 0.20000000000000018, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80537523874517691, 0.20000000000000018, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1005662342414086, 0.20000000000000018, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4845340298105778, 0.20000000000000018, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0043332244969392, 0.20000000000000018, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7052856676744761, 0.20000000000000018, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler119 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.80000000000000004. +-template +-void test119() ++// Test data for k=0.20000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718503329017390e-16 ++// mean(f - f_Boost): 2.3592239273284576e-16 ++// variance(f - f_Boost): 2.9295534376290287e-31 ++// stddev(f - f_Boost): 5.4125349307224141e-16 ++const testcase_ellint_3 ++data120[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data119) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data119[i].k), Tp(data119[i].nu), +- Tp(data119[i].phi)); +- const Tp f0 = data119[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data120[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17300769173837280, 0.19999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33761123827372508, 0.19999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48845905690769426, 0.19999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62407720017324986, 0.19999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74578146525124289, 0.19999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85621583540073076, 0.19999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95837725988001199, 0.19999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0551821412633928, 0.19999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1493679916141863, 0.19999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17618041435044951, 0.20000000000000018, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36267207636502929, 0.20000000000000018, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57212028758237743, 0.20000000000000018, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82293323876704483, 0.20000000000000018, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1457077279880388, 0.20000000000000018, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5967346899325681, 0.20000000000000018, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2856537353421724, 0.20000000000000018, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4034714304613902, 0.20000000000000018, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler120 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.90000000000000002. +-template +-void test120() ++// Test data for k=0.30000000000000004, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 2.1399221604302621e-32 ++// stddev(f - f_Boost): 1.4628472785736254e-16 ++const testcase_ellint_3 ++data121[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data120) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data120[i].k), Tp(data120[i].nu), +- Tp(data120[i].phi)); +- const Tp f0 = data120[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data121[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17461228653000102, 0.30000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34969146102798415, 0.30000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52565822873726320, 0.30000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70284226512408532, 0.30000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88144139195111182, 0.30000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0614897067260523, 0.30000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2428416824174218, 0.30000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4251795877015925, 0.30000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6080486199305126, 0.30000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17461228653000099, 0.30000000000000004, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34969146102798421, 0.30000000000000004, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52565822873726309, 0.30000000000000004, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70284226512408543, 0.30000000000000004, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88144139195111171, 0.30000000000000004, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0614897067260520, 0.30000000000000004, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2428416824174220, 0.30000000000000004, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4251795877015929, 0.30000000000000004, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler121 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.0000000000000000. +-template +-void test121() ++// Test data for k=0.30000000000000004, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 7.2164496600635178e-17 ++// variance(f - f_Boost): 4.3555500115139682e-32 ++// stddev(f - f_Boost): 2.0869954507650391e-16 ++const testcase_ellint_3 ++data122[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data121) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data121[i].k), Tp(data121[i].nu), +- Tp(data121[i].phi)); +- const Tp f0 = data121[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data122[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17443631884814378, 0.30000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34831316835124926, 0.30000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52116586276523857, 0.30000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69269385837910036, 0.30000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86279023163070856, 0.30000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0315321461438265, 0.30000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1991449111869024, 0.30000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3659561780923211, 0.30000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5323534693557526, 0.30000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17478889331392972, 0.30000000000000004, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35108939018329183, 0.30000000000000004, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53028990896115835, 0.30000000000000004, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71352417052371409, 0.30000000000000004, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90153086032405894, 0.30000000000000004, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0945187977283313, 0.30000000000000004, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2920699268385683, 0.30000000000000004, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4931243665896394, 0.30000000000000004, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6960848815118226, 0.30000000000000004, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler122 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.10000000000000001. +-template +-void test122() ++// Test data for k=0.30000000000000004, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 6.6613381477509390e-17 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 ++const testcase_ellint_3 ++data123[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data122) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data122[i].k), Tp(data122[i].nu), +- Tp(data122[i].phi)); +- const Tp f0 = data122[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data123[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17426098615372090, 0.30000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34695402664689923, 0.30000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51680555567038933, 0.30000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68303375225260210, 0.30000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84540662891295026, 0.30000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0041834051646927, 0.30000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1599952702345711, 0.30000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3137179520499163, 0.30000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4663658145259875, 0.30000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17496614335337535, 0.30000000000000004, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35250745937139372, 0.30000000000000004, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53506875002836884, 0.30000000000000004, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72479106622248191, 0.30000000000000004, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.92326451535891607, 0.30000000000000004, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1312092060698349, 0.30000000000000004, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3481473154592321, 0.30000000000000004, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5722049569662750, 0.30000000000000004, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler123 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.20000000000000001. +-template +-void test123() ++// Test data for k=0.30000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 ++const testcase_ellint_3 ++data124[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data123) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data123[i].k), Tp(data123[i].nu), +- Tp(data123[i].phi)); +- const Tp f0 = data123[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data124[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17408628437042845, 0.30000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34561356761638401, 0.30000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51257058617875850, 0.30000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67382207124602866, 0.30000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82914751587825131, 0.30000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97907434814374950, 0.30000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1246399297351584, 0.30000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2671793970398146, 0.30000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4081767433479089, 0.30000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17514404084107435, 0.30000000000000004, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35394619108645647, 0.30000000000000004, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54000325463372689, 0.30000000000000004, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73670193794067651, 0.30000000000000004, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94689345491722177, 0.30000000000000004, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1723274608389140, 0.30000000000000004, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4128880552936287, 0.30000000000000004, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6659010047449661, 0.30000000000000004, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler124 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.29999999999999999. +-template +-void test124() ++// Test data for k=0.30000000000000004, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 ++const testcase_ellint_3 ++data125[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data124) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data124[i].k), Tp(data124[i].nu), +- Tp(data124[i].phi)); +- const Tp f0 = data124[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data125[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17391220945982730, 0.30000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34429133937639689, 0.30000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50845471668581632, 0.30000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66502347027873854, 0.30000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.81389191978012254, 0.30000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.95590618002140593, 0.30000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0924915195213121, 0.30000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2253651604038058, 0.30000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3563643538969761, 0.30000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17532259000954434, 0.30000000000000004, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35540612770983693, 0.30000000000000004, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54510265552938919, 0.30000000000000004, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74932476310965057, 0.30000000000000004, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.97272793583093109, 0.30000000000000004, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2188928987074241, 0.30000000000000004, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4888771674085941, 0.30000000000000004, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7794558498219191, 0.30000000000000004, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0822121773175528, 0.30000000000000004, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler125 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.40000000000000002. +-template +-void test125() ++// Test data for k=0.30000000000000004, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 ++const testcase_ellint_3 ++data126[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data125) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data125[i].k), Tp(data125[i].nu), +- Tp(data125[i].phi)); +- const Tp f0 = data125[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data126[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17373875742088235, 0.30000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34298690571124157, 0.30000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50445214859646936, 0.30000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65660648352418516, 0.30000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79953670639287289, 0.30000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.93443393926588558, 0.30000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0630838369016911, 0.30000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1875197325653026, 0.30000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3098448759814960, 0.30000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17550179513158179, 0.30000000000000004, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35688783251681200, 0.30000000000000004, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55037700010142798, 0.30000000000000004, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76273839789895992, 0.30000000000000004, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0011570518830419, 0.30000000000000004, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2722987414055109, 0.30000000000000004, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5799590511080066, 0.30000000000000004, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9212367220124293, 0.30000000000000004, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2833505881933971, 0.30000000000000004, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler126 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.50000000000000000. +-template +-void test126() ++// Test data for k=0.30000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 ++const testcase_ellint_3 ++data127[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data126) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data126[i].k), Tp(data126[i].nu), +- Tp(data126[i].phi)); +- const Tp f0 = data126[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data127[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17356592428950826, 0.30000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34169984536697379, 0.30000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50055748266498457, 0.30000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64854298527106768, 0.30000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78599329284207431, 0.30000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.91445452089128221, 0.30000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0360412952290587, 0.30000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1530473919778639, 0.30000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2677758800420666, 0.30000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17568166052076745, 0.30000000000000004, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35839189074731181, 0.30000000000000004, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55583724744367558, 0.30000000000000004, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77703498090888223, 0.30000000000000004, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0326772113675962, 0.30000000000000004, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3345139983717369, 0.30000000000000004, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6921742922838403, 0.30000000000000004, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1056608968472186, 0.30000000000000004, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5560975528589061, 0.30000000000000004, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler127 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.59999999999999998. +-template +-void test127() ++// Test data for k=0.30000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 2.1094237467877973e-16 ++// variance(f - f_Boost): 3.0253363535298873e-31 ++// stddev(f - f_Boost): 5.5003057674368314e-16 ++const testcase_ellint_3 ++data128[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data127) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data127[i].k), Tp(data127[i].nu), +- Tp(data127[i].phi)); +- const Tp f0 = data127[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data128[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17339370613812227, 0.30000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34042975138455933, 0.30000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49676568368075985, 0.30000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64080774055753720, 0.30000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77318507779667278, 0.30000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.89579782346548631, 0.30000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0110573286052202, 0.30000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1214710972949633, 0.30000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2294913236274980, 0.30000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17586219053197988, 0.30000000000000004, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35991891074557669, 0.30000000000000004, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56149538019961731, 0.30000000000000004, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79232303189667685, 0.30000000000000004, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0679345542878826, 0.30000000000000004, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4084400085913955, 0.30000000000000004, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8357382859296454, 0.30000000000000004, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3604197996171519, 0.30000000000000004, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9562123549913872, 0.30000000000000004, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler128 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.69999999999999996. +-template +-void test128() ++// Test data for k=0.30000000000000004, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 ++const testcase_ellint_3 ++data129[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data128) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data128[i].k), Tp(data128[i].nu), +- Tp(data128[i].phi)); +- const Tp f0 = data128[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data129[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17322209907520361, 0.30000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33917623046949996, 0.30000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49307204894329176, 0.30000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63337802830291723, 0.30000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76104540997689407, 0.30000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87832009635450736, 0.30000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.98787879723171790, 0.30000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0924036340069336, 0.30000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1944567571590046, 0.30000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17604338956191670, 0.30000000000000004, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36146952517410791, 0.30000000000000004, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56736453393774644, 0.30000000000000004, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80873149979001091, 0.30000000000000004, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1077903069860620, 0.30000000000000004, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4985874311132998, 0.30000000000000004, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0298167266724954, 0.30000000000000004, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7483929054985432, 0.30000000000000004, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.6283050484567170, 0.30000000000000004, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler129 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.80000000000000004. +-template +-void test129() ++// Test data for k=0.30000000000000004, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 ++const testcase_ellint_3 ++data130[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data129) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data129[i].k), Tp(data129[i].nu), +- Tp(data129[i].phi)); +- const Tp f0 = data129[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data130[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17305109924485948, 0.30000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33793890239556984, 0.30000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48947218005089738, 0.30000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62623332340775151, 0.30000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74951596581511148, 0.30000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.86189886597756005, 0.30000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.96629451153092005, 0.30000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0655269133492680, 0.30000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1622376896064912, 0.30000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17622526204962433, 0.30000000000000004, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36304439230777141, 0.30000000000000004, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57345914744719195, 0.30000000000000004, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82641512928845162, 0.30000000000000004, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1534256210757743, 0.30000000000000004, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6124900353411677, 0.30000000000000004, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3165905514845089, 0.30000000000000004, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4625619526539824, 0.30000000000000004, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.1479514944016787, 0.30000000000000004, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler130 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.90000000000000002. +-template +-void test130() ++// Test data for k=0.40000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0831445028587608e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 ++const testcase_ellint_3 ++data131[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data130) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data130[i].k), Tp(data130[i].nu), +- Tp(data130[i].phi)); +- const Tp f0 = data130[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.0000000000000000. +-testcase_ellint_3 data131[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17467414669441531, 0.39999999999999991, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35018222772483443, 0.39999999999999991, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52729015917508748, 0.39999999999999991, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70662374407341255, 0.39999999999999991, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88859210497602170, 0.39999999999999991, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0733136290471379, 0.39999999999999991, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2605612170157061, 0.39999999999999991, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4497513956433437, 0.39999999999999991, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17467414669441528, 0.40000000000000013, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35018222772483443, 0.40000000000000013, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52729015917508748, 0.40000000000000013, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70662374407341244, 0.40000000000000013, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88859210497602159, 0.40000000000000013, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0733136290471381, 0.40000000000000013, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2605612170157066, 0.40000000000000013, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4497513956433439, 0.40000000000000013, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler131 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.0000000000000000. +-template +-void test131() ++// Test data for k=0.40000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0263824105456986e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 ++const testcase_ellint_3 ++data132[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data131) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data131[i].k), Tp(data131[i].nu), +- Tp(data131[i].phi)); +- const Tp f0 = data131[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.10000000000000001. +-testcase_ellint_3 data132[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17449806706684673, 0.39999999999999991, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34880048623856075, 0.39999999999999991, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52277322065757403, 0.39999999999999991, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69638072056918376, 0.39999999999999991, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86968426619831540, 0.39999999999999991, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0428044206578095, 0.39999999999999991, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2158651158274378, 0.39999999999999991, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3889447129893322, 0.39999999999999991, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17485086590796767, 0.40000000000000013, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35158366412506992, 0.40000000000000013, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53194731675711726, 0.40000000000000013, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71740615528010931, 0.40000000000000013, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90896157773487030, 0.40000000000000013, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1069605483834348, 0.40000000000000013, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3109353428823001, 0.40000000000000013, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5195460789903450, 0.40000000000000013, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler132 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.10000000000000001. +-template +-void test132() ++// Test data for k=0.40000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.6644296021947179e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 ++const testcase_ellint_3 ++data133[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data132) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data132[i].k), Tp(data132[i].nu), +- Tp(data132[i].phi)); +- const Tp f0 = data132[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.20000000000000001. +-testcase_ellint_3 data133[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17432262290723399, 0.39999999999999991, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34743795258968596, 0.39999999999999991, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51838919472805123, 0.39999999999999991, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68663134739057918, 0.39999999999999991, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.85206432981833979, 0.39999999999999991, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0149595349004430, 0.39999999999999991, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1758349405464676, 0.39999999999999991, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3353337673882635, 0.39999999999999991, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502822886437389, 0.40000000000000013, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35300530062530805, 0.40000000000000013, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53675259548210896, 0.40000000000000013, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72878006428676934, 0.40000000000000013, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.93100219010583574, 0.40000000000000013, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1443487271187611, 0.40000000000000013, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3683427764108813, 0.40000000000000013, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6008221459300933, 0.40000000000000013, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8380358826317627, 0.40000000000000013, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler133 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.20000000000000001. +-template +-void test133() ++// Test data for k=0.40000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0271556462838835e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 ++const testcase_ellint_3 ++data134[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data133) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data133[i].k), Tp(data133[i].nu), +- Tp(data133[i].phi)); +- const Tp f0 = data133[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.29999999999999999. +-testcase_ellint_3 data134[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17414781013591543, 0.39999999999999991, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34609415696777285, 0.39999999999999991, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51413131295862546, 0.39999999999999991, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67733527622935630, 0.39999999999999991, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.83558675182733266, 0.39999999999999991, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.98940140808865906, 0.39999999999999991, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1396968797728058, 0.39999999999999991, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2875920037865087, 0.39999999999999991, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17520623975982899, 0.40000000000000013, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35444766141612105, 0.40000000000000013, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54171455841536009, 0.40000000000000013, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74080517001084012, 0.40000000000000013, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.95496950509296574, 0.40000000000000013, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1862627879844718, 0.40000000000000013, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4346501803799458, 0.40000000000000013, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6971744798077699, 0.40000000000000013, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9677924132520139, 0.40000000000000013, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler134 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.29999999999999999. +-template +-void test134() ++// Test data for k=0.40000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3436329231972794e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 2.9507053793392374e-31 ++// stddev(f - f_Boost): 5.4320395611033958e-16 ++const testcase_ellint_3 ++data135[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data134) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data134[i].k), Tp(data134[i].nu), +- Tp(data134[i].phi)); +- const Tp f0 = data134[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.40000000000000002. +-testcase_ellint_3 data135[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17397362471112710, 0.39999999999999991, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34476864603333196, 0.39999999999999991, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50999329415379357, 0.39999999999999991, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66845674551396017, 0.39999999999999991, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82012848346231748, 0.39999999999999991, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.96582449258349057, 0.39999999999999991, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1068473749476286, 0.39999999999999991, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2447132729159986, 0.39999999999999991, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17538490283034375, 0.40000000000000013, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35591129064319948, 0.40000000000000013, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54684250413264535, 0.40000000000000013, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75355027742668290, 0.40000000000000013, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.98117935026780634, 0.40000000000000013, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2337464222030736, 0.40000000000000013, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5125183419289221, 0.40000000000000013, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8140224451130313, 0.40000000000000013, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1289968719280026, 0.40000000000000013, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler135 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.40000000000000002. +-template +-void test135() ++// Test data for k=0.40000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.7013794022122431e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 ++const testcase_ellint_3 ++data136[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data135) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data135[i].k), Tp(data135[i].nu), +- Tp(data135[i].phi)); +- const Tp f0 = data135[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.50000000000000000. +-testcase_ellint_3 data136[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17380006262854139, 0.39999999999999991, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34346098216756610, 0.39999999999999991, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50596929935059420, 0.39999999999999991, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65996392089131262, 0.39999999999999991, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.80558463511364786, 0.39999999999999991, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.94397834522857704, 0.39999999999999991, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0768075114108115, 0.39999999999999991, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2059184624251329, 0.39999999999999991, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17556422235224273, 0.40000000000000013, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35739675341763921, 0.40000000000000013, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55214655195037188, 0.40000000000000013, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76709520942047438, 0.40000000000000013, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0100278761577499, 0.40000000000000013, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2882265661384342, 0.40000000000000013, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6059059780051876, 0.40000000000000013, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9600182740224081, 0.40000000000000013, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler136 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.50000000000000000. +-template +-void test136() ++// Test data for k=0.40000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.4792115132836117e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 4.8893797490374802e-31 ++// stddev(f - f_Boost): 6.9924099915819294e-16 ++const testcase_ellint_3 ++data137[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data136) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data136[i].k), Tp(data136[i].nu), +- Tp(data136[i].phi)); +- const Tp f0 = data136[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.59999999999999998. +-testcase_ellint_3 data137[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17362711992081248, 0.39999999999999991, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34217074276403953, 0.39999999999999991, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50205389185761617, 0.39999999999999991, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65182834920372745, 0.39999999999999991, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79186512820565136, 0.39999999999999991, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.92365535916287134, 0.39999999999999991, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0491915663957907, 0.39999999999999991, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1705934291745104, 0.39999999999999991, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17574420264267029, 0.40000000000000013, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35890463689046265, 0.40000000000000013, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55763773975194486, 0.40000000000000013, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78153324227761267, 0.40000000000000013, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0420205885765887, 0.40000000000000013, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3517205230381770, 0.40000000000000013, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7210360970313896, 0.40000000000000013, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1500780510169246, 0.40000000000000013, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.6186940209850191, 0.40000000000000013, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler137 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.59999999999999998. +-template +-void test137() ++// Test data for k=0.40000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8573292020719759e-16 ++// mean(f - f_Boost): 2.2759572004815707e-16 ++// variance(f - f_Boost): 2.9613098824898137e-31 ++// stddev(f - f_Boost): 5.4417918762938862e-16 ++const testcase_ellint_3 ++data138[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data137) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data137[i].k), Tp(data137[i].nu), +- Tp(data137[i].phi)); +- const Tp f0 = data137[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.69999999999999996. +-testcase_ellint_3 data138[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17345479265712871, 0.39999999999999991, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34089751955950354, 0.39999999999999991, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49824200167361343, 0.39999999999999991, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64402450341199413, 0.39999999999999991, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77889207804122873, 0.39999999999999991, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.90468169720957992, 0.39999999999999991, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0236847823692916, 0.39999999999999991, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1382465247425164, 0.39999999999999991, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17592484806010436, 0.40000000000000013, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36043555139631439, 0.40000000000000013, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56332813669944881, 0.40000000000000013, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79697424562157548, 0.40000000000000013, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0778155987523672, 0.40000000000000013, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4272018169896268, 0.40000000000000013, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8684377907453382, 0.40000000000000013, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4128677409207473, 0.40000000000000013, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler138 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.69999999999999996. +-template +-void test138() ++// Test data for k=0.40000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.5273712585384737e-16 ++// mean(f - f_Boost): 4.5241588253475131e-16 ++// variance(f - f_Boost): 1.1866477068555882e-30 ++// stddev(f - f_Boost): 1.0893336067778265e-15 ++const testcase_ellint_3 ++data139[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data138) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data138[i].k), Tp(data138[i].nu), +- Tp(data138[i].phi)); +- const Tp f0 = data138[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.80000000000000004. +-testcase_ellint_3 data139[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17328307694277156, 0.39999999999999991, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33964091800132007, 0.39999999999999991, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49452889372467451, 0.39999999999999991, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63652940095937327, 0.39999999999999991, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76659772511159097, 0.39999999999999991, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.88691047977338111, 0.39999999999999991, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0000273200611640, 0.39999999999999991, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1084787902188007, 0.39999999999999991, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17610616300487833, 0.40000000000000013, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36199013167171978, 0.40000000000000013, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56923097361842434, 0.40000000000000013, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81354878456624347, 0.40000000000000013, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1182902719261825, 0.40000000000000013, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5192950589409022, 0.40000000000000013, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0678761710223981, 0.40000000000000013, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.8135222249879788, 0.40000000000000013, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.7289548002199902, 0.40000000000000013, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler139 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.80000000000000004. +-template +-void test139() ++// Test data for k=0.40000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 6.2172489379008766e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.1718379478872251e-15 ++// mean(f - f_Boost): 8.4099394115355610e-16 ++// variance(f - f_Boost): 3.5684096037099424e-30 ++// stddev(f - f_Boost): 1.8890234523980751e-15 ++const testcase_ellint_3 ++data140[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data139) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data139[i].k), Tp(data139[i].nu), +- Tp(data139[i].phi)); +- const Tp f0 = data139[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.90000000000000002. +-testcase_ellint_3 data140[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17311196891868130, 0.39999999999999991, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33840055664911906, 0.39999999999999991, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49091013944075340, 0.39999999999999991, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62932228186809591, 0.39999999999999991, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.75492278323019801, 0.39999999999999991, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.87021659043854294, 0.39999999999999991, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.97800245228239246, 0.39999999999999991, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0809625773173694, 0.39999999999999991, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17628815191971123, 0.40000000000000013, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36356903815378772, 0.40000000000000013, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57536079447000310, 0.40000000000000013, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83141355850172571, 0.40000000000000013, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1646481598721361, 0.40000000000000013, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6357275034001995, 0.40000000000000013, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3628787566572402, 0.40000000000000013, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.5521010369134962, 0.40000000000000013, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.3055535102872513, 0.40000000000000013, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler140 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.90000000000000002. +-template +-void test140() ++// Test data for k=0.50000000000000000, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 ++const testcase_ellint_3 ++data141[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data140) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data140[i].k), Tp(data140[i].nu), +- Tp(data140[i].phi)); +- const Tp f0 = data140[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.0000000000000000. +-testcase_ellint_3 data141[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35081868470101585, 0.50000000000000000, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52942862705190585, 0.50000000000000000, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0895506700518851, 0.50000000000000000, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4845545520549484, 0.50000000000000000, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35081868470101579, 0.50000000000000000, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52942862705190574, 0.50000000000000000, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0895506700518853, 0.50000000000000000, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4845545520549488, 0.50000000000000000, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler141 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.0000000000000000. +-template +-void test141() ++// Test data for k=0.50000000000000000, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 ++const testcase_ellint_3 ++data142[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data141) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data141[i].k), Tp(data141[i].nu), +- Tp(data141[i].phi)); +- const Tp f0 = data141[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.10000000000000001. +-testcase_ellint_3 data142[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17457763120814676, 0.50000000000000000, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34943246340849154, 0.50000000000000000, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52487937869610801, 0.50000000000000000, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70127785096388395, 0.50000000000000000, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.87898815988624479, 0.50000000000000000, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0582764576094172, 0.50000000000000000, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2391936844060207, 0.50000000000000000, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4214793542995841, 0.50000000000000000, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17493071928248824, 0.50000000000000000, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35222467688034798, 0.50000000000000000, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53411928652008112, 0.50000000000000000, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72256398117177589, 0.50000000000000000, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.91899583232771009, 0.50000000000000000, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1240549163055360, 0.50000000000000000, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3372938086286021, 0.50000000000000000, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5570024469132429, 0.50000000000000000, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7803034946545480, 0.50000000000000000, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler142 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.10000000000000001. +-template +-void test142() ++// Test data for k=0.50000000000000000, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 ++const testcase_ellint_3 ++data143[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data142) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data142[i].k), Tp(data142[i].nu), +- Tp(data142[i].phi)); +- const Tp f0 = data142[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.20000000000000001. +-testcase_ellint_3 data143[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17440204336345433, 0.50000000000000000, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34806552388338824, 0.50000000000000000, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52046416757129821, 0.50000000000000000, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69140924550993876, 0.50000000000000000, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.86104678636125520, 0.50000000000000000, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0297439459053981, 0.50000000000000000, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1979214112912036, 0.50000000000000000, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3659033858648930, 0.50000000000000000, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17510822779582402, 0.50000000000000000, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35365094725531487, 0.50000000000000000, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53895933237328697, 0.50000000000000000, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.73408090840070794, 0.50000000000000000, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.94145442818535396, 0.50000000000000000, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1624120186296487, 0.50000000000000000, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3965823372867114, 0.50000000000000000, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6414308440430099, 0.50000000000000000, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8922947612264018, 0.50000000000000000, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler143 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.20000000000000001. +-template +-void test143() ++// Test data for k=0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 ++const testcase_ellint_3 ++data144[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data143) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data143[i].k), Tp(data143[i].nu), +- Tp(data143[i].phi)); +- const Tp f0 = data143[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.29999999999999999. +-testcase_ellint_3 data144[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17422708752228896, 0.50000000000000000, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34671739434855858, 0.50000000000000000, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51617616305641889, 0.50000000000000000, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68200047612545178, 0.50000000000000000, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.84427217869498372, 0.50000000000000000, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0035637821389782, 0.50000000000000000, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1606800483933113, 0.50000000000000000, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3164407134643459, 0.50000000000000000, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17528638488102041, 0.50000000000000000, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35509802222332720, 0.50000000000000000, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54395740731866193, 0.50000000000000000, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74625871438752667, 0.50000000000000000, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.96588271186092023, 0.50000000000000000, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2054319584357329, 0.50000000000000000, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4651077994832871, 0.50000000000000000, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.7416018368052644, 0.50000000000000000, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler144 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.29999999999999999. +-template +-void test144() ++// Test data for k=0.50000000000000000, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 ++const testcase_ellint_3 ++data145[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data144) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data144[i].k), Tp(data144[i].nu), +- Tp(data144[i].phi)); +- const Tp f0 = data144[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.40000000000000002. +-testcase_ellint_3 data145[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17405275963859917, 0.50000000000000000, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34538761957029329, 0.50000000000000000, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51200902646603919, 0.50000000000000000, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67301522212868792, 0.50000000000000000, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82853844466313320, 0.50000000000000000, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.97942097862681488, 0.50000000000000000, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1268429801220616, 0.50000000000000000, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2720406704533922, 0.50000000000000000, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17546519477859268, 0.50000000000000000, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35656644822531680, 0.50000000000000000, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54912289677411319, 0.50000000000000000, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75916731611690047, 0.50000000000000000, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.99260415631328214, 0.50000000000000000, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2541925856918670, 0.50000000000000000, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5456393705347609, 0.50000000000000000, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8631904972952076, 0.50000000000000000, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler145 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.40000000000000002. +-template +-void test145() ++// Test data for k=0.50000000000000000, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 ++const testcase_ellint_3 ++data146[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data145) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data145[i].k), Tp(data145[i].nu), +- Tp(data145[i].phi)); +- const Tp f0 = data145[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.50000000000000000. +-testcase_ellint_3 data146[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17387905570381157, 0.50000000000000000, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34407576010465207, 0.50000000000000000, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50795686560160835, 0.50000000000000000, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.66442115453330175, 0.50000000000000000, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.81373829119355345, 0.50000000000000000, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.95705743313235825, 0.50000000000000000, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0959131991362556, 0.50000000000000000, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2318900529754597, 0.50000000000000000, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17564466176941509, 0.50000000000000000, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35805679276065394, 0.50000000000000000, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55446601496200032, 0.50000000000000000, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.77288783578259013, 0.50000000000000000, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0220246013918972, 0.50000000000000000, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3101681612463965, 0.50000000000000000, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6422994881851025, 0.50000000000000000, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0152636030998816, 0.50000000000000000, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler146 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.50000000000000000. +-template +-void test146() ++// Test data for k=0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 ++const testcase_ellint_3 ++data147[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data146) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data146[i].k), Tp(data146[i].nu), +- Tp(data146[i].phi)); +- const Tp f0 = data146[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.59999999999999998. +-testcase_ellint_3 data147[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17370597174637581, 0.50000000000000000, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34278139158591414, 0.50000000000000000, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50401419439302719, 0.50000000000000000, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65618938076167221, 0.50000000000000000, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79977959248855424, 0.50000000000000000, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.93625925190753545, 0.50000000000000000, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0674905658379710, 0.50000000000000000, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1953481298023048, 0.50000000000000000, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17582479017522740, 0.50000000000000000, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35956964546660036, 0.50000000000000000, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55999790372984193, 0.50000000000000000, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78751507911209895, 0.50000000000000000, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0546620505035220, 0.50000000000000000, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3754438357425935, 0.50000000000000000, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7615727400820127, 0.50000000000000000, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.2134638067565242, 0.50000000000000000, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler147 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.59999999999999998. +-template +-void test147() ++// Test data for k=0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 ++const testcase_ellint_3 ++data148[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data147) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data147[i].k), Tp(data147[i].nu), +- Tp(data147[i].phi)); +- const Tp f0 = data147[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.69999999999999996. +-testcase_ellint_3 data148[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17353350383131641, 0.50000000000000000, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34150410405436771, 0.50000000000000000, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50017589696443487, 0.50000000000000000, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64829398188419962, 0.50000000000000000, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.78658270782402073, 0.50000000000000000, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.91684738336675053, 0.50000000000000000, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0412486789555937, 0.50000000000000000, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1619021847612001, 0.50000000000000000, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17600558435914915, 0.50000000000000000, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36110561926726259, 0.50000000000000000, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56573074641137111, 0.50000000000000000, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.80316073084237205, 0.50000000000000000, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0911910688131461, 0.50000000000000000, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4530946406380640, 0.50000000000000000, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9144386536785372, 0.50000000000000000, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4878788958234970, 0.50000000000000000, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.1433945297859225, 0.50000000000000000, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler148 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.69999999999999996. +-template +-void test148() ++// Test data for k=0.50000000000000000, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 ++const testcase_ellint_3 ++data149[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data148) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data148[i].k), Tp(data148[i].nu), +- Tp(data148[i].phi)); +- const Tp f0 = data148[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.80000000000000004. +-testcase_ellint_3 data149[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17336164805979126, 0.50000000000000000, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34024350132086773, 0.50000000000000000, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49643719555734084, 0.50000000000000000, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64071162456976150, 0.50000000000000000, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.77407836177211908, 0.50000000000000000, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.89867058251905652, 0.50000000000000000, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0169181822134912, 0.50000000000000000, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1311363312779448, 0.50000000000000000, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17618704872620228, 0.50000000000000000, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36266535159745827, 0.50000000000000000, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57167789954529158, 0.50000000000000000, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81995752984315018, 0.50000000000000000, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1325112162158122, 0.50000000000000000, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5479055930718042, 0.50000000000000000, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1215243941010486, 0.50000000000000000, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.9069405767650132, 0.50000000000000000, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.8750701888108066, 0.50000000000000000, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler149 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.80000000000000004. +-template +-void test149() ++// Test data for k=0.50000000000000000, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 ++const testcase_ellint_3 ++data150[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data149) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data149[i].k), Tp(data149[i].nu), +- Tp(data149[i].phi)); +- const Tp f0 = data149[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.90000000000000002. +-testcase_ellint_3 data150[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17319040056865681, 0.50000000000000000, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33899920036578557, 0.50000000000000000, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49279362182695186, 0.50000000000000000, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63342123379746151, 0.50000000000000000, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.76220595179550321, 0.50000000000000000, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.88160004743532294, 0.50000000000000000, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.99427448642310134, 0.50000000000000000, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1027091512470093, 0.50000000000000000, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17636918772384180, 0.50000000000000000, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36424950570740700, 0.50000000000000000, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57785404590231426, 0.50000000000000000, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83806480521716531, 0.50000000000000000, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1798568683069752, 0.50000000000000000, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6678766243739607, 0.50000000000000000, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.4282976450693483, 0.50000000000000000, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.6810787666126656, 0.50000000000000000, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.5355132096026454, 0.50000000000000000, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler150 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.90000000000000002. +-template +-void test150() ++// Test data for k=0.60000000000000009, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 ++const testcase_ellint_3 ++data151[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data150) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data150[i].k), Tp(data150[i].nu), +- Tp(data150[i].phi)); +- const Tp f0 = data150[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.0000000000000000. +-testcase_ellint_3 data151[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17485154362988362, 0.60000000000000009, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35160509865544326, 0.60000000000000009, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53210652578446160, 0.60000000000000009, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71805304664485670, 0.60000000000000009, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.91082759030195970, 0.60000000000000009, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1112333229323366, 0.60000000000000009, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.5332022105084775, 0.60000000000000009, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17485154362988359, 0.60000000000000009, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35160509865544320, 0.60000000000000009, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53210652578446138, 0.60000000000000009, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71805304664485659, 0.60000000000000009, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.91082759030195981, 0.60000000000000009, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1112333229323361, 0.60000000000000009, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.5332022105084779, 0.60000000000000009, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler151 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.0000000000000000. +-template +-void test151() ++// Test data for k=0.60000000000000009, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 ++const testcase_ellint_3 ++data152[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data151) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data151[i].k), Tp(data151[i].nu), +- Tp(data151[i].phi)); +- const Tp f0 = data151[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.10000000000000001. +-testcase_ellint_3 data152[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17467514275022014, 0.60000000000000009, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35021333086258255, 0.60000000000000009, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52751664092962713, 0.60000000000000009, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70752126971957885, 0.60000000000000009, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.89111058756112871, 0.60000000000000009, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0789241202877773, 0.60000000000000009, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2710800210399946, 0.60000000000000009, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4669060574440278, 0.60000000000000009, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502858548476194, 0.60000000000000009, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35301673150537388, 0.60000000000000009, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53683932476326812, 0.60000000000000009, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72914228589586771, 0.60000000000000009, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.93208036718354692, 0.60000000000000009, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1468984688863377, 0.60000000000000009, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3733904977062528, 0.60000000000000009, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6094225663372157, 0.60000000000000009, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.8508766487100685, 0.60000000000000009, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler152 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.10000000000000001. +-template +-void test152() ++// Test data for k=0.60000000000000009, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.4980018054066023e-17 ++// variance(f - f_Boost): 2.1685495635542404e-32 ++// stddev(f - f_Boost): 1.4725995937641163e-16 ++const testcase_ellint_3 ++data153[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data152) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data152[i].k), Tp(data152[i].nu), +- Tp(data152[i].phi)); +- const Tp f0 = data152[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.20000000000000001. +-testcase_ellint_3 data153[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17449937871800653, 0.60000000000000009, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34884093647346553, 0.60000000000000009, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52306221119844110, 0.60000000000000009, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69749955678982223, 0.60000000000000009, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.87274610682416853, 0.60000000000000009, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0494620540750796, 0.60000000000000009, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2280847305507339, 0.60000000000000009, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4085436279696888, 0.60000000000000009, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17520627248155893, 0.60000000000000009, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35444873935437748, 0.60000000000000009, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54172310557682524, 0.60000000000000009, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74084300280734672, 0.60000000000000009, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.95509001527006121, 0.60000000000000009, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1865688084431796, 0.60000000000000009, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4352978868932600, 0.60000000000000009, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6983400371331818, 0.60000000000000009, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler153 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.20000000000000001. +-template +-void test153() ++// Test data for k=0.60000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 ++const testcase_ellint_3 ++data154[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data153) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data153[i].k), Tp(data153[i].nu), +- Tp(data153[i].phi)); +- const Tp f0 = data153[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.29999999999999999. +-testcase_ellint_3 data154[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17432424744393935, 0.60000000000000009, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34748744127146447, 0.60000000000000009, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51873632743924847, 0.60000000000000009, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68794610396313127, 0.60000000000000009, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.85558070175468726, 0.60000000000000009, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0224416343605658, 0.60000000000000009, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1893144457936788, 0.60000000000000009, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3566435377982575, 0.60000000000000009, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17538460882640122, 0.60000000000000009, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35590165133735557, 0.60000000000000009, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54676661152254535, 0.60000000000000009, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.75321709418305305, 0.60000000000000009, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.98012637808992920, 0.60000000000000009, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2310891277158875, 0.60000000000000009, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5069157924585623, 0.60000000000000009, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8039583598337940, 0.60000000000000009, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler154 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.29999999999999999. +-template +-void test154() ++// Test data for k=0.60000000000000009, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.8974839914337670e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 ++const testcase_ellint_3 ++data155[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data154) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data154[i].k), Tp(data154[i].nu), +- Tp(data154[i].phi)); +- const Tp f0 = data154[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.40000000000000002. +-testcase_ellint_3 data155[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17414974487670720, 0.60000000000000009, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34615238767335027, 0.60000000000000009, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51453257838108579, 0.60000000000000009, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67882386787534410, 0.60000000000000009, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.83948470233173578, 0.60000000000000009, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.99753496200074021, 0.60000000000000009, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1541101404388487, 0.60000000000000009, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3100911323398816, 0.60000000000000009, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17556359876533037, 0.60000000000000009, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35737601674244679, 0.60000000000000009, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55197933771320218, 0.60000000000000009, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.76633591620002905, 0.60000000000000009, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0075231136019616, 0.60000000000000009, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2815842073813450, 0.60000000000000009, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5911666941449827, 0.60000000000000009, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.9323227566025762, 0.60000000000000009, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler155 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.40000000000000002. +-template +-void test155() ++// Test data for k=0.60000000000000009, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1397785842303966e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.5339913122479866e-32 ++// stddev(f - f_Boost): 1.2385440291923362e-16 ++const testcase_ellint_3 ++data156[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data155) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data155[i].k), Tp(data155[i].nu), +- Tp(data155[i].phi)); +- const Tp f0 = data155[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.50000000000000000. +-testcase_ellint_3 data156[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17397586700252810, 0.60000000000000009, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34483533397138516, 0.60000000000000009, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51044500461706499, 0.60000000000000009, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67009988034712675, 0.60000000000000009, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.82434762375735193, 0.60000000000000009, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.97447346702799043, 0.60000000000000009, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1219494000522143, 0.60000000000000009, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2680242605954488, 0.60000000000000009, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17574324658480217, 0.60000000000000009, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35887240603169313, 0.60000000000000009, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55737161826345261, 0.60000000000000009, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78028227313077458, 0.60000000000000009, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0376989776486290, 0.60000000000000009, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3395933991042928, 0.60000000000000009, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6924049626591784, 0.60000000000000009, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0931011856518920, 0.60000000000000009, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler156 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.50000000000000000. +-template +-void test156() ++// Test data for k=0.60000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 ++const testcase_ellint_3 ++data157[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data156) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data156[i].k), Tp(data156[i].nu), +- Tp(data156[i].phi)); +- const Tp f0 = data156[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.59999999999999998. +-testcase_ellint_3 data157[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17380260984469356, 0.60000000000000009, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34353585361777839, 0.60000000000000009, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50646805774321402, 0.60000000000000009, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66174468108625517, 0.60000000000000009, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.81007462280278408, 0.60000000000000009, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.95303466945718773, 0.60000000000000009, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0924118588677503, 0.60000000000000009, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2297640574847937, 0.60000000000000009, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17592355661219386, 0.60000000000000009, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36039141192661606, 0.60000000000000009, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56295472636903854, 0.60000000000000009, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.79515295130165986, 0.60000000000000009, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0711886441942242, 0.60000000000000009, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4072952835139891, 0.60000000000000009, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8174863977376825, 0.60000000000000009, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.3029921578542232, 0.60000000000000009, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.8388723099514972, 0.60000000000000009, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler157 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.59999999999999998. +-template +-void test157() ++// Test data for k=0.60000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.0027679235921772e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 ++const testcase_ellint_3 ++data158[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data157) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data157[i].k), Tp(data157[i].nu), +- Tp(data157[i].phi)); +- const Tp f0 = data157[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.69999999999999996. +-testcase_ellint_3 data158[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17362996946312009, 0.60000000000000009, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34225353454870588, 0.60000000000000009, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50259656397799546, 0.60000000000000009, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.65373184496628944, 0.60000000000000009, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.79658372884056439, 0.60000000000000009, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.93303240100245466, 0.60000000000000009, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0651547944716557, 0.60000000000000009, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1947676204853441, 0.60000000000000009, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3232737468822811, 0.60000000000000009, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17610453321631936, 0.60000000000000009, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36193365056369764, 0.60000000000000009, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56874098962268527, 0.60000000000000009, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.81106198671477181, 0.60000000000000009, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1086886419010082, 0.60000000000000009, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4879048567239257, 0.60000000000000009, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9780310073615925, 0.60000000000000009, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.5941545586772712, 0.60000000000000009, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler158 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.69999999999999996. +-template +-void test158() ++// Test data for k=0.60000000000000009, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 7.3044933435043190e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 ++const testcase_ellint_3 ++data159[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data158) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data158[i].k), Tp(data158[i].nu), +- Tp(data158[i].phi)); +- const Tp f0 = data158[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.80000000000000004. +-testcase_ellint_3 data159[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17345794195390687, 0.60000000000000009, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34098797854531027, 0.60000000000000009, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49882569168826230, 0.60000000000000009, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64603758566475511, 0.60000000000000009, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.78380365594769730, 0.60000000000000009, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.91430946255611223, 0.60000000000000009, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0398955217270607, 0.60000000000000009, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1625948314277679, 0.60000000000000009, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17628618080795252, 0.60000000000000009, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36349976272521012, 0.60000000000000009, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57474392342151914, 0.60000000000000009, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.82814493499158170, 0.60000000000000009, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1511281795998280, 0.60000000000000009, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5864286332503075, 0.60000000000000009, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1958944866494527, 0.60000000000000009, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.0398358172574604, 0.60000000000000009, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler159 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.80000000000000004. +-template +-void test159() ++// Test data for k=0.60000000000000009, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.5952142720718732e-16 ++// mean(f - f_Boost): 4.6351811278100284e-16 ++// variance(f - f_Boost): 2.1278339779151204e-31 ++// stddev(f - f_Boost): 4.6128450851021651e-16 ++const testcase_ellint_3 ++data160[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data159) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data159[i].k), Tp(data159[i].nu), +- Tp(data159[i].phi)); +- const Tp f0 = data159[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.90000000000000002. +-testcase_ellint_3 data160[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17328652344890033, 0.60000000000000009, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33973880062929018, 0.60000000000000009, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49515092233122765, 0.60000000000000009, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63864042139737043, 0.60000000000000009, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.77167205646538850, 0.60000000000000009, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.89673202848034428, 0.60000000000000009, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0163984492661304, 0.60000000000000009, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1328845785162431, 0.60000000000000009, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2479362973851875, 0.60000000000000009, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17646850384035848, 0.60000000000000009, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36509041515134105, 0.60000000000000009, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58097838596260631, 0.60000000000000009, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.84656453396163722, 0.60000000000000009, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1997828426963724, 0.60000000000000009, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7112436789225605, 0.60000000000000009, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.5193168553672312, 0.60000000000000009, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.8656670488606690, 0.60000000000000009, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.8709993116265604, 0.60000000000000009, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler160 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.90000000000000002. +-template +-void test160() ++// Test data for k=0.70000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1569224977685422e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 1.6571557210371951e-32 ++// stddev(f - f_Boost): 1.2873056051447903e-16 ++const testcase_ellint_3 ++data161[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data160) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data160[i].k), Tp(data160[i].nu), +- Tp(data160[i].phi)); +- const Tp f0 = data160[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data161[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17496737466916720, 0.69999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35254687535677925, 0.69999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53536740275997130, 0.69999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.72603797651684465, 0.69999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.92698296348313458, 0.69999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1400447527693316, 0.69999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3657668117194071, 0.69999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.6024686895959159, 0.69999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17496737466916723, 0.70000000000000018, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35254687535677931, 0.70000000000000018, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53536740275997130, 0.70000000000000018, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.72603797651684454, 0.70000000000000018, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.92698296348313447, 0.70000000000000018, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1400447527693318, 0.70000000000000018, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3657668117194073, 0.70000000000000018, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.6024686895959164, 0.70000000000000018, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.8456939983747236, 0.70000000000000018, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler161 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.0000000000000000. +-template +-void test161() ++// Test data for k=0.70000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9552278747527691e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 1.3695501826753678e-32 ++// stddev(f - f_Boost): 1.1702778228589004e-16 ++const testcase_ellint_3 ++data162[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data161) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data161[i].k), Tp(data161[i].nu), +- Tp(data161[i].phi)); +- const Tp f0 = data161[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data162[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17479076384884681, 0.69999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35114844900396364, 0.69999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53072776947527012, 0.69999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.71530198262386246, 0.69999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.90666760677828306, 0.69999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1063366517438080, 0.69999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3149477243092147, 0.69999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.5314886725038925, 0.69999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17514462737300920, 0.70000000000000018, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35396527997470451, 0.70000000000000018, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54015179589433981, 0.70000000000000018, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.73734430854477728, 0.70000000000000018, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.94888950796697047, 0.70000000000000018, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1772807959736322, 0.70000000000000018, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4231796401075834, 0.70000000000000018, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6841856799887471, 0.70000000000000018, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.9541347343119564, 0.70000000000000018, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler162 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.10000000000000001. +-template +-void test162() ++// Test data for k=0.70000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.7430437016285820e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data163[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data162) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data162[i].k), Tp(data162[i].nu), +- Tp(data162[i].phi)); +- const Tp f0 = data162[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data163[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17461479077791472, 0.69999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34976950621407538, 0.69999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52622533231350188, 0.69999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.70508774017895226, 0.69999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.88775302531730294, 0.69999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0756195476149006, 0.69999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2695349716654372, 0.69999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4690814617070540, 0.69999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.6721098780092147, 0.69999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17532252613350796, 0.70000000000000018, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35540417596807522, 0.70000000000000018, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54508913033361928, 0.70000000000000018, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74927635777718415, 0.70000000000000018, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.97261706337936338, 0.70000000000000018, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2187303976209327, 0.70000000000000018, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4887796709222487, 0.70000000000000018, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.7796581281839214, 0.70000000000000018, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler163 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.20000000000000001. +-template +-void test163() ++// Test data for k=0.70000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.2570807706941696e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 1.5582437633995295e-32 ++// stddev(f - f_Boost): 1.2482963443828271e-16 ++const testcase_ellint_3 ++data164[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data163) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data163[i].k), Tp(data163[i].nu), +- Tp(data163[i].phi)); +- const Tp f0 = data163[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data164[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17443945136076172, 0.69999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34840956983535287, 0.69999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52185308551329179, 0.69999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.69535240431168266, 0.69999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.87007983473964923, 0.69999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0474657975577066, 0.69999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2286225419931889, 0.69999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4136490671013271, 0.69999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17550107516328570, 0.70000000000000018, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35686409576571965, 0.70000000000000018, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55018827316513352, 0.70000000000000018, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.76189759494390275, 0.70000000000000018, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.99844623430885626, 0.70000000000000018, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2652862989039833, 0.70000000000000018, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5647666808691361, 0.70000000000000018, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8932499694938165, 0.70000000000000018, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.2392290510988535, 0.70000000000000018, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler164 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.29999999999999999. +-template +-void test164() ++// Test data for k=0.70000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3719045096496910e-16 ++// mean(f - f_Boost): 1.3600232051658169e-16 ++// variance(f - f_Boost): 1.1718213750516114e-32 ++// stddev(f - f_Boost): 1.0825069861444829e-16 ++const testcase_ellint_3 ++data165[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data164) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data164[i].k), Tp(data164[i].nu), +- Tp(data164[i].phi)); +- const Tp f0 = data164[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data165[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17426474153983226, 0.69999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34706817945773732, 0.69999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51760452851738159, 0.69999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.68605801534722766, 0.69999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.85351339387296532, 0.69999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0215297967969537, 0.69999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1915051074460528, 0.69999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3639821911744707, 0.69999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17568027871494424, 0.70000000000000018, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35834559208180261, 0.70000000000000018, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55545885451190613, 0.70000000000000018, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.77528120402568113, 0.70000000000000018, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0267241287600322, 0.70000000000000018, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3181380338980246, 0.70000000000000018, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.6542840785132087, 0.70000000000000018, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.0315595131131823, 0.70000000000000018, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler165 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.40000000000000002. +-template +-void test165() ++// Test data for k=0.70000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.0277361210295499e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 6.3799163752809956e-32 ++// stddev(f - f_Boost): 2.5258496343371268e-16 ++const testcase_ellint_3 ++data166[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data165) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data165[i].k), Tp(data165[i].nu), +- Tp(data165[i].phi)); +- const Tp f0 = data165[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data166[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17409065729516093, 0.69999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34574489064986091, 0.69999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51347361925579793, 0.69999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67717079489579290, 0.69999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.83793902055292280, 0.69999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.99752863545289705, 0.69999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1576240080401499, 0.69999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3191464023923762, 0.69999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17586014108156545, 0.70000000000000018, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35984923894341653, 0.70000000000000018, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56091135606739995, 0.70000000000000018, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78951212635197054, 0.70000000000000018, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0578865732938731, 0.70000000000000018, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3789149005151722, 0.70000000000000018, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.7620212286086228, 0.70000000000000018, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.2051554347435589, 0.70000000000000018, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.6868019968236996, 0.70000000000000018, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler166 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.50000000000000000. +-template +-void test166() ++// Test data for k=0.70000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8597454441867134e-16 ++// mean(f - f_Boost): 2.5535129566378598e-16 ++// variance(f - f_Boost): 2.8561208198482198e-31 ++// stddev(f - f_Boost): 5.3442687243889785e-16 ++const testcase_ellint_3 ++data167[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data166) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data166[i].k), Tp(data166[i].nu), +- Tp(data166[i].phi)); +- const Tp f0 = data166[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data167[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17391719464391611, 0.69999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34443927423869031, 0.69999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50945473266486074, 0.69999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66866056326513823, 0.69999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.82325830002337352, 0.69999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.97522808245669357, 0.69999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1265300613705282, 0.69999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2784066076152003, 0.69999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17604066659721918, 0.70000000000000018, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36137563278353424, 0.70000000000000018, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56655721272747606, 0.70000000000000018, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.80468966552978305, 0.70000000000000018, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0924902943683852, 0.70000000000000018, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4499247992499800, 0.70000000000000018, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8953714382113818, 0.70000000000000018, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.4323229949248670, 0.70000000000000018, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler167 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.59999999999999998. +-template +-void test167() ++// Test data for k=0.70000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.2316852368580916e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 ++const testcase_ellint_3 ++data168[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data167) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data167[i].k), Tp(data167[i].nu), +- Tp(data167[i].phi)); +- const Tp f0 = data167[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data168[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17374434963995028, 0.69999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34315091562900674, 0.69999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50554262375653358, 0.69999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66050025406305812, 0.69999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.80938620118847404, 0.69999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.95443223855852144, 0.69999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0978573207128302, 0.69999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.2411754575007123, 0.69999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17622185963747933, 0.70000000000000018, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36292539360435261, 0.70000000000000018, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57240892970150015, 0.70000000000000018, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.82093084713182629, 0.70000000000000018, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1312609022179871, 0.70000000000000018, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5345768067715795, 0.70000000000000018, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.0668847445934424, 0.70000000000000018, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.7483444537551245, 0.70000000000000018, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler168 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.69999999999999996. +-template +-void test168() ++// Test data for k=0.70000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1198716111867353e-16 ++// mean(f - f_Boost): 2.2482016248659419e-16 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 ++const testcase_ellint_3 ++data169[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data168) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data168[i].k), Tp(data168[i].nu), +- Tp(data168[i].phi)); +- const Tp f0 = data168[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data169[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17357211837335737, 0.69999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34187941416012108, 0.69999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50173239465478270, 0.69999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.65266550725988315, 0.69999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.79624879865249298, 0.69999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.93497577043296920, 0.69999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0713041566930748, 0.69999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2069772023255652, 0.69999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.3427110650397533, 0.69999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17640372461994805, 0.70000000000000018, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36449916621651091, 0.70000000000000018, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57848021800372584, 0.70000000000000018, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.83837480968392586, 0.70000000000000018, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1751669030061143, 0.70000000000000018, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.6381851899173603, 0.70000000000000018, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.3002065924302197, 0.70000000000000018, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.2337600665337871, 0.70000000000000018, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler169 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.80000000000000004. +-template +-void test169() ++// Test data for k=0.70000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 7.4384942649885490e-16 ++// variance(f - f_Boost): 9.7403930714297352e-31 ++// stddev(f - f_Boost): 9.8693429727767263e-16 ++const testcase_ellint_3 ++data170[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data169) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data169[i].k), Tp(data169[i].nu), +- Tp(data169[i].phi)); +- const Tp f0 = data169[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data170[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17340049697003634, 0.69999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34062438249741556, 0.69999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49801946510076878, 0.69999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.64513432604750487, 0.69999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.78378145487573758, 0.69999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.91671799500854634, 0.69999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0466193579463123, 0.69999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1754218079199146, 0.69999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3040500499695911, 0.69999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17658626600478800, 0.70000000000000018, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36609762156017206, 0.70000000000000018, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58478615187842409, 0.70000000000000018, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.85718862878291846, 0.70000000000000018, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2255385617397643, 0.70000000000000018, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7696521899992941, 0.70000000000000018, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.6476314987883507, 0.70000000000000018, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.1373434902898083, 0.70000000000000018, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler170 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.90000000000000002. +-template +-void test170() ++// Test data for k=0.80000000000000004, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 ++const testcase_ellint_3 ++data171[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data170) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data170[i].k), Tp(data170[i].nu), +- Tp(data170[i].phi)); +- const Tp f0 = data170[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data171[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17510154241338902, 0.80000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35365068839779390, 0.80000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53926804409084561, 0.80000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.73587926028070383, 0.80000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1789022995388239, 0.80000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.4323027881876009, 0.80000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.7069629739121674, 0.80000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17510154241338899, 0.80000000000000004, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35365068839779396, 0.80000000000000004, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53926804409084550, 0.80000000000000004, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.73587926028070372, 0.80000000000000004, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1789022995388236, 0.80000000000000004, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.4323027881876012, 0.80000000000000004, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.7069629739121677, 0.80000000000000004, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler171 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.0000000000000000. +-template +-void test171() ++// Test data for k=0.80000000000000004, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 ++const testcase_ellint_3 ++data172[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data171) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data171[i].k), Tp(data171[i].nu), +- Tp(data171[i].phi)); +- const Tp f0 = data171[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data172[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17492468824017166, 0.80000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35224443521476911, 0.80000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53456851853226961, 0.80000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.72488875602364944, 0.80000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.92661354274638952, 0.80000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1432651144499077, 0.80000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3774479927211429, 0.80000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.6287092337196041, 0.80000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17527903952342144, 0.80000000000000004, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35507705313548549, 0.80000000000000004, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54411455987643553, 0.80000000000000004, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.74745625666804383, 0.80000000000000004, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.97046953684238557, 0.80000000000000004, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2183080025184605, 0.80000000000000004, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4943711151994405, 0.80000000000000004, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.7972401309544201, 0.80000000000000004, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler172 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.10000000000000001. +-template +-void test172() ++// Test data for k=0.80000000000000004, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 ++const testcase_ellint_3 ++data173[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data172) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data172[i].k), Tp(data172[i].nu), +- Tp(data172[i].phi)); +- const Tp f0 = data172[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data173[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17474847286224943, 0.80000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35085779529084682, 0.80000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53000829263059157, 0.80000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.71443466027453406, 0.80000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.90698196872715420, 0.80000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1108198200558581, 0.80000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.3284988909963957, 0.80000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.5600369318140328, 0.80000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17545718375086419, 0.80000000000000004, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35652404627248163, 0.80000000000000004, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54911638512920913, 0.80000000000000004, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.75967684282131176, 0.80000000000000004, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.99513526893543769, 0.80000000000000004, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2622192109995993, 0.80000000000000004, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.5654106676347741, 0.80000000000000004, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.9029531718534984, 0.80000000000000004, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler173 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.20000000000000001. +-template +-void test173() ++// Test data for k=0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 ++const testcase_ellint_3 ++data174[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data173) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data173[i].k), Tp(data173[i].nu), +- Tp(data173[i].phi)); +- const Tp f0 = data173[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data174[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17457289217669891, 0.80000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34949028801501258, 0.80000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52558024362769318, 0.80000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.70447281740094914, 0.80000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.88864745641528986, 0.80000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0811075819341465, 0.80000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2844589654082377, 0.80000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4991461361277849, 0.80000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17563597931587369, 0.80000000000000004, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35799220412005128, 0.80000000000000004, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55428253691111318, 0.80000000000000004, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.77260647376977365, 0.80000000000000004, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0220015271210958, 0.80000000000000004, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3115965312302671, 0.80000000000000004, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.6478518468813512, 0.80000000000000004, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.0290458414203481, 0.80000000000000004, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.4392042002725693, 0.80000000000000004, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler174 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.29999999999999999. +-template +-void test174() ++// Test data for k=0.80000000000000004, nu=0.40000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 ++const testcase_ellint_3 ++data175[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data174) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data174[i].k), Tp(data174[i].nu), +- Tp(data174[i].phi)); +- const Tp f0 = data174[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data175[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17439794211872178, 0.80000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34814144964568972, 0.80000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52127776285273075, 0.80000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.69496411438966599, 0.80000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.87146878427509589, 0.80000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0537579024937762, 0.80000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.2445534387922637, 0.80000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.4446769766361993, 0.80000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17581543047866136, 0.80000000000000004, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35948208343061633, 0.80000000000000004, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55962280893702021, 0.80000000000000004, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.78632063889234116, 0.80000000000000004, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0514333069550323, 0.80000000000000004, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3677213138838757, 0.80000000000000004, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.7451736773665165, 0.80000000000000004, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.1830100424586831, 0.80000000000000004, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.6604037035529724, 0.80000000000000004, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler175 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.40000000000000002. +-template +-void test175() ++// Test data for k=0.80000000000000004, nu=0.50000000000000000. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 ++const testcase_ellint_3 ++data176[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data175) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data175[i].k), Tp(data175[i].nu), +- Tp(data175[i].phi)); +- const Tp f0 = data175[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data176[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17422361866118047, 0.80000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34681083254170475, 0.80000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51709470815494440, 0.80000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.68587375344080259, 0.80000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.85532571852810624, 0.80000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0284677391874906, 0.80000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2081693942686225, 0.80000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3955803006426311, 0.80000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17599554153999472, 0.80000000000000004, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36099426243351540, 0.80000000000000004, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56514786174780673, 0.80000000000000004, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.80090697622371010, 0.80000000000000004, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0838891627679339, 0.80000000000000004, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.4323506654466280, 0.80000000000000004, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.8625761085390575, 0.80000000000000004, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.3768757305654766, 0.80000000000000004, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.9478781158239746, 0.80000000000000004, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler176 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.50000000000000000. +-template +-void test176() ++// Test data for k=0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 ++const testcase_ellint_3 ++data177[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data176) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data176[i].k), Tp(data176[i].nu), +- Tp(data176[i].phi)); +- const Tp f0 = data176[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data177[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17404991781414092, 0.80000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34549800443625167, 0.80000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51302536167001556, 0.80000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.67717065003912258, 0.80000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.84011512421134416, 0.80000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0049863847088742, 0.80000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1748145941898918, 0.80000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.3510319699755071, 0.80000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17617631684170665, 0.80000000000000004, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36252934193666231, 0.80000000000000004, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57086932622945163, 0.80000000000000004, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.81646796740150973, 0.80000000000000004, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1199552158519064, 0.80000000000000004, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5079766673336394, 0.80000000000000004, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.0082747447038165, 0.80000000000000004, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.6315146066775523, 0.80000000000000004, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.3418121892288051, 0.80000000000000004, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler177 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.59999999999999998. +-template +-void test177() ++// Test data for k=0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 ++const testcase_ellint_3 ++data178[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data177) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data177[i].k), Tp(data177[i].nu), +- Tp(data177[i].phi)); +- const Tp f0 = data177[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data178[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17387683562442202, 0.80000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34420254775101611, 0.80000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50906439222143685, 0.80000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66882693152688433, 0.80000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.82574792844091316, 0.80000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.98310431309490953, 0.80000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.1440884535113258, 0.80000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.3103743938952537, 0.80000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17635776076721221, 0.80000000000000004, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36408794649916976, 0.80000000000000004, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57679992290624138, 0.80000000000000004, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.83312441418142813, 0.80000000000000004, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1603958891464856, 0.80000000000000004, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5982855143796213, 0.80000000000000004, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.1962484408371821, 0.80000000000000004, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.9873281786111869, 0.80000000000000004, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler178 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.69999999999999996. +-template +-void test178() ++// Test data for k=0.80000000000000004, nu=0.80000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 ++const testcase_ellint_3 ++data179[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data178) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data178[i].k), Tp(data178[i].nu), +- Tp(data178[i].phi)); +- const Tp f0 = data178[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data179[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17370436817515206, 0.80000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34292405894783395, 0.80000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50520682176250087, 0.80000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.66081751679736189, 0.80000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.81214672249355102, 0.80000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.96264481387685574, 0.80000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1156611352656258, 0.80000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2730756225143889, 0.80000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.4339837018309474, 0.80000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17653987774203392, 0.80000000000000004, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36567072568046877, 0.80000000000000004, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58295359996558616, 0.80000000000000004, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.85101998309176108, 0.80000000000000004, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2062322059736537, 0.80000000000000004, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.7090321420917429, 0.80000000000000004, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.4529058049405066, 0.80000000000000004, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.5368893360106948, 0.80000000000000004, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.9246422058196062, 0.80000000000000004, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler179 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.80000000000000004. +-template +-void test179() ++// Test data for k=0.80000000000000004, nu=0.90000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 ++const testcase_ellint_3 ++data180[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data179) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data179[i].k), Tp(data179[i].nu), +- Tp(data179[i].phi)); +- const Tp f0 = data179[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data180[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17353251158533153, 0.80000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34166214791545768, 0.80000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50144799535130580, 0.80000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.65311976193814447, 0.80000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.79924384892320866, 0.80000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.94345762353365625, 0.80000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0892582069219159, 0.80000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.2387000876610268, 0.80000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17672267223433513, 0.80000000000000004, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36727835537196063, 0.80000000000000004, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58934569363716649, 0.80000000000000004, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.87032723471138851, 0.80000000000000004, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2588676111323349, 0.80000000000000004, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.8498731900660019, 0.80000000000000004, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.8368381299300420, 0.80000000000000004, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.5674844191654058, 0.80000000000000004, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 7.2263259298637115, 0.80000000000000004, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler180 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.90000000000000002. +-template +-void test180() ++// Test data for k=0.90000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3381508715713360e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data181[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data180) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data180[i].k), Tp(data180[i].nu), +- Tp(data180[i].phi)); +- const Tp f0 = data180[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.0000000000000000. +-testcase_ellint_3 data181[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17525427376115027, 0.89999999999999991, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35492464591297446, 0.89999999999999991, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.54388221416157123, 0.89999999999999991, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.74797400423532501, 0.89999999999999991, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.97463898451966458, 0.89999999999999991, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.2334463254523438, 0.89999999999999991, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.5355247765594910, 0.89999999999999991, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.8882928567775117, 0.89999999999999991, 0.0000000000000000, +- 1.3962634015954636 }, +- { 2.2805491384227699, 0.89999999999999991, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17525427376115027, 0.90000000000000013, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35492464591297446, 0.90000000000000013, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.54388221416157123, 0.90000000000000013, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.74797400423532512, 0.90000000000000013, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.97463898451966446, 0.90000000000000013, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.2334463254523440, 0.90000000000000013, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.5355247765594915, 0.90000000000000013, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.8882928567775128, 0.90000000000000013, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler181 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.0000000000000000. +-template +-void test181() ++// Test data for k=0.90000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 ++const testcase_ellint_3 ++data182[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data181) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data181[i].k), Tp(data181[i].nu), +- Tp(data181[i].phi)); +- const Tp f0 = data181[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.10000000000000001. +-testcase_ellint_3 data182[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17507714233254659, 0.89999999999999991, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35350932904326521, 0.89999999999999991, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53911129989870987, 0.89999999999999991, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.73666644254508407, 0.89999999999999991, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.95250736612100184, 0.89999999999999991, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1950199550905591, 0.89999999999999991, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.4741687286340848, 0.89999999999999991, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.7968678183506053, 0.89999999999999991, 0.10000000000000001, +- 1.3962634015954636 }, +- { 2.1537868513875282, 0.89999999999999991, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17543204932716244, 0.90000000000000013, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35636022898551184, 0.90000000000000013, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54880278898382595, 0.90000000000000013, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.75988834774529268, 0.90000000000000013, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.99853303003568117, 0.90000000000000013, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2759958823999022, 0.90000000000000013, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.6051187364639401, 0.90000000000000013, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.9941406879519474, 0.90000000000000013, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler182 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.10000000000000001. +-template +-void test182() ++// Test data for k=0.90000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9533518431433547e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data183[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data182) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data182[i].k), Tp(data182[i].nu), +- Tp(data182[i].phi)); +- const Tp f0 = data182[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.20000000000000001. +-testcase_ellint_3 data183[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17490065089140930, 0.89999999999999991, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35211377590661436, 0.89999999999999991, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53448220334204111, 0.89999999999999991, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.72591368943179591, 0.89999999999999991, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.93192539780038763, 0.89999999999999991, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1600809679692681, 0.89999999999999991, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.4195407225882508, 0.89999999999999991, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.7168966476424521, 0.89999999999999991, 0.20000000000000001, +- 1.3962634015954636 }, +- { 2.0443194576468890, 0.89999999999999991, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17561047321968409, 0.90000000000000013, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35781659944356109, 0.90000000000000013, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.55388150905215283, 0.90000000000000013, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.77246874123251441, 0.90000000000000013, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 1.0244466254771925, 0.90000000000000013, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.3234824077640801, 0.90000000000000013, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.6849848968804240, 0.90000000000000013, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 2.1185749045502278, 0.90000000000000013, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.6076835743348417, 0.90000000000000013, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler183 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.20000000000000001. +-template +-void test183() ++// Test data for k=0.90000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9712691025502371e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 ++const testcase_ellint_3 ++data184[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data183) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data183[i].k), Tp(data183[i].nu), +- Tp(data183[i].phi)); +- const Tp f0 = data183[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.29999999999999999. +-testcase_ellint_3 data184[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17472479532647534, 0.89999999999999991, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.35073750187374114, 0.89999999999999991, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52998766129466968, 0.89999999999999991, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.71566993548699565, 0.89999999999999991, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.91271517762560195, 0.89999999999999991, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.1281241199843368, 0.89999999999999991, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.3704929576917448, 0.89999999999999991, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.6461981511487711, 0.89999999999999991, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.9486280260314424, 0.89999999999999991, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17578954966746221, 0.90000000000000013, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35929429810867447, 0.90000000000000013, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55912757154240822, 0.90000000000000013, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.78578314722025389, 0.90000000000000013, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0526941001131365, 0.90000000000000013, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3769682234538601, 0.90000000000000013, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.7779437432911240, 0.90000000000000013, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.2676509341813635, 0.90000000000000013, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.8256506968858517, 0.90000000000000013, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler184 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.29999999999999999. +-template +-void test184() ++// Test data for k=0.90000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 ++const testcase_ellint_3 ++data185[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data184) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data184[i].k), Tp(data184[i].nu), +- Tp(data184[i].phi)); +- const Tp f0 = data184[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.40000000000000002. +-testcase_ellint_3 data185[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17454957156468839, 0.89999999999999991, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34938003933330430, 0.89999999999999991, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52562093533067444, 0.89999999999999991, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.70589461324915681, 0.89999999999999991, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.89472658511942849, 0.89999999999999991, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0987419542323438, 0.89999999999999991, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.3261349565496301, 0.89999999999999991, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.5831293909853761, 0.89999999999999991, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.8641114227238347, 0.89999999999999991, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17596928293938452, 0.90000000000000013, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.36079388642472821, 0.90000000000000013, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.56455096667115612, 0.90000000000000013, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.79990996997869435, 0.90000000000000013, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0836647913872215, 0.90000000000000013, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.4378726836091849, 0.90000000000000013, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.8880446720682853, 0.90000000000000013, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.4505848932025232, 0.90000000000000013, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 3.1000689868578624, 0.90000000000000013, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler185 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.40000000000000002. +-template +-void test185() ++// Test data for k=0.90000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3939646155354115e-16 ++// mean(f - f_Boost): 1.5820678100908481e-16 ++// variance(f - f_Boost): 1.0089970755557622e-32 ++// stddev(f - f_Boost): 1.0044884646205561e-16 ++const testcase_ellint_3 ++data186[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data185) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data185[i].k), Tp(data185[i].nu), +- Tp(data185[i].phi)); +- const Tp f0 = data185[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.50000000000000000. +-testcase_ellint_3 data186[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17437497557073336, 0.89999999999999991, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34804093691586013, 0.89999999999999991, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.52137576320372903, 0.89999999999999991, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.69655163996912262, 0.89999999999999991, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.87783188683054236, 0.89999999999999991, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0716015959755183, 0.89999999999999991, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2857636916026749, 0.89999999999999991, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.5264263913252358, 0.89999999999999991, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.7888013241937859, 0.89999999999999991, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17614967734498183, 0.90000000000000013, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36231594750319435, 0.90000000000000013, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.57016256984349567, 0.90000000000000013, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.81494025918293422, 0.90000000000000013, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.1178482279283477, 0.90000000000000013, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.5081455873012106, 0.90000000000000013, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 2.0213599730863998, 0.90000000000000013, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.6822467012926832, 0.90000000000000013, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler186 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.50000000000000000. +-template +-void test186() ++// Test data for k=0.90000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.4914274070443813e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 2.5224926888894056e-31 ++// stddev(f - f_Boost): 5.0224423231027804e-16 ++const testcase_ellint_3 ++data187[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data186) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data186[i].k), Tp(data186[i].nu), +- Tp(data186[i].phi)); +- const Tp f0 = data186[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.59999999999999998. +-testcase_ellint_3 data187[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17420100334657815, 0.89999999999999991, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34671975876122157, 0.89999999999999991, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51724631570707957, 0.89999999999999991, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.68760879113743034, 0.89999999999999991, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.86192157779698364, 0.89999999999999991, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0464279696166352, 0.89999999999999991, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.2488156247094004, 0.89999999999999991, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.4750988777188470, 0.89999999999999991, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.7211781128919521, 0.89999999999999991, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17633073723493825, 0.90000000000000013, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36386108723492810, 0.90000000000000013, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57597424744716241, 0.90000000000000013, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.83098051948501150, 0.90000000000000013, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1558706545698916, 0.90000000000000013, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5905576379415669, 0.90000000000000013, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.1875186010215084, 0.90000000000000013, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.9885767771316853, 0.90000000000000013, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.9549939883570238, 0.90000000000000013, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler187 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.59999999999999998. +-template +-void test187() ++// Test data for k=0.90000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.5442489886293633e-16 ++// mean(f - f_Boost): 4.3576253716537392e-16 ++// variance(f - f_Boost): 2.2187568928205130e-31 ++// stddev(f - f_Boost): 4.7103682370070737e-16 ++const testcase_ellint_3 ++data188[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data187) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data187[i].k), Tp(data187[i].nu), +- Tp(data187[i].phi)); +- const Tp f0 = data187[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.69999999999999996. +-testcase_ellint_3 data188[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17402765093102210, 0.89999999999999991, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34541608382635131, 0.89999999999999991, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.51322715827061693, 0.89999999999999991, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.67903717872440283, 0.89999999999999991, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.84690113601682671, 0.89999999999999991, 0.69999999999999996, +- 0.87266462599716477 }, +- { 1.0229914311548416, 0.89999999999999991, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.2148329639709381, 0.89999999999999991, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.4283586501307799, 0.89999999999999991, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.6600480747670936, 0.89999999999999991, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17651246700160939, 0.90000000000000013, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36542993547358982, 0.90000000000000013, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.58199897877674867, 0.90000000000000013, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.84815633587352857, 0.90000000000000013, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1985495623872375, 0.90000000000000013, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.6892158134027691, 0.90000000000000013, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.4029722191094236, 0.90000000000000013, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 3.4201084941340061, 0.90000000000000013, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 4.6985482312992444, 0.90000000000000013, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler188 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.69999999999999996. +-template +-void test188() ++// Test data for k=0.90000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9362432595976420e-16 ++// mean(f - f_Boost): 3.0531133177191805e-16 ++// variance(f - f_Boost): 1.1508025840536076e-32 ++// stddev(f - f_Boost): 1.0727546709539920e-16 ++const testcase_ellint_3 ++data189[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data188) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data188[i].k), Tp(data188[i].nu), +- Tp(data188[i].phi)); +- const Tp f0 = data188[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.80000000000000004. +-testcase_ellint_3 data189[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17385491439925149, 0.89999999999999991, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34412950523113928, 0.89999999999999991, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50931321668729601, 0.89999999999999991, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.67081081392296327, 0.89999999999999991, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.83268846097293259, 0.89999999999999991, 0.80000000000000004, +- 0.87266462599716477 }, +- { 1.0010985015814025, 0.89999999999999991, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1834394045489678, 0.89999999999999991, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.3855695891683182, 0.89999999999999991, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.6044591960982200, 0.89999999999999991, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17669487107954862, 0.90000000000000013, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36702314729628421, 0.90000000000000013, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58825099711365492, 0.90000000000000013, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.86661711422209031, 0.90000000000000013, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2469779109884802, 0.90000000000000013, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.8105469760531578, 0.90000000000000013, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.6989505165893752, 0.90000000000000013, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 4.0935213267757433, 0.90000000000000013, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler189 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.80000000000000004. +-template +-void test189() ++// Test data for k=0.90000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9577148062669782e-16 ++// mean(f - f_Boost): 5.9119376061289588e-16 ++// variance(f - f_Boost): 1.7340883003959522e-31 ++// stddev(f - f_Boost): 4.1642385863395872e-16 ++const testcase_ellint_3 ++data190[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data189) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data189[i].k), Tp(data189[i].nu), +- Tp(data189[i].phi)); +- const Tp f0 = data189[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.90000000000000002. +-testcase_ellint_3 data190[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17368278986240138, 0.89999999999999991, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34285962963961397, 0.89999999999999991, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50549974644993312, 0.89999999999999991, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.66290623857720876, 0.89999999999999991, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.81921183128847164, 0.89999999999999991, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.98058481956066368, 0.89999999999999991, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.1543223520473569, 0.89999999999999991, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.3462119782292934, 0.89999999999999991, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.5536420236310944, 0.89999999999999991, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17687795394604169, 0.90000000000000013, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36864140434751286, 0.90000000000000013, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.59474595366817051, 0.90000000000000013, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.88654237226056665, 0.90000000000000013, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.3026595810616726, 0.90000000000000013, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.9653635459278080, 0.90000000000000013, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 3.1451407527189468, 0.90000000000000013, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 5.3745230680316132, 0.90000000000000013, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 8.9942562031858717, 0.90000000000000013, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler190 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.90000000000000002. +-template +-void test190() +-{ +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data190) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data190[i].k), Tp(data190[i].nu), +- Tp(data190[i].phi)); +- const Tp f0 = data190[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} ++template ++ void ++ test(const testcase_ellint_3 (&data)[Num], Ret toler) ++ { ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); ++ unsigned int num_datum = Num; ++ for (unsigned int i = 0; i < num_datum; ++i) ++ { ++ const Ret f = std::tr1::ellint_3(data[i].k, data[i].nu, ++ data[i].phi); ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; ++ if (std::abs(diff) > max_abs_diff) ++ max_abs_diff = std::abs(diff); ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) ++ { ++ const Ret frac = diff / f0; ++ if (std::abs(frac) > max_abs_frac) ++ max_abs_frac = std::abs(frac); ++ } ++ } ++ VERIFY(max_abs_frac < toler); ++ } + +-int main(int, char**) ++int ++main() + { +- test001(); +- test002(); +- test003(); +- test004(); +- test005(); +- test006(); +- test007(); +- test008(); +- test009(); +- test010(); +- test011(); +- test012(); +- test013(); +- test014(); +- test015(); +- test016(); +- test017(); +- test018(); +- test019(); +- test020(); +- test021(); +- test022(); +- test023(); +- test024(); +- test025(); +- test026(); +- test027(); +- test028(); +- test029(); +- test030(); +- test031(); +- test032(); +- test033(); +- test034(); +- test035(); +- test036(); +- test037(); +- test038(); +- test039(); +- test040(); +- test041(); +- test042(); +- test043(); +- test044(); +- test045(); +- test046(); +- test047(); +- test048(); +- test049(); +- test050(); +- test051(); +- test052(); +- test053(); +- test054(); +- test055(); +- test056(); +- test057(); +- test058(); +- test059(); +- test060(); +- test061(); +- test062(); +- test063(); +- test064(); +- test065(); +- test066(); +- test067(); +- test068(); +- test069(); +- test070(); +- test071(); +- test072(); +- test073(); +- test074(); +- test075(); +- test076(); +- test077(); +- test078(); +- test079(); +- test080(); +- test081(); +- test082(); +- test083(); +- test084(); +- test085(); +- test086(); +- test087(); +- test088(); +- test089(); +- test090(); +- test091(); +- test092(); +- test093(); +- test094(); +- test095(); +- test096(); +- test097(); +- test098(); +- test099(); +- test100(); +- test101(); +- test102(); +- test103(); +- test104(); +- test105(); +- test106(); +- test107(); +- test108(); +- test109(); +- test110(); +- test111(); +- test112(); +- test113(); +- test114(); +- test115(); +- test116(); +- test117(); +- test118(); +- test119(); +- test120(); +- test121(); +- test122(); +- test123(); +- test124(); +- test125(); +- test126(); +- test127(); +- test128(); +- test129(); +- test130(); +- test131(); +- test132(); +- test133(); +- test134(); +- test135(); +- test136(); +- test137(); +- test138(); +- test139(); +- test140(); +- test141(); +- test142(); +- test143(); +- test144(); +- test145(); +- test146(); +- test147(); +- test148(); +- test149(); +- test150(); +- test151(); +- test152(); +- test153(); +- test154(); +- test155(); +- test156(); +- test157(); +- test158(); +- test159(); +- test160(); +- test161(); +- test162(); +- test163(); +- test164(); +- test165(); +- test166(); +- test167(); +- test168(); +- test169(); +- test170(); +- test171(); +- test172(); +- test173(); +- test174(); +- test175(); +- test176(); +- test177(); +- test178(); +- test179(); +- test180(); +- test181(); +- test182(); +- test183(); +- test184(); +- test185(); +- test186(); +- test187(); +- test188(); +- test189(); +- test190(); ++ test(data001, toler001); ++ test(data002, toler002); ++ test(data003, toler003); ++ test(data004, toler004); ++ test(data005, toler005); ++ test(data006, toler006); ++ test(data007, toler007); ++ test(data008, toler008); ++ test(data009, toler009); ++ test(data010, toler010); ++ test(data011, toler011); ++ test(data012, toler012); ++ test(data013, toler013); ++ test(data014, toler014); ++ test(data015, toler015); ++ test(data016, toler016); ++ test(data017, toler017); ++ test(data018, toler018); ++ test(data019, toler019); ++ test(data020, toler020); ++ test(data021, toler021); ++ test(data022, toler022); ++ test(data023, toler023); ++ test(data024, toler024); ++ test(data025, toler025); ++ test(data026, toler026); ++ test(data027, toler027); ++ test(data028, toler028); ++ test(data029, toler029); ++ test(data030, toler030); ++ test(data031, toler031); ++ test(data032, toler032); ++ test(data033, toler033); ++ test(data034, toler034); ++ test(data035, toler035); ++ test(data036, toler036); ++ test(data037, toler037); ++ test(data038, toler038); ++ test(data039, toler039); ++ test(data040, toler040); ++ test(data041, toler041); ++ test(data042, toler042); ++ test(data043, toler043); ++ test(data044, toler044); ++ test(data045, toler045); ++ test(data046, toler046); ++ test(data047, toler047); ++ test(data048, toler048); ++ test(data049, toler049); ++ test(data050, toler050); ++ test(data051, toler051); ++ test(data052, toler052); ++ test(data053, toler053); ++ test(data054, toler054); ++ test(data055, toler055); ++ test(data056, toler056); ++ test(data057, toler057); ++ test(data058, toler058); ++ test(data059, toler059); ++ test(data060, toler060); ++ test(data061, toler061); ++ test(data062, toler062); ++ test(data063, toler063); ++ test(data064, toler064); ++ test(data065, toler065); ++ test(data066, toler066); ++ test(data067, toler067); ++ test(data068, toler068); ++ test(data069, toler069); ++ test(data070, toler070); ++ test(data071, toler071); ++ test(data072, toler072); ++ test(data073, toler073); ++ test(data074, toler074); ++ test(data075, toler075); ++ test(data076, toler076); ++ test(data077, toler077); ++ test(data078, toler078); ++ test(data079, toler079); ++ test(data080, toler080); ++ test(data081, toler081); ++ test(data082, toler082); ++ test(data083, toler083); ++ test(data084, toler084); ++ test(data085, toler085); ++ test(data086, toler086); ++ test(data087, toler087); ++ test(data088, toler088); ++ test(data089, toler089); ++ test(data090, toler090); ++ test(data091, toler091); ++ test(data092, toler092); ++ test(data093, toler093); ++ test(data094, toler094); ++ test(data095, toler095); ++ test(data096, toler096); ++ test(data097, toler097); ++ test(data098, toler098); ++ test(data099, toler099); ++ test(data100, toler100); ++ test(data101, toler101); ++ test(data102, toler102); ++ test(data103, toler103); ++ test(data104, toler104); ++ test(data105, toler105); ++ test(data106, toler106); ++ test(data107, toler107); ++ test(data108, toler108); ++ test(data109, toler109); ++ test(data110, toler110); ++ test(data111, toler111); ++ test(data112, toler112); ++ test(data113, toler113); ++ test(data114, toler114); ++ test(data115, toler115); ++ test(data116, toler116); ++ test(data117, toler117); ++ test(data118, toler118); ++ test(data119, toler119); ++ test(data120, toler120); ++ test(data121, toler121); ++ test(data122, toler122); ++ test(data123, toler123); ++ test(data124, toler124); ++ test(data125, toler125); ++ test(data126, toler126); ++ test(data127, toler127); ++ test(data128, toler128); ++ test(data129, toler129); ++ test(data130, toler130); ++ test(data131, toler131); ++ test(data132, toler132); ++ test(data133, toler133); ++ test(data134, toler134); ++ test(data135, toler135); ++ test(data136, toler136); ++ test(data137, toler137); ++ test(data138, toler138); ++ test(data139, toler139); ++ test(data140, toler140); ++ test(data141, toler141); ++ test(data142, toler142); ++ test(data143, toler143); ++ test(data144, toler144); ++ test(data145, toler145); ++ test(data146, toler146); ++ test(data147, toler147); ++ test(data148, toler148); ++ test(data149, toler149); ++ test(data150, toler150); ++ test(data151, toler151); ++ test(data152, toler152); ++ test(data153, toler153); ++ test(data154, toler154); ++ test(data155, toler155); ++ test(data156, toler156); ++ test(data157, toler157); ++ test(data158, toler158); ++ test(data159, toler159); ++ test(data160, toler160); ++ test(data161, toler161); ++ test(data162, toler162); ++ test(data163, toler163); ++ test(data164, toler164); ++ test(data165, toler165); ++ test(data166, toler166); ++ test(data167, toler167); ++ test(data168, toler168); ++ test(data169, toler169); ++ test(data170, toler170); ++ test(data171, toler171); ++ test(data172, toler172); ++ test(data173, toler173); ++ test(data174, toler174); ++ test(data175, toler175); ++ test(data176, toler176); ++ test(data177, toler177); ++ test(data178, toler178); ++ test(data179, toler179); ++ test(data180, toler180); ++ test(data181, toler181); ++ test(data182, toler182); ++ test(data183, toler183); ++ test(data184, toler184); ++ test(data185, toler185); ++ test(data186, toler186); ++ test(data187, toler187); ++ test(data188, toler188); ++ test(data189, toler189); ++ test(data190, toler190); + return 0; + } +Index: libstdc++-v3/testsuite/lib/libstdc++.exp +=================================================================== +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp (.../branches/gcc-7-branch) +@@ -239,7 +239,7 @@ + + # Default settings. + set cxx [transform "g++"] +- set cxxflags "-fmessage-length=0" ++ set cxxflags "-fmessage-length=0 -fno-show-column" + set cxxpchflags "" + set cxxvtvflags "" + set cxxldflags "" +Index: libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++// { dg-do run { target c++11 } } ++// { dg-require-c-std "" } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } ++// { dg-add-options ieee } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ double Pi1 = std::comp_ellint_3(0.75, 0.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::comp_ellint_3(0.75, 0.5); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + // { dg-do run { target c++11 } } + // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2016-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 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 +@@ -37,387 +37,444 @@ + #endif + #include + +- + // Test data for k=-0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.6751587294384150e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.2838262090802751e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 + const testcase_comp_ellint_3 + data001[10] = + { + { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998 }, +- { 1.6600480747670940, -0.90000000000000002, 0.69999999999999996 }, +- { 1.6044591960982202, -0.90000000000000002, 0.80000000000000004 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002 }, ++ { 2.4295011187834885, -0.90000000000000002, 0.10000000000000001 }, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001 }, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004 }, ++ { 3.1000689868578619, -0.90000000000000002, 0.40000000000000002 }, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000 }, ++ { 3.9549939883570229, -0.90000000000000002, 0.60000000000000009 }, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007 }, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004 }, ++ { 8.9942562031858699, -0.90000000000000002, 0.90000000000000002 }, + }; + const double toler001 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.5960830388244336e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 + const testcase_comp_ellint_3 + data002[10] = + { +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309471, -0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, -0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, -0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, -0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, -0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, -0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, -0.80000000000000004, 0.90000000000000002 }, + }; + const double toler002 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3074070916136724e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.9832236886714888e-16 ++// mean(f - f_Boost): -1.5543122344752191e-16 ++// variance(f - f_Boost): 2.9825759533819119e-33 ++// stddev(f - f_Boost): 5.4612965066748680e-17 + const testcase_comp_ellint_3 + data003[10] = + { +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092145, -0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397531, -0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695913, -0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000 }, ++ { 1.9541347343119564, -0.69999999999999996, 0.10000000000000001 }, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001 }, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004 }, ++ { 2.4342502915307880, -0.69999999999999996, 0.40000000000000002 }, ++ { 2.6868019968236996, -0.69999999999999996, 0.50000000000000000 }, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009 }, ++ { 3.5408408771788564, -0.69999999999999996, 0.70000000000000007 }, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004 }, ++ { 6.3796094177887754, -0.69999999999999996, 0.90000000000000002 }, + }; + const double toler003 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -1.9984014443252818e-16 ++// variance(f - f_Boost): 4.9303806576313241e-33 ++// stddev(f - f_Boost): 7.0216669371534022e-17 + const testcase_comp_ellint_3 + data004[10] = + { + { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998 }, +- { 1.3232737468822813, -0.59999999999999998, 0.69999999999999996 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002 }, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001 }, ++ { 1.9695980282802217, -0.59999999999999998, 0.20000000000000001 }, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004 }, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002 }, ++ { 2.5239007084492711, -0.59999999999999998, 0.50000000000000000 }, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009 }, ++ { 3.3029735898397159, -0.59999999999999998, 0.70000000000000007 }, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004 }, ++ { 5.8709993116265604, -0.59999999999999998, 0.90000000000000002 }, + }; + const double toler004 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.7857620325589816e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 + const testcase_comp_ellint_3 + data005[10] = + { +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, -0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, -0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, -0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, -0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, -0.50000000000000000, 0.90000000000000002 }, + }; + const double toler005 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16 ++// Test data for k=-0.39999999999999991. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718164615986397e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 1.6458949750907531e-31 ++// stddev(f - f_Boost): 4.0569631192441877e-16 + const testcase_comp_ellint_3 + data006[10] = + { +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002 }, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000 }, ++ { 1.7306968836847190, -0.39999999999999991, 0.10000000000000001 }, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001 }, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004 }, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002 }, ++ { 2.3367461373176512, -0.39999999999999991, 0.50000000000000000 }, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009 }, ++ { 3.0327078743873246, -0.39999999999999991, 0.70000000000000007 }, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004 }, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002 }, + }; + const double toler006 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8209844149902043e-16 ++// Test data for k=-0.29999999999999993. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9274792319434433e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 8.7651211691223537e-33 ++// stddev(f - f_Boost): 9.3622225828712025e-17 + const testcase_comp_ellint_3 + data007[10] = + { +- { 1.6080486199305128, -0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557528, -0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259877, -0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479091, -0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969763, -0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814962, -0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420669, -0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274982, -0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590048, -0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064914, -0.30000000000000004, 0.90000000000000002 }, ++ { 1.6080486199305128, -0.29999999999999993, 0.0000000000000000 }, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001 }, ++ { 1.8002173372290500, -0.29999999999999993, 0.20000000000000001 }, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004 }, ++ { 2.0822121773175533, -0.29999999999999993, 0.40000000000000002 }, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000 }, ++ { 2.5560975528589065, -0.29999999999999993, 0.60000000000000009 }, ++ { 2.9562123549913877, -0.29999999999999993, 0.70000000000000007 }, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004 }, ++ { 5.1479514944016795, -0.29999999999999993, 0.90000000000000002 }, + }; + const double toler007 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8637687241174905e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 + const testcase_comp_ellint_3 + data008[10] = + { +- { 1.5868678474541660, -0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261087, -0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249564, -0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752477, -0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661005, -0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397372, -0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914556, -0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075863, -0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909909, -0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141861, -0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000 }, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001 }, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001 }, ++ { 1.8983924169967101, -0.19999999999999996, 0.30000000000000004 }, ++ { 2.0512956926676806, -0.19999999999999996, 0.40000000000000002 }, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000 }, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009 }, ++ { 2.9058704854500967, -0.19999999999999996, 0.70000000000000007 }, ++ { 3.5622166386422633, -0.19999999999999996, 0.80000000000000004 }, ++ { 5.0448269356200370, -0.19999999999999996, 0.90000000000000002 }, + }; + const double toler008 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8887517676790089e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): 0.0000000000000000 ++// variance(f - f_Boost): 6.8368087769470551e-64 ++// stddev(f - f_Boost): 2.6147291976315738e-32 + const testcase_comp_ellint_3 + data009[10] = + { +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998 }, +- { 1.2073745911083185, -0.099999999999999978, 0.69999999999999996 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002 }, ++ { 1.5747455615173560, -0.099999999999999978, 0.0000000000000000 }, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001 }, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001 }, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004 }, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002 }, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000 }, ++ { 2.4913004919173827, -0.099999999999999978, 0.60000000000000009 }, ++ { 2.8771910188009744, -0.099999999999999978, 0.70000000000000007 }, ++ { 3.5246199613295617, -0.099999999999999978, 0.80000000000000004 }, ++ { 4.9862890417305508, -0.099999999999999978, 0.90000000000000002 }, + }; + const double toler009 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.6725702444488137e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.1899085000907084e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 5.4782007307014711e-32 ++// stddev(f - f_Boost): 2.3405556457178008e-16 + const testcase_comp_ellint_3 + data010[10] = + { + { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999 }, +- { 1.3275651989026320, 0.0000000000000000, 0.40000000000000002 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002 }, ++ { 1.6557647109660170, 0.0000000000000000, 0.10000000000000001 }, ++ { 1.7562036827601817, 0.0000000000000000, 0.20000000000000001 }, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004 }, ++ { 2.0278893379868062, 0.0000000000000000, 0.40000000000000002 }, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000 }, ++ { 2.4836470664490258, 0.0000000000000000, 0.60000000000000009 }, ++ { 2.8678686047727386, 0.0000000000000000, 0.70000000000000007 }, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004 }, ++ { 4.9672941328980516, 0.0000000000000000, 0.90000000000000002 }, + }; + const double toler010 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8887517676790089e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): -2.2204460492503132e-17 ++// variance(f - f_Boost): 6.0868897007794120e-35 ++// stddev(f - f_Boost): 7.8018521523926693e-18 + const testcase_comp_ellint_3 + data011[10] = + { +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998 }, +- { 1.2073745911083185, 0.10000000000000009, 0.69999999999999996 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002 }, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000 }, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001 }, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001 }, ++ { 1.8826015946315440, 0.10000000000000009, 0.30000000000000004 }, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002 }, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000 }, ++ { 2.4913004919173827, 0.10000000000000009, 0.60000000000000009 }, ++ { 2.8771910188009744, 0.10000000000000009, 0.70000000000000007 }, ++ { 3.5246199613295617, 0.10000000000000009, 0.80000000000000004 }, ++ { 4.9862890417305508, 0.10000000000000009, 0.90000000000000002 }, + }; + const double toler011 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8637687241174905e-16 ++// Test data for k=0.20000000000000018. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 + const testcase_comp_ellint_3 + data012[10] = + { +- { 1.5868678474541660, 0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261087, 0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249564, 0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752477, 0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661005, 0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397372, 0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914556, 0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075863, 0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909909, 0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141861, 0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000 }, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001 }, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001 }, ++ { 1.8983924169967101, 0.20000000000000018, 0.30000000000000004 }, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002 }, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000 }, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009 }, ++ { 2.9058704854500967, 0.20000000000000018, 0.70000000000000007 }, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004 }, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002 }, + }; + const double toler012 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8209844149902043e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.4585997630846713e-16 ++// mean(f - f_Boost): 5.1070259132757197e-16 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 + const testcase_comp_ellint_3 + data013[10] = + { + { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557528, 0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259877, 0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479091, 0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969763, 0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814962, 0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420669, 0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274982, 0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590048, 0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064914, 0.30000000000000004, 0.90000000000000002 }, ++ { 1.6960848815118228, 0.30000000000000004, 0.10000000000000001 }, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001 }, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004 }, ++ { 2.0822121773175533, 0.30000000000000004, 0.40000000000000002 }, ++ { 2.2833505881933975, 0.30000000000000004, 0.50000000000000000 }, ++ { 2.5560975528589065, 0.30000000000000004, 0.60000000000000009 }, ++ { 2.9562123549913877, 0.30000000000000004, 0.70000000000000007 }, ++ { 3.6283050484567174, 0.30000000000000004, 0.80000000000000004 }, ++ { 5.1479514944016795, 0.30000000000000004, 0.90000000000000002 }, + }; + const double toler013 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16 ++// Test data for k=0.40000000000000013. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.7696531428672557e-16 ++// mean(f - f_Boost): 1.1990408665951691e-15 ++// variance(f - f_Boost): 2.6514491536595121e-31 ++// stddev(f - f_Boost): 5.1492224205791612e-16 + const testcase_comp_ellint_3 + data014[10] = + { +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002 }, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000 }, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001 }, ++ { 1.8380358826317629, 0.40000000000000013, 0.20000000000000001 }, ++ { 1.9677924132520141, 0.40000000000000013, 0.30000000000000004 }, ++ { 2.1289968719280030, 0.40000000000000013, 0.40000000000000002 }, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000 }, ++ { 2.6186940209850196, 0.40000000000000013, 0.60000000000000009 }, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007 }, ++ { 3.7289548002199906, 0.40000000000000013, 0.80000000000000004 }, ++ { 5.3055535102872522, 0.40000000000000013, 0.90000000000000002 }, + }; + const double toler014 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.7857620325589816e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 + const testcase_comp_ellint_3 + data015[10] = + { +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, 0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, 0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, 0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, 0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, 0.50000000000000000, 0.90000000000000002 }, + }; + const double toler015 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.7124937590522226e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 6.0868897007794117e-33 ++// stddev(f - f_Boost): 7.8018521523926690e-17 + const testcase_comp_ellint_3 + data016[10] = + { + { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998 }, +- { 1.3232737468822813, 0.60000000000000009, 0.69999999999999996 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004 }, +- { 1.2479362973851873, 0.60000000000000009, 0.90000000000000002 }, ++ { 1.8508766487100687, 0.60000000000000009, 0.10000000000000001 }, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001 }, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004 }, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002 }, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000 }, ++ { 2.8388723099514976, 0.60000000000000009, 0.60000000000000009 }, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007 }, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004 }, ++ { 5.8709993116265613, 0.60000000000000009, 0.90000000000000002 }, + }; + const double toler016 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3074070916136724e-16 ++// Test data for k=0.70000000000000018. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9298727220933567e-16 ++// mean(f - f_Boost): 4.8849813083506892e-16 ++// variance(f - f_Boost): 2.0476296953421943e-31 ++// stddev(f - f_Boost): 4.5250742483877478e-16 + const testcase_comp_ellint_3 + data017[10] = + { +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092145, 0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397531, 0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695913, 0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747238, 0.70000000000000018, 0.0000000000000000 }, ++ { 1.9541347343119566, 0.70000000000000018, 0.10000000000000001 }, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001 }, ++ { 2.2392290510988540, 0.70000000000000018, 0.30000000000000004 }, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002 }, ++ { 2.6868019968237000, 0.70000000000000018, 0.50000000000000000 }, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009 }, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007 }, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004 }, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002 }, + }; + const double toler017 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.5960830388244336e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 + const testcase_comp_ellint_3 + data018[10] = + { +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309471, 0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, 0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, 0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, 0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, 0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, 0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, 0.80000000000000004, 0.90000000000000002 }, + }; + const double toler018 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.6751587294384150e-16 ++// Test data for k=0.90000000000000013. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.5716352001310461e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 + const testcase_comp_ellint_3 + data019[10] = + { +- { 2.2805491384227703, 0.89999999999999991, 0.0000000000000000 }, +- { 2.1537868513875287, 0.89999999999999991, 0.10000000000000001 }, +- { 2.0443194576468895, 0.89999999999999991, 0.20000000000000001 }, +- { 1.9486280260314426, 0.89999999999999991, 0.29999999999999999 }, +- { 1.8641114227238351, 0.89999999999999991, 0.40000000000000002 }, +- { 1.7888013241937863, 0.89999999999999991, 0.50000000000000000 }, +- { 1.7211781128919525, 0.89999999999999991, 0.59999999999999998 }, +- { 1.6600480747670940, 0.89999999999999991, 0.69999999999999996 }, +- { 1.6044591960982202, 0.89999999999999991, 0.80000000000000004 }, +- { 1.5536420236310948, 0.89999999999999991, 0.90000000000000002 }, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000 }, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001 }, ++ { 2.6076835743348421, 0.90000000000000013, 0.20000000000000001 }, ++ { 2.8256506968858521, 0.90000000000000013, 0.30000000000000004 }, ++ { 3.1000689868578628, 0.90000000000000013, 0.40000000000000002 }, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000 }, ++ { 3.9549939883570242, 0.90000000000000013, 0.60000000000000009 }, ++ { 4.6985482312992453, 0.90000000000000013, 0.70000000000000007 }, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004 }, ++ { 8.9942562031858735, 0.90000000000000013, 0.90000000000000002 }, + }; + const double toler019 = 2.5000000000000020e-13; + +-template ++template + void +- test(const testcase_comp_ellint_3 (&data)[Num], Tp toler) ++ test(const testcase_comp_ellint_3 (&data)[Num], Ret toler) + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); + unsigned int num_datum = Num; + for (unsigned int i = 0; i < num_datum; ++i) + { +- const Tp f = std::comp_ellint_3(data[i].k, data[i].nu); +- const Tp f0 = data[i].f0; +- const Tp diff = f - f0; ++ const Ret f = std::comp_ellint_3(data[i].k, data[i].nu); ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; + if (std::abs(diff) > max_abs_diff) + max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) + { +- const Tp frac = diff / f0; ++ const Ret frac = diff / f0; + if (std::abs(frac) > max_abs_frac) + max_abs_frac = std::abs(frac); + } +Index: libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,47 @@ ++// { dg-do run { target c++11 } } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } ++// Copyright (C) 2017 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 ++// . ++ ++// PR libstdc++/68397 - std::tr1::expint fails in __expint_En_cont_frac ++// for some long double arguments due to low __max_iter value ++ ++#include ++#include ++ ++int ++test01() ++{ ++ // Answers from Wolfram Alpha. ++ long double ans_ok = -0.10001943365331651406888645149537315243646135979573L; ++ long double ans_bomb = -0.10777727809650077516264612749163100483995270163783L; ++ ++ auto Ei_ok = std::expint(-1.500001L); ++ auto diff_ok = Ei_ok - ans_ok; ++ VERIFY(std::abs(diff_ok) < 1.0e-15); ++ ++ auto Ei_bomb = std::expint(-1.450001L); ++ auto diff_bomb = Ei_bomb - ans_bomb; ++ VERIFY(std::abs(diff_bomb) < 1.0e-15); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// { dg-do run { target c++11 } } ++// { dg-require-c-std "" } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } ++// { dg-add-options ieee } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ const double pi = 3.141592654; ++ ++ double Pi1 = std::ellint_3(0.75, 0.0, pi / 2.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::ellint_3(0.75, 0.5, pi / 2.0); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + // { dg-do run { target c++11 } } + // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2016-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 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 +@@ -37,30 +37,32 @@ + #endif + #include + +- + // Test data for k=-0.90000000000000002, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.9686139313362077e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.7842011620951154e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data001[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17525427376115024, -0.90000000000000002, 0.0000000000000000, ++ { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, + 0.17453292519943295 }, + { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.54388221416157112, -0.90000000000000002, 0.0000000000000000, ++ { 0.54388221416157123, -0.90000000000000002, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.74797400423532490, -0.90000000000000002, 0.0000000000000000, ++ { 0.74797400423532512, -0.90000000000000002, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.97463898451966458, -0.90000000000000002, 0.0000000000000000, ++ { 0.97463898451966446, -0.90000000000000002, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.2334463254523440, -0.90000000000000002, 0.0000000000000000, ++ { 1.2334463254523438, -0.90000000000000002, 0.0000000000000000, + 1.0471975511965976 }, + { 1.5355247765594913, -0.90000000000000002, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.8882928567775121, -0.90000000000000002, 0.0000000000000000, ++ { 1.8882928567775126, -0.90000000000000002, 0.0000000000000000, + 1.3962634015954636 }, + { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, + 1.5707963267948966 }, +@@ -68,269 +70,299 @@ + const double toler001 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.0141810743801079e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data002[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17507714233254656, -0.90000000000000002, 0.10000000000000001, ++ { 0.17543204932716244, -0.90000000000000002, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35350932904326521, -0.90000000000000002, 0.10000000000000001, ++ { 0.35636022898551184, -0.90000000000000002, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53911129989870976, -0.90000000000000002, 0.10000000000000001, ++ { 0.54880278898382584, -0.90000000000000002, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.73666644254508395, -0.90000000000000002, 0.10000000000000001, ++ { 0.75988834774529268, -0.90000000000000002, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.95250736612100195, -0.90000000000000002, 0.10000000000000001, ++ { 0.99853303003568117, -0.90000000000000002, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1950199550905594, -0.90000000000000002, 0.10000000000000001, ++ { 1.2759958823999022, -0.90000000000000002, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.4741687286340850, -0.90000000000000002, 0.10000000000000001, ++ { 1.6051187364639401, -0.90000000000000002, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.7968678183506057, -0.90000000000000002, 0.10000000000000001, ++ { 1.9941406879519472, -0.90000000000000002, 0.10000000000000001, + 1.3962634015954636 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001, ++ { 2.4295011187834881, -0.90000000000000002, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler002 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.0588292817405780e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.2711357908578066e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 7.9985534974304465e-34 ++// stddev(f - f_Boost): 2.8281714052423424e-17 + const testcase_ellint_3 + data003[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17490065089140927, -0.90000000000000002, 0.20000000000000001, ++ { 0.17561047321968409, -0.90000000000000002, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35211377590661436, -0.90000000000000002, 0.20000000000000001, ++ { 0.35781659944356109, -0.90000000000000002, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53448220334204100, -0.90000000000000002, 0.20000000000000001, ++ { 0.55388150905215283, -0.90000000000000002, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.72591368943179579, -0.90000000000000002, 0.20000000000000001, ++ { 0.77246874123251441, -0.90000000000000002, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.93192539780038763, -0.90000000000000002, 0.20000000000000001, ++ { 1.0244466254771925, -0.90000000000000002, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1600809679692683, -0.90000000000000002, 0.20000000000000001, ++ { 1.3234824077640801, -0.90000000000000002, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.4195407225882510, -0.90000000000000002, 0.20000000000000001, ++ { 1.6849848968804237, -0.90000000000000002, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.7168966476424525, -0.90000000000000002, 0.20000000000000001, ++ { 2.1185749045502273, -0.90000000000000002, 0.20000000000000001, + 1.3962634015954636 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler003 = 2.5000000000000020e-13; + +-// Test data for k=-0.90000000000000002, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2403611223075570e-16 ++// Test data for k=-0.90000000000000002, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.9955372494296814e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data004[10] = + { +- { 0.0000000000000000, -0.90000000000000002, 0.29999999999999999, ++ { 0.0000000000000000, -0.90000000000000002, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17472479532647531, -0.90000000000000002, 0.29999999999999999, ++ { 0.17578954966746221, -0.90000000000000002, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.35073750187374114, -0.90000000000000002, 0.29999999999999999, ++ { 0.35929429810867447, -0.90000000000000002, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52998766129466957, -0.90000000000000002, 0.29999999999999999, ++ { 0.55912757154240811, -0.90000000000000002, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.71566993548699553, -0.90000000000000002, 0.29999999999999999, ++ { 0.78578314722025389, -0.90000000000000002, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.91271517762560195, -0.90000000000000002, 0.29999999999999999, ++ { 1.0526941001131365, -0.90000000000000002, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.1281241199843370, -0.90000000000000002, 0.29999999999999999, ++ { 1.3769682234538601, -0.90000000000000002, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.3704929576917451, -0.90000000000000002, 0.29999999999999999, ++ { 1.7779437432911238, -0.90000000000000002, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.6461981511487713, -0.90000000000000002, 0.29999999999999999, ++ { 2.2676509341813631, -0.90000000000000002, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler004 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3487482375512111e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 2.0261570199409106e-16 ++// variance(f - f_Boost): 5.8024227149195491e-32 ++// stddev(f - f_Boost): 2.4088218520512364e-16 + const testcase_ellint_3 + data005[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17454957156468837, -0.90000000000000002, 0.40000000000000002, ++ { 0.17596928293938452, -0.90000000000000002, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34938003933330430, -0.90000000000000002, 0.40000000000000002, ++ { 0.36079388642472821, -0.90000000000000002, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52562093533067433, -0.90000000000000002, 0.40000000000000002, ++ { 0.56455096667115612, -0.90000000000000002, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.70589461324915670, -0.90000000000000002, 0.40000000000000002, ++ { 0.79990996997869435, -0.90000000000000002, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.89472658511942849, -0.90000000000000002, 0.40000000000000002, ++ { 1.0836647913872215, -0.90000000000000002, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0987419542323440, -0.90000000000000002, 0.40000000000000002, ++ { 1.4378726836091849, -0.90000000000000002, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.3261349565496303, -0.90000000000000002, 0.40000000000000002, ++ { 1.8880446720682853, -0.90000000000000002, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.5831293909853765, -0.90000000000000002, 0.40000000000000002, ++ { 2.4505848932025227, -0.90000000000000002, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002, ++ { 3.1000689868578615, -0.90000000000000002, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler005 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4538944656036724e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.8944086593755267e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 1.7333369499485123e-32 ++// stddev(f - f_Boost): 1.3165625507162629e-16 + const testcase_ellint_3 + data006[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17437497557073334, -0.90000000000000002, 0.50000000000000000, ++ { 0.17614967734498183, -0.90000000000000002, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34804093691586013, -0.90000000000000002, 0.50000000000000000, ++ { 0.36231594750319435, -0.90000000000000002, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.52137576320372891, -0.90000000000000002, 0.50000000000000000, ++ { 0.57016256984349567, -0.90000000000000002, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.69655163996912262, -0.90000000000000002, 0.50000000000000000, ++ { 0.81494025918293422, -0.90000000000000002, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.87783188683054236, -0.90000000000000002, 0.50000000000000000, ++ { 1.1178482279283477, -0.90000000000000002, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0716015959755185, -0.90000000000000002, 0.50000000000000000, ++ { 1.5081455873012106, -0.90000000000000002, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2857636916026749, -0.90000000000000002, 0.50000000000000000, ++ { 2.0213599730863998, -0.90000000000000002, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.5264263913252363, -0.90000000000000002, 0.50000000000000000, ++ { 2.6822467012926827, -0.90000000000000002, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler006 = 2.5000000000000020e-13; + +-// Test data for k=-0.90000000000000002, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5560830683344639e-16 ++// Test data for k=-0.90000000000000002, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.0602096790645418e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data007[10] = + { +- { 0.0000000000000000, -0.90000000000000002, 0.59999999999999998, ++ { 0.0000000000000000, -0.90000000000000002, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17420100334657812, -0.90000000000000002, 0.59999999999999998, ++ { 0.17633073723493825, -0.90000000000000002, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34671975876122157, -0.90000000000000002, 0.59999999999999998, ++ { 0.36386108723492810, -0.90000000000000002, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51724631570707946, -0.90000000000000002, 0.59999999999999998, ++ { 0.57597424744716241, -0.90000000000000002, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.68760879113743023, -0.90000000000000002, 0.59999999999999998, ++ { 0.83098051948501150, -0.90000000000000002, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.86192157779698364, -0.90000000000000002, 0.59999999999999998, ++ { 1.1558706545698916, -0.90000000000000002, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0464279696166354, -0.90000000000000002, 0.59999999999999998, ++ { 1.5905576379415669, -0.90000000000000002, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.2488156247094007, -0.90000000000000002, 0.59999999999999998, ++ { 2.1875186010215080, -0.90000000000000002, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.4750988777188472, -0.90000000000000002, 0.59999999999999998, ++ { 2.9885767771316849, -0.90000000000000002, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998, ++ { 3.9549939883570224, -0.90000000000000002, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler007 = 2.5000000000000020e-13; + +-// Test data for k=-0.90000000000000002, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4833366769839281e-16 ++// Test data for k=-0.90000000000000002, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1938610791060186e-16 ++// mean(f - f_Boost): 3.0253577421035517e-16 ++// variance(f - f_Boost): 4.2342877557562532e-32 ++// stddev(f - f_Boost): 2.0577385051935665e-16 + const testcase_ellint_3 + data008[10] = + { +- { 0.0000000000000000, -0.90000000000000002, 0.69999999999999996, ++ { 0.0000000000000000, -0.90000000000000002, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17402765093102207, -0.90000000000000002, 0.69999999999999996, ++ { 0.17651246700160939, -0.90000000000000002, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34541608382635131, -0.90000000000000002, 0.69999999999999996, ++ { 0.36542993547358982, -0.90000000000000002, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.51322715827061682, -0.90000000000000002, 0.69999999999999996, ++ { 0.58199897877674867, -0.90000000000000002, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.67903717872440272, -0.90000000000000002, 0.69999999999999996, ++ { 0.84815633587352857, -0.90000000000000002, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.84690113601682671, -0.90000000000000002, 0.69999999999999996, ++ { 1.1985495623872375, -0.90000000000000002, 0.70000000000000007, + 0.87266462599716477 }, +- { 1.0229914311548418, -0.90000000000000002, 0.69999999999999996, ++ { 1.6892158134027688, -0.90000000000000002, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.2148329639709381, -0.90000000000000002, 0.69999999999999996, ++ { 2.4029722191094236, -0.90000000000000002, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.4283586501307803, -0.90000000000000002, 0.69999999999999996, ++ { 3.4201084941340052, -0.90000000000000002, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.6600480747670940, -0.90000000000000002, 0.69999999999999996, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler008 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7525301941362493e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5091520146032660e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 9.8950000698295322e-33 ++// stddev(f - f_Boost): 9.9473614943006532e-17 + const testcase_ellint_3 + data009[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17385491439925146, -0.90000000000000002, 0.80000000000000004, ++ { 0.17669487107954862, -0.90000000000000002, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34412950523113928, -0.90000000000000002, 0.80000000000000004, ++ { 0.36702314729628421, -0.90000000000000002, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50931321668729590, -0.90000000000000002, 0.80000000000000004, ++ { 0.58825099711365492, -0.90000000000000002, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.67081081392296327, -0.90000000000000002, 0.80000000000000004, ++ { 0.86661711422209031, -0.90000000000000002, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.83268846097293259, -0.90000000000000002, 0.80000000000000004, ++ { 1.2469779109884802, -0.90000000000000002, 0.80000000000000004, + 0.87266462599716477 }, +- { 1.0010985015814027, -0.90000000000000002, 0.80000000000000004, ++ { 1.8105469760531578, -0.90000000000000002, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1834394045489680, -0.90000000000000002, 0.80000000000000004, ++ { 2.6989505165893752, -0.90000000000000002, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.3855695891683186, -0.90000000000000002, 0.80000000000000004, ++ { 4.0935213267757424, -0.90000000000000002, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.6044591960982202, -0.90000000000000002, 0.80000000000000004, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler009 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8471853989694167e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.2628580104449673e-16 ++// mean(f - f_Boost): 8.5764728652293339e-16 ++// variance(f - f_Boost): 8.9671393318321280e-31 ++// stddev(f - f_Boost): 9.4694980499666013e-16 + const testcase_ellint_3 + data010[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17368278986240135, -0.90000000000000002, 0.90000000000000002, ++ { 0.17687795394604169, -0.90000000000000002, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34285962963961397, -0.90000000000000002, 0.90000000000000002, ++ { 0.36864140434751286, -0.90000000000000002, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50549974644993312, -0.90000000000000002, 0.90000000000000002, ++ { 0.59474595366817051, -0.90000000000000002, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.66290623857720876, -0.90000000000000002, 0.90000000000000002, ++ { 0.88654237226056665, -0.90000000000000002, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.81921183128847175, -0.90000000000000002, 0.90000000000000002, ++ { 1.3026595810616726, -0.90000000000000002, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.98058481956066390, -0.90000000000000002, 0.90000000000000002, ++ { 1.9653635459278078, -0.90000000000000002, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.1543223520473569, -0.90000000000000002, 0.90000000000000002, ++ { 3.1451407527189463, -0.90000000000000002, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.3462119782292938, -0.90000000000000002, 0.90000000000000002, ++ { 5.3745230680316114, -0.90000000000000002, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002, ++ { 8.9942562031858682, -0.90000000000000002, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler010 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1175183168766718e-16 ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 + const testcase_ellint_3 + data011[10] = + { +@@ -338,289 +370,319 @@ + 0.0000000000000000 }, + { 0.17510154241338899, -0.80000000000000004, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35365068839779390, -0.80000000000000004, 0.0000000000000000, ++ { 0.35365068839779396, -0.80000000000000004, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53926804409084550, -0.80000000000000004, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.73587926028070361, -0.80000000000000004, 0.0000000000000000, ++ { 0.73587926028070372, -0.80000000000000004, 0.0000000000000000, + 0.69813170079773179 }, + { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1789022995388236, -0.80000000000000004, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.4323027881876009, -0.80000000000000004, 0.0000000000000000, ++ { 1.4323027881876012, -0.80000000000000004, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.7069629739121674, -0.80000000000000004, 0.0000000000000000, ++ { 1.7069629739121677, -0.80000000000000004, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler011 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1537164503193145e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 + const testcase_ellint_3 + data012[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17492468824017163, -0.80000000000000004, 0.10000000000000001, ++ { 0.17527903952342144, -0.80000000000000004, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35224443521476911, -0.80000000000000004, 0.10000000000000001, ++ { 0.35507705313548549, -0.80000000000000004, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53456851853226950, -0.80000000000000004, 0.10000000000000001, ++ { 0.54411455987643553, -0.80000000000000004, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.72488875602364922, -0.80000000000000004, 0.10000000000000001, ++ { 0.74745625666804383, -0.80000000000000004, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.92661354274638952, -0.80000000000000004, 0.10000000000000001, ++ { 0.97046953684238557, -0.80000000000000004, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1432651144499075, -0.80000000000000004, 0.10000000000000001, ++ { 1.2183080025184605, -0.80000000000000004, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3774479927211429, -0.80000000000000004, 0.10000000000000001, ++ { 1.4943711151994405, -0.80000000000000004, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.6287092337196041, -0.80000000000000004, 0.10000000000000001, ++ { 1.7972401309544201, -0.80000000000000004, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler012 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1894552974436829e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 + const testcase_ellint_3 + data013[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17474847286224940, -0.80000000000000004, 0.20000000000000001, ++ { 0.17545718375086419, -0.80000000000000004, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35085779529084682, -0.80000000000000004, 0.20000000000000001, ++ { 0.35652404627248163, -0.80000000000000004, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53000829263059146, -0.80000000000000004, 0.20000000000000001, ++ { 0.54911638512920913, -0.80000000000000004, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.71443466027453384, -0.80000000000000004, 0.20000000000000001, ++ { 0.75967684282131176, -0.80000000000000004, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.90698196872715420, -0.80000000000000004, 0.20000000000000001, ++ { 0.99513526893543769, -0.80000000000000004, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1108198200558579, -0.80000000000000004, 0.20000000000000001, ++ { 1.2622192109995993, -0.80000000000000004, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.3284988909963957, -0.80000000000000004, 0.20000000000000001, ++ { 1.5654106676347741, -0.80000000000000004, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.5600369318140328, -0.80000000000000004, 0.20000000000000001, ++ { 1.9029531718534984, -0.80000000000000004, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler013 = 2.5000000000000020e-13; + +-// Test data for k=-0.80000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2247517409029886e-16 ++// Test data for k=-0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 + const testcase_ellint_3 + data014[10] = + { +- { 0.0000000000000000, -0.80000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, -0.80000000000000004, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17457289217669889, -0.80000000000000004, 0.29999999999999999, ++ { 0.17563597931587369, -0.80000000000000004, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34949028801501258, -0.80000000000000004, 0.29999999999999999, ++ { 0.35799220412005128, -0.80000000000000004, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52558024362769307, -0.80000000000000004, 0.29999999999999999, ++ { 0.55428253691111318, -0.80000000000000004, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.70447281740094891, -0.80000000000000004, 0.29999999999999999, ++ { 0.77260647376977365, -0.80000000000000004, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.88864745641528986, -0.80000000000000004, 0.29999999999999999, ++ { 1.0220015271210958, -0.80000000000000004, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0811075819341462, -0.80000000000000004, 0.29999999999999999, ++ { 1.3115965312302671, -0.80000000000000004, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2844589654082377, -0.80000000000000004, 0.29999999999999999, ++ { 1.6478518468813512, -0.80000000000000004, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4991461361277847, -0.80000000000000004, 0.29999999999999999, ++ { 2.0290458414203481, -0.80000000000000004, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999, ++ { 2.4392042002725693, -0.80000000000000004, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler014 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2596216594752862e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 + const testcase_ellint_3 + data015[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17439794211872175, -0.80000000000000004, 0.40000000000000002, ++ { 0.17581543047866136, -0.80000000000000004, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34814144964568972, -0.80000000000000004, 0.40000000000000002, ++ { 0.35948208343061633, -0.80000000000000004, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52127776285273064, -0.80000000000000004, 0.40000000000000002, ++ { 0.55962280893702021, -0.80000000000000004, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.69496411438966588, -0.80000000000000004, 0.40000000000000002, ++ { 0.78632063889234116, -0.80000000000000004, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.87146878427509589, -0.80000000000000004, 0.40000000000000002, ++ { 1.0514333069550323, -0.80000000000000004, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0537579024937762, -0.80000000000000004, 0.40000000000000002, ++ { 1.3677213138838757, -0.80000000000000004, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.2445534387922637, -0.80000000000000004, 0.40000000000000002, ++ { 1.7451736773665165, -0.80000000000000004, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.4446769766361993, -0.80000000000000004, 0.40000000000000002, ++ { 2.1830100424586831, -0.80000000000000004, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002, ++ { 2.6604037035529724, -0.80000000000000004, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler015 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2940800093915668e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 + const testcase_ellint_3 + data016[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17422361866118044, -0.80000000000000004, 0.50000000000000000, ++ { 0.17599554153999472, -0.80000000000000004, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34681083254170475, -0.80000000000000004, 0.50000000000000000, ++ { 0.36099426243351540, -0.80000000000000004, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51709470815494440, -0.80000000000000004, 0.50000000000000000, ++ { 0.56514786174780673, -0.80000000000000004, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.68587375344080237, -0.80000000000000004, 0.50000000000000000, ++ { 0.80090697622371010, -0.80000000000000004, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.85532571852810624, -0.80000000000000004, 0.50000000000000000, ++ { 1.0838891627679339, -0.80000000000000004, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0284677391874903, -0.80000000000000004, 0.50000000000000000, ++ { 1.4323506654466280, -0.80000000000000004, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2081693942686225, -0.80000000000000004, 0.50000000000000000, ++ { 1.8625761085390575, -0.80000000000000004, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3955803006426311, -0.80000000000000004, 0.50000000000000000, ++ { 2.3768757305654766, -0.80000000000000004, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000, ++ { 2.9478781158239746, -0.80000000000000004, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler016 = 2.5000000000000020e-13; + +-// Test data for k=-0.80000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3281408974056389e-16 ++// Test data for k=-0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 + const testcase_ellint_3 + data017[10] = + { +- { 0.0000000000000000, -0.80000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, -0.80000000000000004, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17404991781414089, -0.80000000000000004, 0.59999999999999998, ++ { 0.17617631684170665, -0.80000000000000004, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34549800443625167, -0.80000000000000004, 0.59999999999999998, ++ { 0.36252934193666231, -0.80000000000000004, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51302536167001545, -0.80000000000000004, 0.59999999999999998, ++ { 0.57086932622945163, -0.80000000000000004, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.67717065003912236, -0.80000000000000004, 0.59999999999999998, ++ { 0.81646796740150973, -0.80000000000000004, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.84011512421134416, -0.80000000000000004, 0.59999999999999998, ++ { 1.1199552158519064, -0.80000000000000004, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0049863847088740, -0.80000000000000004, 0.59999999999999998, ++ { 1.5079766673336394, -0.80000000000000004, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1748145941898920, -0.80000000000000004, 0.59999999999999998, ++ { 2.0082747447038165, -0.80000000000000004, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.3510319699755071, -0.80000000000000004, 0.59999999999999998, ++ { 2.6315146066775523, -0.80000000000000004, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998, ++ { 3.3418121892288051, -0.80000000000000004, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler017 = 2.5000000000000020e-13; + +-// Test data for k=-0.80000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3618176466061808e-16 ++// Test data for k=-0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 + const testcase_ellint_3 + data018[10] = + { +- { 0.0000000000000000, -0.80000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, -0.80000000000000004, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17387683562442199, -0.80000000000000004, 0.69999999999999996, ++ { 0.17635776076721221, -0.80000000000000004, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34420254775101611, -0.80000000000000004, 0.69999999999999996, ++ { 0.36408794649916976, -0.80000000000000004, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50906439222143673, -0.80000000000000004, 0.69999999999999996, ++ { 0.57679992290624138, -0.80000000000000004, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66882693152688422, -0.80000000000000004, 0.69999999999999996, ++ { 0.83312441418142813, -0.80000000000000004, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.82574792844091316, -0.80000000000000004, 0.69999999999999996, ++ { 1.1603958891464856, -0.80000000000000004, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.98310431309490931, -0.80000000000000004, 0.69999999999999996, ++ { 1.5982855143796213, -0.80000000000000004, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.1440884535113258, -0.80000000000000004, 0.69999999999999996, ++ { 2.1962484408371821, -0.80000000000000004, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.3103743938952537, -0.80000000000000004, 0.69999999999999996, ++ { 2.9873281786111869, -0.80000000000000004, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler018 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3951228558314112e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 + const testcase_ellint_3 + data019[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17370436817515203, -0.80000000000000004, 0.80000000000000004, ++ { 0.17653987774203392, -0.80000000000000004, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34292405894783395, -0.80000000000000004, 0.80000000000000004, ++ { 0.36567072568046877, -0.80000000000000004, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50520682176250076, -0.80000000000000004, 0.80000000000000004, ++ { 0.58295359996558616, -0.80000000000000004, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.66081751679736178, -0.80000000000000004, 0.80000000000000004, ++ { 0.85101998309176108, -0.80000000000000004, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.81214672249355102, -0.80000000000000004, 0.80000000000000004, ++ { 1.2062322059736537, -0.80000000000000004, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.96264481387685552, -0.80000000000000004, 0.80000000000000004, ++ { 1.7090321420917429, -0.80000000000000004, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1156611352656258, -0.80000000000000004, 0.80000000000000004, ++ { 2.4529058049405066, -0.80000000000000004, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2730756225143889, -0.80000000000000004, 0.80000000000000004, ++ { 3.5368893360106948, -0.80000000000000004, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.4339837018309471, -0.80000000000000004, 0.80000000000000004, ++ { 4.9246422058196062, -0.80000000000000004, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler019 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4280684534289690e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 + const testcase_ellint_3 + data020[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17353251158533151, -0.80000000000000004, 0.90000000000000002, ++ { 0.17672267223433513, -0.80000000000000004, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34166214791545768, -0.80000000000000004, 0.90000000000000002, ++ { 0.36727835537196063, -0.80000000000000004, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50144799535130569, -0.80000000000000004, 0.90000000000000002, ++ { 0.58934569363716649, -0.80000000000000004, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.65311976193814425, -0.80000000000000004, 0.90000000000000002, ++ { 0.87032723471138851, -0.80000000000000004, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.79924384892320866, -0.80000000000000004, 0.90000000000000002, ++ { 1.2588676111323349, -0.80000000000000004, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.94345762353365603, -0.80000000000000004, 0.90000000000000002, ++ { 1.8498731900660019, -0.80000000000000004, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0892582069219161, -0.80000000000000004, 0.90000000000000002, ++ { 2.8368381299300420, -0.80000000000000004, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.2387000876610268, -0.80000000000000004, 0.90000000000000002, ++ { 4.5674844191654058, -0.80000000000000004, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002, ++ { 7.2263259298637115, -0.80000000000000004, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler020 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5930208052157665e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.5425633303580569e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 + const testcase_ellint_3 + data021[10] = + { +@@ -628,289 +690,319 @@ + 0.0000000000000000 }, + { 0.17496737466916723, -0.69999999999999996, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35254687535677925, -0.69999999999999996, 0.0000000000000000, ++ { 0.35254687535677931, -0.69999999999999996, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.53536740275997119, -0.69999999999999996, 0.0000000000000000, ++ { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, + 0.52359877559829882 }, + { 0.72603797651684454, -0.69999999999999996, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.92698296348313458, -0.69999999999999996, 0.0000000000000000, ++ { 0.92698296348313447, -0.69999999999999996, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.3657668117194073, -0.69999999999999996, 0.0000000000000000, ++ { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.6024686895959159, -0.69999999999999996, 0.0000000000000000, ++ { 1.6024686895959162, -0.69999999999999996, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler021 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6735282577377367e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.2736371663370261e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 9.7390235212470591e-34 ++// stddev(f - f_Boost): 3.1207408609570677e-17 + const testcase_ellint_3 + data022[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17479076384884684, -0.69999999999999996, 0.10000000000000001, ++ { 0.17514462737300920, -0.69999999999999996, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35114844900396364, -0.69999999999999996, 0.10000000000000001, ++ { 0.35396527997470451, -0.69999999999999996, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53072776947527001, -0.69999999999999996, 0.10000000000000001, ++ { 0.54015179589433981, -0.69999999999999996, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.71530198262386235, -0.69999999999999996, 0.10000000000000001, ++ { 0.73734430854477728, -0.69999999999999996, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.90666760677828306, -0.69999999999999996, 0.10000000000000001, ++ { 0.94888950796697047, -0.69999999999999996, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1063366517438080, -0.69999999999999996, 0.10000000000000001, ++ { 1.1772807959736322, -0.69999999999999996, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3149477243092149, -0.69999999999999996, 0.10000000000000001, ++ { 1.4231796401075831, -0.69999999999999996, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.5314886725038925, -0.69999999999999996, 0.10000000000000001, ++ { 1.6841856799887469, -0.69999999999999996, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001, ++ { 1.9541347343119562, -0.69999999999999996, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler022 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7517969287516802e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9907249355047774e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data023[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17461479077791475, -0.69999999999999996, 0.20000000000000001, ++ { 0.17532252613350796, -0.69999999999999996, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34976950621407538, -0.69999999999999996, 0.20000000000000001, ++ { 0.35540417596807522, -0.69999999999999996, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52622533231350177, -0.69999999999999996, 0.20000000000000001, ++ { 0.54508913033361928, -0.69999999999999996, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.70508774017895215, -0.69999999999999996, 0.20000000000000001, ++ { 0.74927635777718415, -0.69999999999999996, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.88775302531730294, -0.69999999999999996, 0.20000000000000001, ++ { 0.97261706337936338, -0.69999999999999996, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0756195476149006, -0.69999999999999996, 0.20000000000000001, ++ { 1.2187303976209327, -0.69999999999999996, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2695349716654374, -0.69999999999999996, 0.20000000000000001, ++ { 1.4887796709222487, -0.69999999999999996, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4690814617070540, -0.69999999999999996, 0.20000000000000001, ++ { 1.7796581281839212, -0.69999999999999996, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.6721098780092145, -0.69999999999999996, 0.20000000000000001, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler023 = 2.5000000000000020e-13; + +-// Test data for k=-0.69999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8280039841080712e-16 ++// Test data for k=-0.69999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.6912897610535316e-16 ++// mean(f - f_Boost): 1.6653345369377347e-17 ++// variance(f - f_Boost): 2.6207864467918357e-32 ++// stddev(f - f_Boost): 1.6188843216214787e-16 + const testcase_ellint_3 + data024[10] = + { +- { 0.0000000000000000, -0.69999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, -0.69999999999999996, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17443945136076175, -0.69999999999999996, 0.29999999999999999, ++ { 0.17550107516328570, -0.69999999999999996, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34840956983535287, -0.69999999999999996, 0.29999999999999999, ++ { 0.35686409576571959, -0.69999999999999996, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52185308551329168, -0.69999999999999996, 0.29999999999999999, ++ { 0.55018827316513352, -0.69999999999999996, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.69535240431168255, -0.69999999999999996, 0.29999999999999999, ++ { 0.76189759494390275, -0.69999999999999996, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.87007983473964923, -0.69999999999999996, 0.29999999999999999, ++ { 0.99844623430885615, -0.69999999999999996, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0474657975577066, -0.69999999999999996, 0.29999999999999999, ++ { 1.2652862989039833, -0.69999999999999996, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2286225419931891, -0.69999999999999996, 0.29999999999999999, ++ { 1.5647666808691361, -0.69999999999999996, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4136490671013271, -0.69999999999999996, 0.29999999999999999, ++ { 1.8932499694938163, -0.69999999999999996, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler024 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3472957053482092e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5578567644745380e-16 ++// mean(f - f_Boost): 1.4710455076283324e-16 ++// variance(f - f_Boost): 2.6715739327327140e-33 ++// stddev(f - f_Boost): 5.1687270509601433e-17 + const testcase_ellint_3 + data025[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17426474153983229, -0.69999999999999996, 0.40000000000000002, ++ { 0.17568027871494424, -0.69999999999999996, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34706817945773732, -0.69999999999999996, 0.40000000000000002, ++ { 0.35834559208180261, -0.69999999999999996, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51760452851738148, -0.69999999999999996, 0.40000000000000002, ++ { 0.55545885451190613, -0.69999999999999996, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.68605801534722755, -0.69999999999999996, 0.40000000000000002, ++ { 0.77528120402568101, -0.69999999999999996, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.85351339387296532, -0.69999999999999996, 0.40000000000000002, ++ { 1.0267241287600319, -0.69999999999999996, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0215297967969539, -0.69999999999999996, 0.40000000000000002, ++ { 1.3181380338980246, -0.69999999999999996, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1915051074460530, -0.69999999999999996, 0.40000000000000002, ++ { 1.6542840785132085, -0.69999999999999996, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3639821911744707, -0.69999999999999996, 0.40000000000000002, ++ { 2.0315595131131818, -0.69999999999999996, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002, ++ { 2.4342502915307875, -0.69999999999999996, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler025 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9748346743390620e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.0416041815443256e-16 ++// mean(f - f_Boost): 1.9151347174783951e-16 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 + const testcase_ellint_3 + data026[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17409065729516096, -0.69999999999999996, 0.50000000000000000, ++ { 0.17586014108156545, -0.69999999999999996, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34574489064986091, -0.69999999999999996, 0.50000000000000000, ++ { 0.35984923894341653, -0.69999999999999996, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51347361925579782, -0.69999999999999996, 0.50000000000000000, ++ { 0.56091135606739995, -0.69999999999999996, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67717079489579279, -0.69999999999999996, 0.50000000000000000, ++ { 0.78951212635197054, -0.69999999999999996, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.83793902055292280, -0.69999999999999996, 0.50000000000000000, ++ { 1.0578865732938729, -0.69999999999999996, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.99752863545289705, -0.69999999999999996, 0.50000000000000000, ++ { 1.3789149005151722, -0.69999999999999996, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1576240080401501, -0.69999999999999996, 0.50000000000000000, ++ { 1.7620212286086225, -0.69999999999999996, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3191464023923762, -0.69999999999999996, 0.50000000000000000, ++ { 2.2051554347435585, -0.69999999999999996, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000, ++ { 2.6868019968236991, -0.69999999999999996, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler026 = 2.5000000000000020e-13; + +-// Test data for k=-0.69999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0457157538295173e-16 ++// Test data for k=-0.69999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.6515644573247170e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 + const testcase_ellint_3 + data027[10] = + { +- { 0.0000000000000000, -0.69999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, -0.69999999999999996, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17391719464391614, -0.69999999999999996, 0.59999999999999998, ++ { 0.17604066659721918, -0.69999999999999996, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34443927423869031, -0.69999999999999996, 0.59999999999999998, ++ { 0.36137563278353424, -0.69999999999999996, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50945473266486063, -0.69999999999999996, 0.59999999999999998, ++ { 0.56655721272747606, -0.69999999999999996, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66866056326513812, -0.69999999999999996, 0.59999999999999998, ++ { 0.80468966552978305, -0.69999999999999996, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.82325830002337352, -0.69999999999999996, 0.59999999999999998, ++ { 1.0924902943683852, -0.69999999999999996, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.97522808245669368, -0.69999999999999996, 0.59999999999999998, ++ { 1.4499247992499797, -0.69999999999999996, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1265300613705285, -0.69999999999999996, 0.59999999999999998, ++ { 1.8953714382113815, -0.69999999999999996, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2784066076152001, -0.69999999999999996, 0.59999999999999998, ++ { 2.4323229949248670, -0.69999999999999996, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler027 = 2.5000000000000020e-13; + +-// Test data for k=-0.69999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4867405596732161e-16 ++// Test data for k=-0.69999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.8475278552871384e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 + const testcase_ellint_3 + data028[10] = + { +- { 0.0000000000000000, -0.69999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, -0.69999999999999996, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17374434963995031, -0.69999999999999996, 0.69999999999999996, ++ { 0.17622185963747933, -0.69999999999999996, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34315091562900674, -0.69999999999999996, 0.69999999999999996, ++ { 0.36292539360435261, -0.69999999999999996, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50554262375653347, -0.69999999999999996, 0.69999999999999996, ++ { 0.57240892970150015, -0.69999999999999996, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66050025406305801, -0.69999999999999996, 0.69999999999999996, ++ { 0.82093084713182629, -0.69999999999999996, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.80938620118847404, -0.69999999999999996, 0.69999999999999996, ++ { 1.1312609022179871, -0.69999999999999996, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.95443223855852144, -0.69999999999999996, 0.69999999999999996, ++ { 1.5345768067715795, -0.69999999999999996, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0978573207128304, -0.69999999999999996, 0.69999999999999996, ++ { 2.0668847445934420, -0.69999999999999996, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.2411754575007123, -0.69999999999999996, 0.69999999999999996, ++ { 2.7483444537551240, -0.69999999999999996, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996, ++ { 3.5408408771788560, -0.69999999999999996, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler028 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1829502028913879e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.8664526853112274e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 3.5389557150937801e-33 ++// stddev(f - f_Boost): 5.9489122661994095e-17 + const testcase_ellint_3 + data029[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17357211837335740, -0.69999999999999996, 0.80000000000000004, ++ { 0.17640372461994805, -0.69999999999999996, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34187941416012108, -0.69999999999999996, 0.80000000000000004, ++ { 0.36449916621651091, -0.69999999999999996, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50173239465478259, -0.69999999999999996, 0.80000000000000004, ++ { 0.57848021800372573, -0.69999999999999996, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.65266550725988315, -0.69999999999999996, 0.80000000000000004, ++ { 0.83837480968392586, -0.69999999999999996, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.79624879865249298, -0.69999999999999996, 0.80000000000000004, ++ { 1.1751669030061143, -0.69999999999999996, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.93497577043296920, -0.69999999999999996, 0.80000000000000004, ++ { 1.6381851899173601, -0.69999999999999996, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0713041566930750, -0.69999999999999996, 0.80000000000000004, ++ { 2.3002065924302197, -0.69999999999999996, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2069772023255654, -0.69999999999999996, 0.80000000000000004, ++ { 3.2337600665337862, -0.69999999999999996, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.3427110650397531, -0.69999999999999996, 0.80000000000000004, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler029 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2494869624129105e-16 ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 6.7723604502134545e-16 ++// variance(f - f_Boost): 4.8757508225668289e-31 ++// stddev(f - f_Boost): 6.9826576763914390e-16 + const testcase_ellint_3 + data030[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17340049697003637, -0.69999999999999996, 0.90000000000000002, ++ { 0.17658626600478800, -0.69999999999999996, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34062438249741556, -0.69999999999999996, 0.90000000000000002, ++ { 0.36609762156017206, -0.69999999999999996, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49801946510076867, -0.69999999999999996, 0.90000000000000002, ++ { 0.58478615187842409, -0.69999999999999996, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.64513432604750476, -0.69999999999999996, 0.90000000000000002, ++ { 0.85718862878291846, -0.69999999999999996, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.78378145487573758, -0.69999999999999996, 0.90000000000000002, ++ { 1.2255385617397643, -0.69999999999999996, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.91671799500854623, -0.69999999999999996, 0.90000000000000002, ++ { 1.7696521899992939, -0.69999999999999996, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0466193579463123, -0.69999999999999996, 0.90000000000000002, ++ { 2.6476314987883502, -0.69999999999999996, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1754218079199146, -0.69999999999999996, 0.90000000000000002, ++ { 4.1373434902898083, -0.69999999999999996, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3040500499695913, -0.69999999999999996, 0.90000000000000002, ++ { 6.3796094177887746, -0.69999999999999996, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler030 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.8964816695821429e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 + const testcase_ellint_3 + data031[10] = + { +@@ -918,289 +1010,319 @@ + 0.0000000000000000 }, + { 0.17485154362988359, -0.59999999999999998, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35160509865544326, -0.59999999999999998, 0.0000000000000000, ++ { 0.35160509865544320, -0.59999999999999998, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53210652578446138, -0.59999999999999998, 0.0000000000000000, + 0.52359877559829882 }, + { 0.71805304664485659, -0.59999999999999998, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.91082759030195970, -0.59999999999999998, 0.0000000000000000, ++ { 0.91082759030195981, -0.59999999999999998, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, + 1.0471975511965976 }, + { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.5332022105084773, -0.59999999999999998, 0.0000000000000000, ++ { 1.5332022105084779, -0.59999999999999998, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000, ++ { 1.7507538029157523, -0.59999999999999998, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler031 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.6674242225057385e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 + const testcase_ellint_3 + data032[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17467514275022011, -0.59999999999999998, 0.10000000000000001, ++ { 0.17502858548476194, -0.59999999999999998, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35021333086258255, -0.59999999999999998, 0.10000000000000001, ++ { 0.35301673150537388, -0.59999999999999998, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52751664092962691, -0.59999999999999998, 0.10000000000000001, ++ { 0.53683932476326812, -0.59999999999999998, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70752126971957874, -0.59999999999999998, 0.10000000000000001, ++ { 0.72914228589586771, -0.59999999999999998, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.89111058756112871, -0.59999999999999998, 0.10000000000000001, ++ { 0.93208036718354692, -0.59999999999999998, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0789241202877768, -0.59999999999999998, 0.10000000000000001, ++ { 1.1468984688863377, -0.59999999999999998, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2710800210399946, -0.59999999999999998, 0.10000000000000001, ++ { 1.3733904977062528, -0.59999999999999998, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4669060574440276, -0.59999999999999998, 0.10000000000000001, ++ { 1.6094225663372157, -0.59999999999999998, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler032 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.20000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0940560416437693e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 + const testcase_ellint_3 + data033[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17449937871800650, -0.59999999999999998, 0.20000000000000001, ++ { 0.17520627248155893, -0.59999999999999998, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34884093647346553, -0.59999999999999998, 0.20000000000000001, ++ { 0.35444873935437748, -0.59999999999999998, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52306221119844087, -0.59999999999999998, 0.20000000000000001, ++ { 0.54172310557682524, -0.59999999999999998, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69749955678982223, -0.59999999999999998, 0.20000000000000001, ++ { 0.74084300280734672, -0.59999999999999998, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.87274610682416853, -0.59999999999999998, 0.20000000000000001, ++ { 0.95509001527006121, -0.59999999999999998, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0494620540750792, -0.59999999999999998, 0.20000000000000001, ++ { 1.1865688084431796, -0.59999999999999998, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2280847305507339, -0.59999999999999998, 0.20000000000000001, ++ { 1.4352978868932598, -0.59999999999999998, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4085436279696886, -0.59999999999999998, 0.20000000000000001, ++ { 1.6983400371331816, -0.59999999999999998, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001, ++ { 1.9695980282802215, -0.59999999999999998, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler033 = 2.5000000000000020e-13; + +-// Test data for k=-0.59999999999999998, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.9132420715478757e-16 ++// Test data for k=-0.59999999999999998, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 7.4940054162198071e-17 ++// variance(f - f_Boost): 1.6823592487044846e-32 ++// stddev(f - f_Boost): 1.2970579203352812e-16 + const testcase_ellint_3 + data034[10] = + { +- { 0.0000000000000000, -0.59999999999999998, 0.29999999999999999, ++ { 0.0000000000000000, -0.59999999999999998, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17432424744393932, -0.59999999999999998, 0.29999999999999999, ++ { 0.17538460882640122, -0.59999999999999998, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34748744127146447, -0.59999999999999998, 0.29999999999999999, ++ { 0.35590165133735557, -0.59999999999999998, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51873632743924825, -0.59999999999999998, 0.29999999999999999, ++ { 0.54676661152254535, -0.59999999999999998, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68794610396313116, -0.59999999999999998, 0.29999999999999999, ++ { 0.75321709418305305, -0.59999999999999998, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.85558070175468726, -0.59999999999999998, 0.29999999999999999, ++ { 0.98012637808992920, -0.59999999999999998, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0224416343605653, -0.59999999999999998, 0.29999999999999999, ++ { 1.2310891277158875, -0.59999999999999998, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1893144457936788, -0.59999999999999998, 0.29999999999999999, ++ { 1.5069157924585623, -0.59999999999999998, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3566435377982575, -0.59999999999999998, 0.29999999999999999, ++ { 1.8039583598337940, -0.59999999999999998, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler034 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3897581541285558e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.7909659715991921e-16 ++// mean(f - f_Boost): -2.7755575615628915e-18 ++// variance(f - f_Boost): 2.4044165394594425e-32 ++// stddev(f - f_Boost): 1.5506181152880429e-16 + const testcase_ellint_3 + data035[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17414974487670717, -0.59999999999999998, 0.40000000000000002, ++ { 0.17556359876533037, -0.59999999999999998, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34615238767335027, -0.59999999999999998, 0.40000000000000002, ++ { 0.35737601674244679, -0.59999999999999998, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51453257838108557, -0.59999999999999998, 0.40000000000000002, ++ { 0.55197933771320218, -0.59999999999999998, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67882386787534399, -0.59999999999999998, 0.40000000000000002, ++ { 0.76633591620002894, -0.59999999999999998, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.83948470233173578, -0.59999999999999998, 0.40000000000000002, ++ { 1.0075231136019616, -0.59999999999999998, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.99753496200073977, -0.59999999999999998, 0.40000000000000002, ++ { 1.2815842073813450, -0.59999999999999998, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1541101404388487, -0.59999999999999998, 0.40000000000000002, ++ { 1.5911666941449827, -0.59999999999999998, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3100911323398814, -0.59999999999999998, 0.40000000000000002, ++ { 1.9323227566025762, -0.59999999999999998, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler035 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5022138270566200e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6240126899196213e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 + const testcase_ellint_3 + data036[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17397586700252807, -0.59999999999999998, 0.50000000000000000, ++ { 0.17574324658480217, -0.59999999999999998, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34483533397138516, -0.59999999999999998, 0.50000000000000000, ++ { 0.35887240603169313, -0.59999999999999998, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51044500461706477, -0.59999999999999998, 0.50000000000000000, ++ { 0.55737161826345261, -0.59999999999999998, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67009988034712664, -0.59999999999999998, 0.50000000000000000, ++ { 0.78028227313077458, -0.59999999999999998, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.82434762375735193, -0.59999999999999998, 0.50000000000000000, ++ { 1.0376989776486290, -0.59999999999999998, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.97447346702798998, -0.59999999999999998, 0.50000000000000000, ++ { 1.3395933991042925, -0.59999999999999998, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1219494000522143, -0.59999999999999998, 0.50000000000000000, ++ { 1.6924049626591782, -0.59999999999999998, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2680242605954484, -0.59999999999999998, 0.50000000000000000, ++ { 2.0931011856518920, -0.59999999999999998, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000, ++ { 2.5239007084492706, -0.59999999999999998, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler036 = 2.5000000000000020e-13; + +-// Test data for k=-0.59999999999999998, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2504224329684343e-16 ++// Test data for k=-0.59999999999999998, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 + const testcase_ellint_3 + data037[10] = + { +- { 0.0000000000000000, -0.59999999999999998, 0.59999999999999998, ++ { 0.0000000000000000, -0.59999999999999998, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17380260984469353, -0.59999999999999998, 0.59999999999999998, ++ { 0.17592355661219386, -0.59999999999999998, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34353585361777839, -0.59999999999999998, 0.59999999999999998, ++ { 0.36039141192661606, -0.59999999999999998, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50646805774321380, -0.59999999999999998, 0.59999999999999998, ++ { 0.56295472636903854, -0.59999999999999998, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66174468108625506, -0.59999999999999998, 0.59999999999999998, ++ { 0.79515295130165986, -0.59999999999999998, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.81007462280278408, -0.59999999999999998, 0.59999999999999998, ++ { 1.0711886441942242, -0.59999999999999998, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.95303466945718729, -0.59999999999999998, 0.59999999999999998, ++ { 1.4072952835139891, -0.59999999999999998, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0924118588677505, -0.59999999999999998, 0.59999999999999998, ++ { 1.8174863977376825, -0.59999999999999998, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2297640574847937, -0.59999999999999998, 0.59999999999999998, ++ { 2.3029921578542232, -0.59999999999999998, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler037 = 2.5000000000000020e-13; + +-// Test data for k=-0.59999999999999998, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3559889697529752e-16 ++// Test data for k=-0.59999999999999998, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2451074234797436e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 + const testcase_ellint_3 + data038[10] = + { +- { 0.0000000000000000, -0.59999999999999998, 0.69999999999999996, ++ { 0.0000000000000000, -0.59999999999999998, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17362996946312007, -0.59999999999999998, 0.69999999999999996, ++ { 0.17610453321631936, -0.59999999999999998, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34225353454870588, -0.59999999999999998, 0.69999999999999996, ++ { 0.36193365056369764, -0.59999999999999998, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50259656397799524, -0.59999999999999998, 0.69999999999999996, ++ { 0.56874098962268527, -0.59999999999999998, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.65373184496628933, -0.59999999999999998, 0.69999999999999996, ++ { 0.81106198671477181, -0.59999999999999998, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.79658372884056439, -0.59999999999999998, 0.69999999999999996, ++ { 1.1086886419010082, -0.59999999999999998, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.93303240100245421, -0.59999999999999998, 0.69999999999999996, ++ { 1.4879048567239257, -0.59999999999999998, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0651547944716557, -0.59999999999999998, 0.69999999999999996, ++ { 1.9780310073615923, -0.59999999999999998, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1947676204853441, -0.59999999999999998, 0.69999999999999996, ++ { 2.5941545586772712, -0.59999999999999998, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3232737468822813, -0.59999999999999998, 0.69999999999999996, ++ { 3.3029735898397155, -0.59999999999999998, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler038 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.80000000000000004. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.1879494682720725e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3826960061025914e-16 ++// mean(f - f_Boost): 2.7478019859472625e-16 ++// variance(f - f_Boost): 4.6451528105588637e-32 ++// stddev(f - f_Boost): 2.1552616570984749e-16 + const testcase_ellint_3 + data039[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17345794195390685, -0.59999999999999998, 0.80000000000000004, ++ { 0.17628618080795252, -0.59999999999999998, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34098797854531027, -0.59999999999999998, 0.80000000000000004, ++ { 0.36349976272521012, -0.59999999999999998, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49882569168826213, -0.59999999999999998, 0.80000000000000004, ++ { 0.57474392342151914, -0.59999999999999998, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64603758566475511, -0.59999999999999998, 0.80000000000000004, ++ { 0.82814493499158159, -0.59999999999999998, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.78380365594769730, -0.59999999999999998, 0.80000000000000004, ++ { 1.1511281795998280, -0.59999999999999998, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.91430946255611190, -0.59999999999999998, 0.80000000000000004, ++ { 1.5864286332503075, -0.59999999999999998, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0398955217270607, -0.59999999999999998, 0.80000000000000004, ++ { 2.1958944866494527, -0.59999999999999998, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1625948314277679, -0.59999999999999998, 0.80000000000000004, ++ { 3.0398358172574604, -0.59999999999999998, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler039 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.90000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4768329326726447e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.7440178400898422e-16 ++// mean(f - f_Boost): 5.0792703376600914e-16 ++// variance(f - f_Boost): 1.9863137923719990e-31 ++// stddev(f - f_Boost): 4.4568080420543122e-16 + const testcase_ellint_3 + data040[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17328652344890030, -0.59999999999999998, 0.90000000000000002, ++ { 0.17646850384035848, -0.59999999999999998, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33973880062929018, -0.59999999999999998, 0.90000000000000002, ++ { 0.36509041515134105, -0.59999999999999998, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49515092233122743, -0.59999999999999998, 0.90000000000000002, ++ { 0.58097838596260631, -0.59999999999999998, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63864042139737043, -0.59999999999999998, 0.90000000000000002, ++ { 0.84656453396163722, -0.59999999999999998, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.77167205646538850, -0.59999999999999998, 0.90000000000000002, ++ { 1.1997828426963724, -0.59999999999999998, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.89673202848034383, -0.59999999999999998, 0.90000000000000002, ++ { 1.7112436789225605, -0.59999999999999998, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0163984492661304, -0.59999999999999998, 0.90000000000000002, ++ { 2.5193168553672312, -0.59999999999999998, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1328845785162431, -0.59999999999999998, 0.90000000000000002, ++ { 3.8656670488606686, -0.59999999999999998, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002, ++ { 5.8709993116265595, -0.59999999999999998, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler040 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1201497220602069e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 + const testcase_ellint_3 + data041[10] = + { +@@ -1208,1469 +1330,1619 @@ + 0.0000000000000000 }, + { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35081868470101585, -0.50000000000000000, 0.0000000000000000, ++ { 0.35081868470101579, -0.50000000000000000, 0.0000000000000000, + 0.34906585039886590 }, + { 0.52942862705190574, -0.50000000000000000, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.71164727562630314, -0.50000000000000000, 0.0000000000000000, ++ { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, + 0.69813170079773179 }, + { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0895506700518851, -0.50000000000000000, 0.0000000000000000, ++ { 1.0895506700518853, -0.50000000000000000, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2853005857432931, -0.50000000000000000, 0.0000000000000000, ++ { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4845545520549484, -0.50000000000000000, 0.0000000000000000, ++ { 1.4845545520549488, -0.50000000000000000, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler041 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.10000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1662857256911530e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 + const testcase_ellint_3 + data042[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17457763120814676, -0.50000000000000000, 0.10000000000000001, ++ { 0.17493071928248824, -0.50000000000000000, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34943246340849154, -0.50000000000000000, 0.10000000000000001, ++ { 0.35222467688034798, -0.50000000000000000, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52487937869610790, -0.50000000000000000, 0.10000000000000001, ++ { 0.53411928652008112, -0.50000000000000000, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70127785096388384, -0.50000000000000000, 0.10000000000000001, ++ { 0.72256398117177589, -0.50000000000000000, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.87898815988624479, -0.50000000000000000, 0.10000000000000001, ++ { 0.91899583232771009, -0.50000000000000000, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0582764576094172, -0.50000000000000000, 0.10000000000000001, ++ { 1.1240549163055360, -0.50000000000000000, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2391936844060205, -0.50000000000000000, 0.10000000000000001, ++ { 1.3372938086286021, -0.50000000000000000, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4214793542995841, -0.50000000000000000, 0.10000000000000001, ++ { 1.5570024469132429, -0.50000000000000000, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001, ++ { 1.7803034946545480, -0.50000000000000000, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler042 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2114786773102175e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 + const testcase_ellint_3 + data043[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17440204336345433, -0.50000000000000000, 0.20000000000000001, ++ { 0.17510822779582402, -0.50000000000000000, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34806552388338824, -0.50000000000000000, 0.20000000000000001, ++ { 0.35365094725531487, -0.50000000000000000, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52046416757129810, -0.50000000000000000, 0.20000000000000001, ++ { 0.53895933237328697, -0.50000000000000000, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69140924550993865, -0.50000000000000000, 0.20000000000000001, ++ { 0.73408090840070794, -0.50000000000000000, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.86104678636125520, -0.50000000000000000, 0.20000000000000001, ++ { 0.94145442818535396, -0.50000000000000000, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0297439459053981, -0.50000000000000000, 0.20000000000000001, ++ { 1.1624120186296487, -0.50000000000000000, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1979214112912033, -0.50000000000000000, 0.20000000000000001, ++ { 1.3965823372867114, -0.50000000000000000, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3659033858648930, -0.50000000000000000, 0.20000000000000001, ++ { 1.6414308440430099, -0.50000000000000000, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001, ++ { 1.8922947612264018, -0.50000000000000000, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler043 = 2.5000000000000020e-13; + +-// Test data for k=-0.50000000000000000, nu=0.29999999999999999. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2557837230041312e-16 ++// Test data for k=-0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 + const testcase_ellint_3 + data044[10] = + { +- { 0.0000000000000000, -0.50000000000000000, 0.29999999999999999, ++ { 0.0000000000000000, -0.50000000000000000, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17422708752228896, -0.50000000000000000, 0.29999999999999999, ++ { 0.17528638488102041, -0.50000000000000000, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34671739434855858, -0.50000000000000000, 0.29999999999999999, ++ { 0.35509802222332720, -0.50000000000000000, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51617616305641878, -0.50000000000000000, 0.29999999999999999, ++ { 0.54395740731866193, -0.50000000000000000, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68200047612545167, -0.50000000000000000, 0.29999999999999999, ++ { 0.74625871438752667, -0.50000000000000000, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.84427217869498372, -0.50000000000000000, 0.29999999999999999, ++ { 0.96588271186092023, -0.50000000000000000, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0035637821389782, -0.50000000000000000, 0.29999999999999999, ++ { 1.2054319584357329, -0.50000000000000000, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1606800483933111, -0.50000000000000000, 0.29999999999999999, ++ { 1.4651077994832871, -0.50000000000000000, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3164407134643459, -0.50000000000000000, 0.29999999999999999, ++ { 1.7416018368052644, -0.50000000000000000, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler044 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.40000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2992508582900068e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 + const testcase_ellint_3 + data045[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17405275963859917, -0.50000000000000000, 0.40000000000000002, ++ { 0.17546519477859268, -0.50000000000000000, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34538761957029329, -0.50000000000000000, 0.40000000000000002, ++ { 0.35656644822531680, -0.50000000000000000, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51200902646603907, -0.50000000000000000, 0.40000000000000002, ++ { 0.54912289677411319, -0.50000000000000000, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67301522212868792, -0.50000000000000000, 0.40000000000000002, ++ { 0.75916731611690047, -0.50000000000000000, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82853844466313320, -0.50000000000000000, 0.40000000000000002, ++ { 0.99260415631328214, -0.50000000000000000, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.97942097862681488, -0.50000000000000000, 0.40000000000000002, ++ { 1.2541925856918670, -0.50000000000000000, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1268429801220614, -0.50000000000000000, 0.40000000000000002, ++ { 1.5456393705347609, -0.50000000000000000, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2720406704533922, -0.50000000000000000, 0.40000000000000002, ++ { 1.8631904972952076, -0.50000000000000000, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler045 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3419255755184137e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 + const testcase_ellint_3 + data046[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17387905570381157, -0.50000000000000000, 0.50000000000000000, ++ { 0.17564466176941509, -0.50000000000000000, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34407576010465207, -0.50000000000000000, 0.50000000000000000, ++ { 0.35805679276065394, -0.50000000000000000, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50795686560160824, -0.50000000000000000, 0.50000000000000000, ++ { 0.55446601496200032, -0.50000000000000000, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.66442115453330164, -0.50000000000000000, 0.50000000000000000, ++ { 0.77288783578259013, -0.50000000000000000, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.81373829119355345, -0.50000000000000000, 0.50000000000000000, ++ { 1.0220246013918972, -0.50000000000000000, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.95705743313235825, -0.50000000000000000, 0.50000000000000000, ++ { 1.3101681612463965, -0.50000000000000000, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0959131991362554, -0.50000000000000000, 0.50000000000000000, ++ { 1.6422994881851025, -0.50000000000000000, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2318900529754597, -0.50000000000000000, 0.50000000000000000, ++ { 2.0152636030998816, -0.50000000000000000, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler046 = 2.5000000000000020e-13; + +-// Test data for k=-0.50000000000000000, nu=0.59999999999999998. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3838494104749599e-16 ++// Test data for k=-0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 + const testcase_ellint_3 + data047[10] = + { +- { 0.0000000000000000, -0.50000000000000000, 0.59999999999999998, ++ { 0.0000000000000000, -0.50000000000000000, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17370597174637581, -0.50000000000000000, 0.59999999999999998, ++ { 0.17582479017522740, -0.50000000000000000, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34278139158591414, -0.50000000000000000, 0.59999999999999998, ++ { 0.35956964546660036, -0.50000000000000000, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50401419439302708, -0.50000000000000000, 0.59999999999999998, ++ { 0.55999790372984193, -0.50000000000000000, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65618938076167210, -0.50000000000000000, 0.59999999999999998, ++ { 0.78751507911209895, -0.50000000000000000, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79977959248855424, -0.50000000000000000, 0.59999999999999998, ++ { 1.0546620505035220, -0.50000000000000000, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.93625925190753545, -0.50000000000000000, 0.59999999999999998, ++ { 1.3754438357425935, -0.50000000000000000, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0674905658379708, -0.50000000000000000, 0.59999999999999998, ++ { 1.7615727400820127, -0.50000000000000000, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1953481298023050, -0.50000000000000000, 0.59999999999999998, ++ { 2.2134638067565242, -0.50000000000000000, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler047 = 2.5000000000000020e-13; + +-// Test data for k=-0.50000000000000000, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4250604066951477e-16 ++// Test data for k=-0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 + const testcase_ellint_3 + data048[10] = + { +- { 0.0000000000000000, -0.50000000000000000, 0.69999999999999996, ++ { 0.0000000000000000, -0.50000000000000000, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17353350383131641, -0.50000000000000000, 0.69999999999999996, ++ { 0.17600558435914915, -0.50000000000000000, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34150410405436771, -0.50000000000000000, 0.69999999999999996, ++ { 0.36110561926726259, -0.50000000000000000, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50017589696443487, -0.50000000000000000, 0.69999999999999996, ++ { 0.56573074641137111, -0.50000000000000000, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64829398188419951, -0.50000000000000000, 0.69999999999999996, ++ { 0.80316073084237205, -0.50000000000000000, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.78658270782402073, -0.50000000000000000, 0.69999999999999996, ++ { 1.0911910688131461, -0.50000000000000000, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.91684738336675053, -0.50000000000000000, 0.69999999999999996, ++ { 1.4530946406380640, -0.50000000000000000, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0412486789555935, -0.50000000000000000, 0.69999999999999996, ++ { 1.9144386536785372, -0.50000000000000000, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1619021847612001, -0.50000000000000000, 0.69999999999999996, ++ { 2.4878788958234970, -0.50000000000000000, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996, ++ { 3.1433945297859225, -0.50000000000000000, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler048 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5715240651179632e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 + const testcase_ellint_3 + data049[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17336164805979126, -0.50000000000000000, 0.80000000000000004, ++ { 0.17618704872620228, -0.50000000000000000, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34024350132086773, -0.50000000000000000, 0.80000000000000004, ++ { 0.36266535159745827, -0.50000000000000000, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49643719555734073, -0.50000000000000000, 0.80000000000000004, ++ { 0.57167789954529158, -0.50000000000000000, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64071162456976150, -0.50000000000000000, 0.80000000000000004, ++ { 0.81995752984315018, -0.50000000000000000, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.77407836177211908, -0.50000000000000000, 0.80000000000000004, ++ { 1.1325112162158122, -0.50000000000000000, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.89867058251905652, -0.50000000000000000, 0.80000000000000004, ++ { 1.5479055930718042, -0.50000000000000000, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0169181822134910, -0.50000000000000000, 0.80000000000000004, ++ { 2.1215243941010486, -0.50000000000000000, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1311363312779448, -0.50000000000000000, 0.80000000000000004, ++ { 2.9069405767650132, -0.50000000000000000, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004, ++ { 3.8750701888108066, -0.50000000000000000, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler049 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4664649039489274e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 + const testcase_ellint_3 + data050[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17319040056865681, -0.50000000000000000, 0.90000000000000002, ++ { 0.17636918772384180, -0.50000000000000000, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33899920036578557, -0.50000000000000000, 0.90000000000000002, ++ { 0.36424950570740700, -0.50000000000000000, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49279362182695174, -0.50000000000000000, 0.90000000000000002, ++ { 0.57785404590231426, -0.50000000000000000, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63342123379746151, -0.50000000000000000, 0.90000000000000002, ++ { 0.83806480521716531, -0.50000000000000000, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.76220595179550321, -0.50000000000000000, 0.90000000000000002, ++ { 1.1798568683069752, -0.50000000000000000, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.88160004743532294, -0.50000000000000000, 0.90000000000000002, ++ { 1.6678766243739607, -0.50000000000000000, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.99427448642310123, -0.50000000000000000, 0.90000000000000002, ++ { 2.4282976450693483, -0.50000000000000000, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1027091512470095, -0.50000000000000000, 0.90000000000000002, ++ { 3.6810787666126656, -0.50000000000000000, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002, ++ { 5.5355132096026454, -0.50000000000000000, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler050 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.0000000000000000. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0617918857203532e-16 ++// Test data for k=-0.39999999999999991, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1423314994346225e-16 ++// mean(f - f_Boost): 1.9428902930940238e-17 ++// variance(f - f_Boost): 2.2263750157116445e-32 ++// stddev(f - f_Boost): 1.4921042241450980e-16 + const testcase_ellint_3 + data051[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.0000000000000000, ++ { 0.0000000000000000, -0.39999999999999991, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17467414669441528, -0.40000000000000002, 0.0000000000000000, ++ { 0.17467414669441528, -0.39999999999999991, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35018222772483443, -0.40000000000000002, 0.0000000000000000, ++ { 0.35018222772483443, -0.39999999999999991, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52729015917508737, -0.40000000000000002, 0.0000000000000000, ++ { 0.52729015917508748, -0.39999999999999991, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70662374407341244, -0.40000000000000002, 0.0000000000000000, ++ { 0.70662374407341244, -0.39999999999999991, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88859210497602170, -0.40000000000000002, 0.0000000000000000, ++ { 0.88859210497602159, -0.39999999999999991, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0733136290471379, -0.40000000000000002, 0.0000000000000000, ++ { 1.0733136290471381, -0.39999999999999991, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2605612170157061, -0.40000000000000002, 0.0000000000000000, ++ { 1.2605612170157066, -0.39999999999999991, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4497513956433439, -0.40000000000000002, 0.0000000000000000, ++ { 1.4497513956433439, -0.39999999999999991, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler051 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.10000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2644663257577874e-16 ++// Test data for k=-0.39999999999999991, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8489340395463703e-16 ++// mean(f - f_Boost): 6.3837823915946496e-17 ++// variance(f - f_Boost): 4.4785242050000272e-32 ++// stddev(f - f_Boost): 2.1162523963365114e-16 + const testcase_ellint_3 + data052[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.10000000000000001, ++ { 0.0000000000000000, -0.39999999999999991, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17449806706684670, -0.40000000000000002, 0.10000000000000001, ++ { 0.17485086590796767, -0.39999999999999991, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34880048623856075, -0.40000000000000002, 0.10000000000000001, ++ { 0.35158366412506992, -0.39999999999999991, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52277322065757392, -0.40000000000000002, 0.10000000000000001, ++ { 0.53194731675711726, -0.39999999999999991, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69638072056918365, -0.40000000000000002, 0.10000000000000001, ++ { 0.71740615528010931, -0.39999999999999991, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86968426619831540, -0.40000000000000002, 0.10000000000000001, ++ { 0.90896157773487030, -0.39999999999999991, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0428044206578095, -0.40000000000000002, 0.10000000000000001, ++ { 1.1069605483834348, -0.39999999999999991, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2158651158274378, -0.40000000000000002, 0.10000000000000001, ++ { 1.3109353428823001, -0.39999999999999991, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3889447129893324, -0.40000000000000002, 0.10000000000000001, ++ { 1.5195460789903448, -0.39999999999999991, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001, ++ { 1.7306968836847187, -0.39999999999999991, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler052 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.20000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4583049464169287e-16 ++// Test data for k=-0.39999999999999991, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.0467985583872730e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 + const testcase_ellint_3 + data053[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.20000000000000001, ++ { 0.0000000000000000, -0.39999999999999991, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17432262290723397, -0.40000000000000002, 0.20000000000000001, ++ { 0.17502822886437389, -0.39999999999999991, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34743795258968596, -0.40000000000000002, 0.20000000000000001, ++ { 0.35300530062530805, -0.39999999999999991, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51838919472805101, -0.40000000000000002, 0.20000000000000001, ++ { 0.53675259548210896, -0.39999999999999991, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68663134739057907, -0.40000000000000002, 0.20000000000000001, ++ { 0.72878006428676934, -0.39999999999999991, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.85206432981833979, -0.40000000000000002, 0.20000000000000001, ++ { 0.93100219010583563, -0.39999999999999991, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0149595349004430, -0.40000000000000002, 0.20000000000000001, ++ { 1.1443487271187609, -0.39999999999999991, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1758349405464676, -0.40000000000000002, 0.20000000000000001, ++ { 1.3683427764108813, -0.39999999999999991, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3353337673882637, -0.40000000000000002, 0.20000000000000001, ++ { 1.6008221459300933, -0.39999999999999991, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler053 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.29999999999999999. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16 ++// Test data for k=-0.39999999999999991, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9973414591826100e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 + const testcase_ellint_3 + data054[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.29999999999999999, ++ { 0.0000000000000000, -0.39999999999999991, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17414781013591540, -0.40000000000000002, 0.29999999999999999, ++ { 0.17520623975982899, -0.39999999999999991, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34609415696777285, -0.40000000000000002, 0.29999999999999999, ++ { 0.35444766141612105, -0.39999999999999991, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51413131295862535, -0.40000000000000002, 0.29999999999999999, ++ { 0.54171455841536009, -0.39999999999999991, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67733527622935630, -0.40000000000000002, 0.29999999999999999, ++ { 0.74080517001084012, -0.39999999999999991, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.83558675182733266, -0.40000000000000002, 0.29999999999999999, ++ { 0.95496950509296563, -0.39999999999999991, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.98940140808865906, -0.40000000000000002, 0.29999999999999999, ++ { 1.1862627879844718, -0.39999999999999991, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1396968797728058, -0.40000000000000002, 0.29999999999999999, ++ { 1.4346501803799458, -0.39999999999999991, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2875920037865090, -0.40000000000000002, 0.29999999999999999, ++ { 1.6971744798077697, -0.39999999999999991, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler054 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.40000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.8235661108581362e-16 ++// Test data for k=-0.39999999999999991, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2577246923979600e-16 ++// mean(f - f_Boost): 1.8596235662471373e-16 ++// variance(f - f_Boost): 1.6222417021441306e-31 ++// stddev(f - f_Boost): 4.0277061736727151e-16 + const testcase_ellint_3 + data055[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.40000000000000002, ++ { 0.0000000000000000, -0.39999999999999991, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17397362471112707, -0.40000000000000002, 0.40000000000000002, ++ { 0.17538490283034375, -0.39999999999999991, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34476864603333196, -0.40000000000000002, 0.40000000000000002, ++ { 0.35591129064319948, -0.39999999999999991, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50999329415379346, -0.40000000000000002, 0.40000000000000002, ++ { 0.54684250413264535, -0.39999999999999991, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66845674551396006, -0.40000000000000002, 0.40000000000000002, ++ { 0.75355027742668290, -0.39999999999999991, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82012848346231748, -0.40000000000000002, 0.40000000000000002, ++ { 0.98117935026780634, -0.39999999999999991, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.96582449258349057, -0.40000000000000002, 0.40000000000000002, ++ { 1.2337464222030734, -0.39999999999999991, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1068473749476286, -0.40000000000000002, 0.40000000000000002, ++ { 1.5125183419289221, -0.39999999999999991, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2447132729159989, -0.40000000000000002, 0.40000000000000002, ++ { 1.8140224451130311, -0.39999999999999991, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler055 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.50000000000000000. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.9965792755639576e-16 ++// Test data for k=-0.39999999999999991, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8009196014748294e-16 ++// mean(f - f_Boost): 1.6375789613221060e-16 ++// variance(f - f_Boost): 6.4788283329186610e-32 ++// stddev(f - f_Boost): 2.5453542647181080e-16 + const testcase_ellint_3 + data056[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.50000000000000000, ++ { 0.0000000000000000, -0.39999999999999991, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17380006262854136, -0.40000000000000002, 0.50000000000000000, ++ { 0.17556422235224273, -0.39999999999999991, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34346098216756610, -0.40000000000000002, 0.50000000000000000, ++ { 0.35739675341763921, -0.39999999999999991, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50596929935059420, -0.40000000000000002, 0.50000000000000000, ++ { 0.55214655195037188, -0.39999999999999991, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65996392089131251, -0.40000000000000002, 0.50000000000000000, ++ { 0.76709520942047438, -0.39999999999999991, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.80558463511364786, -0.40000000000000002, 0.50000000000000000, ++ { 1.0100278761577499, -0.39999999999999991, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.94397834522857704, -0.40000000000000002, 0.50000000000000000, ++ { 1.2882265661384342, -0.39999999999999991, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0768075114108115, -0.40000000000000002, 0.50000000000000000, ++ { 1.6059059780051874, -0.39999999999999991, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2059184624251333, -0.40000000000000002, 0.50000000000000000, ++ { 1.9600182740224081, -0.39999999999999991, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000, ++ { 2.3367461373176508, -0.39999999999999991, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler056 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.59999999999999998. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.1640223038298069e-16 ++// Test data for k=-0.39999999999999991, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.8411408870840790e-16 ++// mean(f - f_Boost): 9.7144514654701197e-17 ++// variance(f - f_Boost): 1.4860570558543486e-32 ++// stddev(f - f_Boost): 1.2190393988113545e-16 + const testcase_ellint_3 + data057[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.59999999999999998, ++ { 0.0000000000000000, -0.39999999999999991, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17362711992081245, -0.40000000000000002, 0.59999999999999998, ++ { 0.17574420264267029, -0.39999999999999991, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34217074276403953, -0.40000000000000002, 0.59999999999999998, ++ { 0.35890463689046265, -0.39999999999999991, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50205389185761606, -0.40000000000000002, 0.59999999999999998, ++ { 0.55763773975194486, -0.39999999999999991, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65182834920372734, -0.40000000000000002, 0.59999999999999998, ++ { 0.78153324227761267, -0.39999999999999991, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79186512820565136, -0.40000000000000002, 0.59999999999999998, ++ { 1.0420205885765887, -0.39999999999999991, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.92365535916287134, -0.40000000000000002, 0.59999999999999998, ++ { 1.3517205230381770, -0.39999999999999991, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0491915663957907, -0.40000000000000002, 0.59999999999999998, ++ { 1.7210360970313896, -0.39999999999999991, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1705934291745106, -0.40000000000000002, 0.59999999999999998, ++ { 2.1500780510169242, -0.39999999999999991, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler057 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.3264047918332349e-16 ++// Test data for k=-0.39999999999999991, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.1553900340611668e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.3242789405258207e-32 ++// stddev(f - f_Boost): 1.1507731924779187e-16 + const testcase_ellint_3 + data058[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.69999999999999996, ++ { 0.0000000000000000, -0.39999999999999991, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17345479265712868, -0.40000000000000002, 0.69999999999999996, ++ { 0.17592484806010436, -0.39999999999999991, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34089751955950354, -0.40000000000000002, 0.69999999999999996, ++ { 0.36043555139631439, -0.39999999999999991, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49824200167361332, -0.40000000000000002, 0.69999999999999996, ++ { 0.56332813669944881, -0.39999999999999991, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64402450341199402, -0.40000000000000002, 0.69999999999999996, ++ { 0.79697424562157548, -0.39999999999999991, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77889207804122873, -0.40000000000000002, 0.69999999999999996, ++ { 1.0778155987523672, -0.39999999999999991, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.90468169720957992, -0.40000000000000002, 0.69999999999999996, ++ { 1.4272018169896268, -0.39999999999999991, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0236847823692916, -0.40000000000000002, 0.69999999999999996, ++ { 1.8684377907453380, -0.39999999999999991, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1382465247425166, -0.40000000000000002, 0.69999999999999996, ++ { 2.4128677409207469, -0.39999999999999991, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996, ++ { 3.0327078743873241, -0.39999999999999991, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler058 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.80000000000000004. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.6611561645571024e-16 ++// Test data for k=-0.39999999999999991, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5727642219519274e-16 ++// mean(f - f_Boost): 2.1926904736346843e-16 ++// variance(f - f_Boost): 1.5293405480859847e-31 ++// stddev(f - f_Boost): 3.9106783913868252e-16 + const testcase_ellint_3 + data059[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.80000000000000004, ++ { 0.0000000000000000, -0.39999999999999991, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17328307694277154, -0.40000000000000002, 0.80000000000000004, ++ { 0.17610616300487833, -0.39999999999999991, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33964091800132007, -0.40000000000000002, 0.80000000000000004, ++ { 0.36199013167171978, -0.39999999999999991, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49452889372467440, -0.40000000000000002, 0.80000000000000004, ++ { 0.56923097361842423, -0.39999999999999991, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63652940095937316, -0.40000000000000002, 0.80000000000000004, ++ { 0.81354878456624347, -0.39999999999999991, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76659772511159097, -0.40000000000000002, 0.80000000000000004, ++ { 1.1182902719261825, -0.39999999999999991, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.88691047977338111, -0.40000000000000002, 0.80000000000000004, ++ { 1.5192950589409022, -0.39999999999999991, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0000273200611638, -0.40000000000000002, 0.80000000000000004, ++ { 2.0678761710223981, -0.39999999999999991, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1084787902188009, -0.40000000000000002, 0.80000000000000004, ++ { 2.8135222249879783, -0.39999999999999991, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler059 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.90000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.6376730823308004e-16 ++// Test data for k=-0.39999999999999991, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.0221626338023938e-16 ++// mean(f - f_Boost): 4.1910919179599658e-16 ++// variance(f - f_Boost): 6.2246150910247033e-31 ++// stddev(f - f_Boost): 7.8896229891070860e-16 + const testcase_ellint_3 + data060[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.90000000000000002, ++ { 0.0000000000000000, -0.39999999999999991, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17311196891868127, -0.40000000000000002, 0.90000000000000002, ++ { 0.17628815191971123, -0.39999999999999991, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33840055664911906, -0.40000000000000002, 0.90000000000000002, ++ { 0.36356903815378772, -0.39999999999999991, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49091013944075329, -0.40000000000000002, 0.90000000000000002, ++ { 0.57536079447000310, -0.39999999999999991, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62932228186809580, -0.40000000000000002, 0.90000000000000002, ++ { 0.83141355850172571, -0.39999999999999991, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.75492278323019801, -0.40000000000000002, 0.90000000000000002, ++ { 1.1646481598721361, -0.39999999999999991, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.87021659043854294, -0.40000000000000002, 0.90000000000000002, ++ { 1.6357275034001995, -0.39999999999999991, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.97800245228239246, -0.40000000000000002, 0.90000000000000002, ++ { 2.3628787566572398, -0.39999999999999991, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0809625773173697, -0.40000000000000002, 0.90000000000000002, ++ { 3.5521010369134958, -0.39999999999999991, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler060 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3361874537309281e-16 ++// Test data for k=-0.29999999999999993, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 4.9960036108132046e-17 ++// variance(f - f_Boost): 4.6872855002064458e-32 ++// stddev(f - f_Boost): 2.1650139722889657e-16 + const testcase_ellint_3 + data061[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.0000000000000000, ++ { 0.0000000000000000, -0.29999999999999993, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17461228653000099, -0.30000000000000004, 0.0000000000000000, ++ { 0.17461228653000099, -0.29999999999999993, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34969146102798415, -0.30000000000000004, 0.0000000000000000, ++ { 0.34969146102798421, -0.29999999999999993, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52565822873726320, -0.30000000000000004, 0.0000000000000000, ++ { 0.52565822873726309, -0.29999999999999993, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70284226512408532, -0.30000000000000004, 0.0000000000000000, ++ { 0.70284226512408543, -0.29999999999999993, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88144139195111182, -0.30000000000000004, 0.0000000000000000, ++ { 0.88144139195111171, -0.29999999999999993, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0614897067260520, -0.30000000000000004, 0.0000000000000000, ++ { 1.0614897067260520, -0.29999999999999993, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2428416824174218, -0.30000000000000004, 0.0000000000000000, ++ { 1.2428416824174220, -0.29999999999999993, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4251795877015927, -0.30000000000000004, 0.0000000000000000, ++ { 1.4251795877015929, -0.29999999999999993, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6080486199305128, -0.30000000000000004, 0.0000000000000000, ++ { 1.6080486199305126, -0.29999999999999993, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler061 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3908043711907203e-16 ++// Test data for k=-0.29999999999999993, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 4.0359883022230488e-32 ++// stddev(f - f_Boost): 2.0089769292411121e-16 + const testcase_ellint_3 + data062[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.10000000000000001, ++ { 0.0000000000000000, -0.29999999999999993, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17443631884814376, -0.30000000000000004, 0.10000000000000001, ++ { 0.17478889331392972, -0.29999999999999993, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34831316835124926, -0.30000000000000004, 0.10000000000000001, ++ { 0.35108939018329183, -0.29999999999999993, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52116586276523857, -0.30000000000000004, 0.10000000000000001, ++ { 0.53028990896115835, -0.29999999999999993, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69269385837910036, -0.30000000000000004, 0.10000000000000001, ++ { 0.71352417052371409, -0.29999999999999993, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86279023163070856, -0.30000000000000004, 0.10000000000000001, ++ { 0.90153086032405894, -0.29999999999999993, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0315321461438263, -0.30000000000000004, 0.10000000000000001, ++ { 1.0945187977283313, -0.29999999999999993, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1991449111869024, -0.30000000000000004, 0.10000000000000001, ++ { 1.2920699268385680, -0.29999999999999993, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3659561780923213, -0.30000000000000004, 0.10000000000000001, ++ { 1.4931243665896394, -0.29999999999999993, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5323534693557528, -0.30000000000000004, 0.10000000000000001, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler062 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4447238179454079e-16 ++// Test data for k=-0.29999999999999993, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 3.8043060629871325e-32 ++// stddev(f - f_Boost): 1.9504630380981672e-16 + const testcase_ellint_3 + data063[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.20000000000000001, ++ { 0.0000000000000000, -0.29999999999999993, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17426098615372088, -0.30000000000000004, 0.20000000000000001, ++ { 0.17496614335337535, -0.29999999999999993, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34695402664689923, -0.30000000000000004, 0.20000000000000001, ++ { 0.35250745937139372, -0.29999999999999993, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51680555567038933, -0.30000000000000004, 0.20000000000000001, ++ { 0.53506875002836884, -0.29999999999999993, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68303375225260210, -0.30000000000000004, 0.20000000000000001, ++ { 0.72479106622248191, -0.29999999999999993, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84540662891295026, -0.30000000000000004, 0.20000000000000001, ++ { 0.92326451535891607, -0.29999999999999993, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0041834051646927, -0.30000000000000004, 0.20000000000000001, ++ { 1.1312092060698349, -0.29999999999999993, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1599952702345711, -0.30000000000000004, 0.20000000000000001, ++ { 1.3481473154592321, -0.29999999999999993, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3137179520499165, -0.30000000000000004, 0.20000000000000001, ++ { 1.5722049569662748, -0.29999999999999993, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4663658145259877, -0.30000000000000004, 0.20000000000000001, ++ { 1.8002173372290498, -0.29999999999999993, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler063 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4979715256503266e-16 ++// Test data for k=-0.29999999999999993, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 + const testcase_ellint_3 + data064[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, -0.29999999999999993, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17408628437042842, -0.30000000000000004, 0.29999999999999999, ++ { 0.17514404084107435, -0.29999999999999993, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34561356761638401, -0.30000000000000004, 0.29999999999999999, ++ { 0.35394619108645647, -0.29999999999999993, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51257058617875850, -0.30000000000000004, 0.29999999999999999, ++ { 0.54000325463372689, -0.29999999999999993, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67382207124602878, -0.30000000000000004, 0.29999999999999999, ++ { 0.73670193794067651, -0.29999999999999993, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82914751587825131, -0.30000000000000004, 0.29999999999999999, ++ { 0.94689345491722177, -0.29999999999999993, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97907434814374938, -0.30000000000000004, 0.29999999999999999, ++ { 1.1723274608389140, -0.29999999999999993, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1246399297351584, -0.30000000000000004, 0.29999999999999999, ++ { 1.4128880552936287, -0.29999999999999993, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2671793970398149, -0.30000000000000004, 0.29999999999999999, ++ { 1.6659010047449661, -0.29999999999999993, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4081767433479091, -0.30000000000000004, 0.29999999999999999, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler064 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.5505716921759864e-16 ++// Test data for k=-0.29999999999999993, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 + const testcase_ellint_3 + data065[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.40000000000000002, ++ { 0.0000000000000000, -0.29999999999999993, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17391220945982727, -0.30000000000000004, 0.40000000000000002, ++ { 0.17532259000954434, -0.29999999999999993, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34429133937639689, -0.30000000000000004, 0.40000000000000002, ++ { 0.35540612770983693, -0.29999999999999993, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50845471668581632, -0.30000000000000004, 0.40000000000000002, ++ { 0.54510265552938919, -0.29999999999999993, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66502347027873854, -0.30000000000000004, 0.40000000000000002, ++ { 0.74932476310965057, -0.29999999999999993, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.81389191978012254, -0.30000000000000004, 0.40000000000000002, ++ { 0.97272793583093109, -0.29999999999999993, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.95590618002140570, -0.30000000000000004, 0.40000000000000002, ++ { 1.2188928987074241, -0.29999999999999993, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0924915195213121, -0.30000000000000004, 0.40000000000000002, ++ { 1.4888771674085941, -0.29999999999999993, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2253651604038061, -0.30000000000000004, 0.40000000000000002, ++ { 1.7794558498219191, -0.29999999999999993, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3563643538969763, -0.30000000000000004, 0.40000000000000002, ++ { 2.0822121773175528, -0.29999999999999993, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler065 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.7807908859023716e-16 ++// Test data for k=-0.29999999999999993, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 + const testcase_ellint_3 + data066[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.50000000000000000, ++ { 0.0000000000000000, -0.29999999999999993, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17373875742088232, -0.30000000000000004, 0.50000000000000000, ++ { 0.17550179513158179, -0.29999999999999993, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34298690571124157, -0.30000000000000004, 0.50000000000000000, ++ { 0.35688783251681200, -0.29999999999999993, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50445214859646936, -0.30000000000000004, 0.50000000000000000, ++ { 0.55037700010142798, -0.29999999999999993, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65660648352418516, -0.30000000000000004, 0.50000000000000000, ++ { 0.76273839789895992, -0.29999999999999993, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79953670639287289, -0.30000000000000004, 0.50000000000000000, ++ { 1.0011570518830419, -0.29999999999999993, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.93443393926588536, -0.30000000000000004, 0.50000000000000000, ++ { 1.2722987414055109, -0.29999999999999993, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0630838369016911, -0.30000000000000004, 0.50000000000000000, ++ { 1.5799590511080066, -0.29999999999999993, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1875197325653029, -0.30000000000000004, 0.50000000000000000, ++ { 1.9212367220124293, -0.29999999999999993, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3098448759814962, -0.30000000000000004, 0.50000000000000000, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler066 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.0057999499931649e-16 ++// Test data for k=-0.29999999999999993, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 + const testcase_ellint_3 + data067[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, -0.29999999999999993, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17356592428950823, -0.30000000000000004, 0.59999999999999998, ++ { 0.17568166052076745, -0.29999999999999993, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34169984536697379, -0.30000000000000004, 0.59999999999999998, ++ { 0.35839189074731181, -0.29999999999999993, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50055748266498457, -0.30000000000000004, 0.59999999999999998, ++ { 0.55583724744367558, -0.29999999999999993, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64854298527106768, -0.30000000000000004, 0.59999999999999998, ++ { 0.77703498090888223, -0.29999999999999993, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78599329284207431, -0.30000000000000004, 0.59999999999999998, ++ { 1.0326772113675962, -0.29999999999999993, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.91445452089128199, -0.30000000000000004, 0.59999999999999998, ++ { 1.3345139983717369, -0.29999999999999993, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0360412952290587, -0.30000000000000004, 0.59999999999999998, ++ { 1.6921742922838403, -0.29999999999999993, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1530473919778641, -0.30000000000000004, 0.59999999999999998, ++ { 2.1056608968472186, -0.29999999999999993, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2677758800420669, -0.30000000000000004, 0.59999999999999998, ++ { 2.5560975528589061, -0.29999999999999993, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler067 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.2239502844122443e-16 ++// Test data for k=-0.29999999999999993, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 1.6653345369377348e-16 ++// variance(f - f_Boost): 3.1994213989721786e-31 ++// stddev(f - f_Boost): 5.6563428104846852e-16 + const testcase_ellint_3 + data068[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, -0.29999999999999993, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17339370613812224, -0.30000000000000004, 0.69999999999999996, ++ { 0.17586219053197988, -0.29999999999999993, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34042975138455933, -0.30000000000000004, 0.69999999999999996, ++ { 0.35991891074557669, -0.29999999999999993, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49676568368075985, -0.30000000000000004, 0.69999999999999996, ++ { 0.56149538019961731, -0.29999999999999993, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64080774055753720, -0.30000000000000004, 0.69999999999999996, ++ { 0.79232303189667685, -0.29999999999999993, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77318507779667278, -0.30000000000000004, 0.69999999999999996, ++ { 1.0679345542878826, -0.29999999999999993, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.89579782346548609, -0.30000000000000004, 0.69999999999999996, ++ { 1.4084400085913955, -0.29999999999999993, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0110573286052202, -0.30000000000000004, 0.69999999999999996, ++ { 1.8357382859296454, -0.29999999999999993, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1214710972949635, -0.30000000000000004, 0.69999999999999996, ++ { 2.3604197996171519, -0.29999999999999993, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2294913236274982, -0.30000000000000004, 0.69999999999999996, ++ { 2.9562123549913872, -0.29999999999999993, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler068 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.4358357000101250e-16 ++// Test data for k=-0.29999999999999993, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 + const testcase_ellint_3 + data069[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.80000000000000004, ++ { 0.0000000000000000, -0.29999999999999993, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17322209907520358, -0.30000000000000004, 0.80000000000000004, ++ { 0.17604338956191670, -0.29999999999999993, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33917623046949996, -0.30000000000000004, 0.80000000000000004, ++ { 0.36146952517410791, -0.29999999999999993, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49307204894329176, -0.30000000000000004, 0.80000000000000004, ++ { 0.56736453393774644, -0.29999999999999993, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63337802830291734, -0.30000000000000004, 0.80000000000000004, ++ { 0.80873149979001091, -0.29999999999999993, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76104540997689407, -0.30000000000000004, 0.80000000000000004, ++ { 1.1077903069860620, -0.29999999999999993, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87832009635450714, -0.30000000000000004, 0.80000000000000004, ++ { 1.4985874311132998, -0.29999999999999993, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.98787879723171790, -0.30000000000000004, 0.80000000000000004, ++ { 2.0298167266724954, -0.29999999999999993, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0924036340069339, -0.30000000000000004, 0.80000000000000004, ++ { 2.7483929054985432, -0.29999999999999993, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1944567571590048, -0.30000000000000004, 0.80000000000000004, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler069 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.6419688299804087e-16 ++// Test data for k=-0.29999999999999993, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 + const testcase_ellint_3 + data070[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.90000000000000002, ++ { 0.0000000000000000, -0.29999999999999993, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17305109924485945, -0.30000000000000004, 0.90000000000000002, ++ { 0.17622526204962433, -0.29999999999999993, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33793890239556984, -0.30000000000000004, 0.90000000000000002, ++ { 0.36304439230777141, -0.29999999999999993, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48947218005089738, -0.30000000000000004, 0.90000000000000002, ++ { 0.57345914744719195, -0.29999999999999993, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62623332340775151, -0.30000000000000004, 0.90000000000000002, ++ { 0.82641512928845162, -0.29999999999999993, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74951596581511148, -0.30000000000000004, 0.90000000000000002, ++ { 1.1534256210757743, -0.29999999999999993, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.86189886597755994, -0.30000000000000004, 0.90000000000000002, ++ { 1.6124900353411677, -0.29999999999999993, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.96629451153092005, -0.30000000000000004, 0.90000000000000002, ++ { 2.3165905514845089, -0.29999999999999993, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0655269133492682, -0.30000000000000004, 0.90000000000000002, ++ { 3.4625619526539824, -0.29999999999999993, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1622376896064914, -0.30000000000000004, 0.90000000000000002, ++ { 5.1479514944016787, -0.29999999999999993, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler070 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2156475739151676e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 + const testcase_ellint_3 + data071[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17456817290292809, -0.19999999999999996, 0.0000000000000000, ++ { 0.17456817290292806, -0.19999999999999996, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34934315932086801, -0.19999999999999996, 0.0000000000000000, ++ { 0.34934315932086796, -0.19999999999999996, 0.0000000000000000, + 0.34906585039886590 }, + { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70020491009844876, -0.19999999999999996, 0.0000000000000000, ++ { 0.70020491009844887, -0.19999999999999996, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87651006649967955, -0.19999999999999996, 0.0000000000000000, ++ { 0.87651006649967977, -0.19999999999999996, 0.0000000000000000, + 0.87266462599716477 }, + { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2308975521670784, -0.19999999999999996, 0.0000000000000000, ++ { 1.2308975521670789, -0.19999999999999996, 0.0000000000000000, + 1.2217304763960306 }, + { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5868678474541660, -0.19999999999999996, 0.0000000000000000, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler071 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3374593253183472e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 + const testcase_ellint_3 + data072[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17439228502691748, -0.19999999999999996, 0.10000000000000001, ++ { 0.17474469953608965, -0.19999999999999996, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34796731137565740, -0.19999999999999996, 0.10000000000000001, ++ { 0.35073860234984255, -0.19999999999999996, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52003370294544848, -0.19999999999999996, 0.10000000000000001, ++ { 0.52912258712951521, -0.19999999999999996, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69012222258631462, -0.19999999999999996, 0.10000000000000001, ++ { 0.71081701558898069, -0.19999999999999996, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85803491465566772, -0.19999999999999996, 0.10000000000000001, ++ { 0.89640758521169384, -0.19999999999999996, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0238463961099364, -0.19999999999999996, 0.10000000000000001, ++ { 1.0860417038089853, -0.19999999999999996, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1878691059202153, -0.19999999999999996, 0.10000000000000001, ++ { 1.2793599255528623, -0.19999999999999996, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3505985031831940, -0.19999999999999996, 0.10000000000000001, ++ { 1.4754938544089076, -0.19999999999999996, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5126513474261087, -0.19999999999999996, 0.10000000000000001, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler072 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4549984059502760e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 + const testcase_ellint_3 + data073[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17421703179583747, -0.19999999999999996, 0.20000000000000001, ++ { 0.17492186907740698, -0.19999999999999996, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34661057411998791, -0.19999999999999996, 0.20000000000000001, ++ { 0.35215414286134267, -0.19999999999999996, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51569006052647393, -0.19999999999999996, 0.20000000000000001, ++ { 0.53388285615182440, -0.19999999999999996, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68052412821107244, -0.19999999999999996, 0.20000000000000001, ++ { 0.72200960282688265, -0.19999999999999996, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84081341263313825, -0.19999999999999996, 0.20000000000000001, ++ { 0.91793087614428526, -0.19999999999999996, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99683359988842890, -0.19999999999999996, 0.20000000000000001, ++ { 1.1222602841587976, -0.19999999999999996, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1493086715118852, -0.19999999999999996, 0.20000000000000001, ++ { 1.3345489407496247, -0.19999999999999996, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2992699693957541, -0.19999999999999996, 0.20000000000000001, ++ { 1.5531225705475502, -0.19999999999999996, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4479323932249564, -0.19999999999999996, 0.20000000000000001, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler073 = 2.5000000000000020e-13; + +-// Test data for k=-0.19999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.3140668101543467e-16 ++// Test data for k=-0.19999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 + const testcase_ellint_3 + data074[10] = + { +- { 0.0000000000000000, -0.19999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, -0.19999999999999996, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17404240913577704, -0.19999999999999996, 0.29999999999999999, ++ { 0.17509968571715159, -0.19999999999999996, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34527248032587193, -0.19999999999999996, 0.29999999999999999, ++ { 0.35359030214835629, -0.19999999999999996, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51147118981668416, -0.19999999999999996, 0.29999999999999999, ++ { 0.53879807274537084, -0.19999999999999996, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67137107867777601, -0.19999999999999996, 0.29999999999999999, ++ { 0.73384116418059731, -0.19999999999999996, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82470418188668893, -0.19999999999999996, 0.29999999999999999, ++ { 0.94132799329524031, -0.19999999999999996, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97202873223594299, -0.19999999999999996, 0.29999999999999999, ++ { 1.1628407021801439, -0.19999999999999996, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1144773569375266, -0.19999999999999996, 0.29999999999999999, ++ { 1.3982440216739438, -0.19999999999999996, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2535292433701000, -0.19999999999999996, 0.29999999999999999, ++ { 1.6450634983653640, -0.19999999999999996, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3908453514752477, -0.19999999999999996, 0.29999999999999999, ++ { 1.8983924169967099, -0.19999999999999996, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler074 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.6788709752760483e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3298410018355870e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 9.4370567274974557e-32 ++// stddev(f - f_Boost): 3.0719792850046133e-16 + const testcase_ellint_3 + data075[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17386841301066674, -0.19999999999999996, 0.40000000000000002, ++ { 0.17527815368535152, -0.19999999999999996, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34395257914113253, -0.19999999999999996, 0.40000000000000002, ++ { 0.35504762134297801, -0.19999999999999996, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50737088376869466, -0.19999999999999996, 0.40000000000000002, ++ { 0.54387742353211344, -0.19999999999999996, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66262801717277631, -0.19999999999999996, 0.40000000000000002, ++ { 0.74637910471804259, -0.19999999999999996, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80958766645079094, -0.19999999999999996, 0.40000000000000002, ++ { 0.96690539714174639, -0.19999999999999996, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94913754236162040, -0.19999999999999996, 0.40000000000000002, ++ { 1.2087859420184757, -0.19999999999999996, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0827985514222997, -0.19999999999999996, 0.40000000000000002, ++ { 1.4729799844168852, -0.19999999999999996, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2124212429050478, -0.19999999999999996, 0.40000000000000002, ++ { 1.7564445064596661, -0.19999999999999996, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3400002519661005, -0.19999999999999996, 0.40000000000000002, ++ { 2.0512956926676802, -0.19999999999999996, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler075 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7788201301356829e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 8.0538110429953348e-32 ++// stddev(f - f_Boost): 2.8379237204328335e-16 + const testcase_ellint_3 + data076[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17369503942181799, -0.19999999999999996, 0.50000000000000000, ++ { 0.17545727725228877, -0.19999999999999996, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34265043534362660, -0.19999999999999996, 0.50000000000000000, ++ { 0.35652666242062175, -0.19999999999999996, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50338337208655415, -0.19999999999999996, 0.50000000000000000, ++ { 0.54913090549102406, -0.19999999999999996, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65426373297163609, -0.19999999999999996, 0.50000000000000000, ++ { 0.75970161209211551, -0.19999999999999996, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79536193036145808, -0.19999999999999996, 0.50000000000000000, ++ { 0.99504737401590326, -0.19999999999999996, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92791875910061605, -0.19999999999999996, 0.50000000000000000, ++ { 1.2614666007124373, -0.19999999999999996, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0538145052725829, -0.19999999999999996, 0.50000000000000000, ++ { 1.5625255355205496, -0.19999999999999996, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1752060022875899, -0.19999999999999996, 0.50000000000000000, ++ { 1.8954460255613343, -0.19999999999999996, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2943374404397372, -0.19999999999999996, 0.50000000000000000, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler076 = 2.5000000000000020e-13; + +-// Test data for k=-0.19999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.8899223779598256e-16 ++// Test data for k=-0.19999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 + const testcase_ellint_3 + data077[10] = + { +- { 0.0000000000000000, -0.19999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, -0.19999999999999996, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17352228440746925, -0.19999999999999996, 0.59999999999999998, ++ { 0.17563706072900442, -0.19999999999999996, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34136562863713626, -0.19999999999999996, 0.59999999999999998, ++ { 0.35802800926807238, -0.19999999999999996, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49950328177638481, -0.19999999999999996, 0.59999999999999998, ++ { 0.55456942250515051, -0.19999999999999996, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64625032705690799, -0.19999999999999996, 0.59999999999999998, ++ { 0.77390003828438203, -0.19999999999999996, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78193941198403083, -0.19999999999999996, 0.59999999999999998, ++ { 1.0262441366366397, -0.19999999999999996, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90817230934317128, -0.19999999999999996, 0.59999999999999998, ++ { 1.3228192988439669, -0.19999999999999996, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0271563751276462, -0.19999999999999996, 0.59999999999999998, ++ { 1.6728005754680795, -0.19999999999999996, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1412999379040518, -0.19999999999999996, 0.59999999999999998, ++ { 2.0761587107468511, -0.19999999999999996, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2530330675914556, -0.19999999999999996, 0.59999999999999998, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler077 = 2.5000000000000020e-13; + +-// Test data for k=-0.19999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.9999318361775115e-16 ++// Test data for k=-0.19999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1818454249546518e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 + const testcase_ellint_3 + data078[10] = + { +- { 0.0000000000000000, -0.19999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, -0.19999999999999996, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17335014404233895, -0.19999999999999996, 0.69999999999999996, ++ { 0.17581750846781172, -0.19999999999999996, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34009775298617811, -0.19999999999999996, 0.69999999999999996, ++ { 0.35955226882028513, -0.19999999999999996, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49572560201923810, -0.19999999999999996, 0.69999999999999996, ++ { 0.56020489659466499, -0.19999999999999996, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63856276669886503, -0.19999999999999996, 0.69999999999999996, ++ { 0.78908196988531487, -0.19999999999999996, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76924438644867565, -0.19999999999999996, 0.69999999999999996, ++ { 1.0611336754143517, -0.19999999999999996, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88973060843856466, -0.19999999999999996, 0.69999999999999996, ++ { 1.3956969951058884, -0.19999999999999996, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0025230471636377, -0.19999999999999996, 0.69999999999999996, ++ { 1.8138131612209609, -0.19999999999999996, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1102356376093103, -0.19999999999999996, 0.69999999999999996, ++ { 2.3256365528879561, -0.19999999999999996, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2154356555075863, -0.19999999999999996, 0.69999999999999996, ++ { 2.9058704854500963, -0.19999999999999996, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler078 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.0901276230707249e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9866614515542431e-16 ++// mean(f - f_Boost): 1.8318679906315082e-16 ++// variance(f - f_Boost): 3.1335688610218711e-31 ++// stddev(f - f_Boost): 5.5978289193417400e-16 + const testcase_ellint_3 + data079[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17317861443718538, -0.19999999999999996, 0.80000000000000004, ++ { 0.17599862486281712, -0.19999999999999996, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33884641598718701, -0.19999999999999996, 0.80000000000000004, ++ { 0.36110007227128776, -0.19999999999999996, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49204565281259494, -0.19999999999999996, 0.80000000000000004, ++ { 0.56605039658567224, -0.19999999999999996, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63117851188220320, -0.19999999999999996, 0.80000000000000004, ++ { 0.80537523874517691, -0.19999999999999996, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75721095949544170, -0.19999999999999996, 0.80000000000000004, ++ { 1.1005662342414086, -0.19999999999999996, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87245201443919118, -0.19999999999999996, 0.80000000000000004, ++ { 1.4845340298105778, -0.19999999999999996, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97966584238831089, -0.19999999999999996, 0.80000000000000004, ++ { 2.0043332244969392, -0.19999999999999996, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0816336325174360, -0.19999999999999996, 0.80000000000000004, ++ { 2.7052856676744761, -0.19999999999999996, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1810223448909909, -0.19999999999999996, 0.80000000000000004, ++ { 3.5622166386422629, -0.19999999999999996, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler079 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4833128442756722e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2817178727913890e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 6.6311432369155086e-31 ++// stddev(f - f_Boost): 8.1431831840598485e-16 + const testcase_ellint_3 + data080[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17300769173837277, -0.19999999999999996, 0.90000000000000002, ++ { 0.17618041435044951, -0.19999999999999996, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33761123827372508, -0.19999999999999996, 0.90000000000000002, ++ { 0.36267207636502929, -0.19999999999999996, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48845905690769426, -0.19999999999999996, 0.90000000000000002, ++ { 0.57212028758237743, -0.19999999999999996, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62407720017324952, -0.19999999999999996, 0.90000000000000002, ++ { 0.82293323876704483, -0.19999999999999996, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74578146525124289, -0.19999999999999996, 0.90000000000000002, ++ { 1.1457077279880385, -0.19999999999999996, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85621583540073076, -0.19999999999999996, 0.90000000000000002, ++ { 1.5967346899325681, -0.19999999999999996, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95837725988001199, -0.19999999999999996, 0.90000000000000002, ++ { 2.2856537353421724, -0.19999999999999996, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0551821412633928, -0.19999999999999996, 0.90000000000000002, ++ { 3.4034714304613902, -0.19999999999999996, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1493679916141861, -0.19999999999999996, 0.90000000000000002, ++ { 5.0448269356200361, -0.19999999999999996, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler080 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1735566504509650e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 8.2258607846939269e-33 ++// stddev(f - f_Boost): 9.0696531271564778e-17 + const testcase_ellint_3 + data081[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17454173353063659, -0.099999999999999978, 0.0000000000000000, ++ { 0.17454173353063662, -0.099999999999999978, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34913506721468091, -0.099999999999999978, 0.0000000000000000, ++ { 0.34913506721468096, -0.099999999999999978, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52382550016538942, -0.099999999999999978, 0.0000000000000000, ++ { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, + 0.52359877559829882 }, + { 0.69864700854177020, -0.099999999999999978, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87361792586964870, -0.099999999999999978, 0.0000000000000000, ++ { 0.87361792586964859, -0.099999999999999978, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0487386319621683, -0.099999999999999978, 0.0000000000000000, ++ { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2239913752078757, -0.099999999999999978, 0.0000000000000000, ++ { 1.2239913752078759, -0.099999999999999978, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.3993423113684049, -0.099999999999999978, 0.0000000000000000, ++ { 1.3993423113684051, -0.099999999999999978, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000, ++ { 1.5747455615173558, -0.099999999999999978, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler081 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3097339877269682e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 + const testcase_ellint_3 + data082[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17436589347616613, -0.099999999999999978, 0.10000000000000001, ++ { 0.17471821213559732, -0.099999999999999978, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34776067871237359, -0.099999999999999978, 0.10000000000000001, ++ { 0.35052902610011138, -0.099999999999999978, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.51936064354727796, -0.099999999999999978, 0.10000000000000001, ++ { 0.52842865990255727, -0.099999999999999978, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.68860303749364349, -0.099999999999999978, 0.10000000000000001, ++ { 0.70921799731166713, -0.099999999999999978, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85524561882332051, -0.099999999999999978, 0.10000000000000001, ++ { 0.89340330535868662, -0.099999999999999978, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0193708301908335, -0.099999999999999978, 0.10000000000000001, ++ { 1.0811075784236857, -0.099999999999999978, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1813474067123044, -0.099999999999999978, 0.10000000000000001, ++ { 1.2720133232666426, -0.099999999999999978, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3417670770424983, -0.099999999999999978, 0.10000000000000001, ++ { 1.4653630031861395, -0.099999999999999978, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler082 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4399947764827574e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 + const testcase_ellint_3 + data083[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17419068786141340, -0.099999999999999978, 0.20000000000000001, ++ { 0.17489533344059083, -0.099999999999999978, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34640537686230133, -0.099999999999999978, 0.20000000000000001, ++ { 0.35194305707815038, -0.099999999999999978, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51502689171753946, -0.099999999999999978, 0.20000000000000001, ++ { 0.53317790741512527, -0.099999999999999978, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.67904147863672715, -0.099999999999999978, 0.20000000000000001, ++ { 0.72036681615081222, -0.099999999999999978, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.83811885126105179, -0.099999999999999978, 0.20000000000000001, ++ { 0.91480372268244303, -0.099999999999999978, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99255278555742787, -0.099999999999999978, 0.20000000000000001, ++ { 1.1170528708071514, -0.099999999999999978, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1431260546194930, -0.099999999999999978, 0.20000000000000001, ++ { 1.3266916802718358, -0.099999999999999978, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2909589656532101, -0.099999999999999978, 0.20000000000000001, ++ { 1.5421622241831547, -0.099999999999999978, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler083 = 2.5000000000000020e-13; + +-// Test data for k=-0.099999999999999978, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5650492137236872e-16 ++// Test data for k=-0.099999999999999978, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 + const testcase_ellint_3 + data084[10] = + { +- { 0.0000000000000000, -0.099999999999999978, 0.29999999999999999, ++ { 0.0000000000000000, -0.099999999999999978, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17401611261390104, -0.099999999999999978, 0.29999999999999999, ++ { 0.17507310163441189, -0.099999999999999978, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34506869507511773, -0.099999999999999978, 0.29999999999999999, ++ { 0.35337768072524217, -0.099999999999999978, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51081757604259859, -0.099999999999999978, 0.29999999999999999, ++ { 0.53808167801629170, -0.099999999999999978, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.66992297597712303, -0.099999999999999978, 0.29999999999999999, ++ { 0.73215166755955019, -0.099999999999999978, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82209722856174228, -0.099999999999999978, 0.29999999999999999, ++ { 0.93806546000201219, -0.099999999999999978, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.96792430487669590, -0.099999999999999978, 0.29999999999999999, ++ { 1.1573218723395986, -0.099999999999999978, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1085964108954092, -0.099999999999999978, 0.29999999999999999, ++ { 1.3897859679542097, -0.099999999999999978, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2456748370836999, -0.099999999999999978, 0.29999999999999999, ++ { 1.6331009404328622, -0.099999999999999978, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler084 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6854758534459740e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 + const testcase_ellint_3 + data085[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17384216369897931, -0.099999999999999978, 0.40000000000000002, ++ { 0.17525152094559704, -0.099999999999999978, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34375018311376787, -0.099999999999999978, 0.40000000000000002, ++ { 0.35483343742825979, -0.099999999999999978, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50672650758380455, -0.099999999999999978, 0.40000000000000002, ++ { 0.54314913099505446, -0.099999999999999978, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66121264213337616, -0.099999999999999978, 0.40000000000000002, ++ { 0.74463962034766862, -0.099999999999999978, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80706202005774441, -0.099999999999999978, 0.40000000000000002, ++ { 0.96349276837570441, -0.099999999999999978, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94519376138245870, -0.099999999999999978, 0.40000000000000002, ++ { 1.2029081382746343, -0.099999999999999978, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0771880300759584, -0.099999999999999978, 0.40000000000000002, ++ { 1.4638022887050806, -0.099999999999999978, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2049711557188272, -0.099999999999999978, 0.40000000000000002, ++ { 1.7432413830105224, -0.099999999999999978, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler085 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8017534281650347e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 + const testcase_ellint_3 + data086[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17366883711936548, -0.099999999999999978, 0.50000000000000000, ++ { 0.17543059564292182, -0.099999999999999978, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34244940634881882, -0.099999999999999978, 0.50000000000000000, ++ { 0.35631088838721664, -0.099999999999999978, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50274793281634367, -0.099999999999999978, 0.50000000000000000, ++ { 0.54839023346436444, -0.099999999999999978, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65287941633275082, -0.099999999999999978, 0.50000000000000000, ++ { 0.75790846946088830, -0.099999999999999978, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79291198790315398, -0.099999999999999978, 0.50000000000000000, ++ { 0.99146713686720678, -0.099999999999999978, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92412201537880323, -0.099999999999999978, 0.50000000000000000, ++ { 1.2551692247937198, -0.099999999999999978, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0484480076799372, -0.099999999999999978, 0.50000000000000000, ++ { 1.5524660788146873, -0.099999999999999978, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1681168130475206, -0.099999999999999978, 0.50000000000000000, ++ { 1.8806578570830670, -0.099999999999999978, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler086 = 2.5000000000000020e-13; + +-// Test data for k=-0.099999999999999978, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9142834151672032e-16 ++// Test data for k=-0.099999999999999978, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 + const testcase_ellint_3 + data087[10] = + { +- { 0.0000000000000000, -0.099999999999999978, 0.59999999999999998, ++ { 0.0000000000000000, -0.099999999999999978, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17349612891469013, -0.099999999999999978, 0.59999999999999998, ++ { 0.17561033003590576, -0.099999999999999978, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34116594505539444, -0.099999999999999978, 0.59999999999999998, ++ { 0.35781061668171932, -0.099999999999999978, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49887649430466674, -0.099999999999999978, 0.59999999999999998, ++ { 0.55381585659629196, -0.099999999999999978, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64489553282165146, -0.099999999999999978, 0.59999999999999998, ++ { 0.77204910484575640, -0.099999999999999978, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.77956016553782437, -0.099999999999999978, 0.59999999999999998, ++ { 1.0224751740393108, -0.099999999999999978, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90451074530096287, -0.099999999999999978, 0.59999999999999998, ++ { 1.3160230906351114, -0.099999999999999978, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0220113666961632, -0.099999999999999978, 0.59999999999999998, ++ { 1.6616282844233206, -0.099999999999999978, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1345351441065563, -0.099999999999999978, 0.59999999999999998, ++ { 2.0592555664850392, -0.099999999999999978, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998, ++ { 2.4913004919173822, -0.099999999999999978, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler087 = 2.5000000000000020e-13; + +-// Test data for k=-0.099999999999999978, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.5172091551439012e-16 ++// Test data for k=-0.099999999999999978, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data088[10] = + { +- { 0.0000000000000000, -0.099999999999999978, 0.69999999999999996, ++ { 0.0000000000000000, -0.099999999999999978, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17332403516105047, -0.099999999999999978, 0.69999999999999996, ++ { 0.17579072847532518, -0.099999999999999978, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.33989939374896883, -0.099999999999999978, 0.69999999999999996, ++ { 0.35933322840606297, -0.099999999999999978, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49510719568614070, -0.099999999999999978, 0.69999999999999996, ++ { 0.55943788649460324, -0.099999999999999978, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63723607776354974, -0.099999999999999978, 0.69999999999999996, ++ { 0.78716856504031707, -0.099999999999999978, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76693133887935327, -0.099999999999999978, 0.69999999999999996, ++ { 1.0571501305617423, -0.099999999999999978, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88619382078823805, -0.099999999999999978, 0.69999999999999996, ++ { 1.3882948301743525, -0.099999999999999978, 0.70000000000000007, + 1.0471975511965976 }, +- { 0.99758012018676490, -0.099999999999999978, 0.69999999999999996, ++ { 1.8011785680114223, -0.099999999999999978, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1037642270814410, -0.099999999999999978, 0.69999999999999996, ++ { 2.3057268183616464, -0.099999999999999978, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2073745911083185, -0.099999999999999978, 0.69999999999999996, ++ { 2.8771910188009739, -0.099999999999999978, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler088 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1294144515772258e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 + const testcase_ellint_3 + data089[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17315255197057014, -0.099999999999999978, 0.80000000000000004, ++ { 0.17597179535373417, -0.099999999999999978, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33864936055747991, -0.099999999999999978, 0.80000000000000004, ++ { 0.36087935387831499, -0.099999999999999978, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49143537041117613, -0.099999999999999978, 0.80000000000000004, ++ { 0.56526935244526444, -0.099999999999999978, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.62987861760047492, -0.099999999999999978, 0.80000000000000004, ++ { 0.80339402590612397, -0.099999999999999978, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75496005490917517, -0.099999999999999978, 0.80000000000000004, ++ { 1.0963358646374459, -0.099999999999999978, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.86903081862701881, -0.099999999999999978, 0.80000000000000004, ++ { 1.4763748483246868, -0.099999999999999978, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97490814820725591, -0.099999999999999978, 0.80000000000000004, ++ { 1.9896610222794102, -0.099999999999999978, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0754290107171083, -0.099999999999999978, 0.80000000000000004, ++ { 2.6806423920122024, -0.099999999999999978, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004, ++ { 3.5246199613295612, -0.099999999999999978, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler089 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2325599449457852e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 + const testcase_ellint_3 + data090[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17298167549096563, -0.099999999999999978, 0.90000000000000002, ++ { 0.17615353510599349, -0.099999999999999978, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33741546662741589, -0.099999999999999978, 0.90000000000000002, ++ { 0.36244964892922371, -0.099999999999999978, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48785665376856868, -0.099999999999999978, 0.90000000000000002, ++ { 0.57132457590110530, -0.099999999999999978, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62280288554518959, -0.099999999999999978, 0.90000000000000002, ++ { 0.82087808820385000, -0.099999999999999978, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74358903115455188, -0.099999999999999978, 0.90000000000000002, ++ { 1.1411894342144451, -0.099999999999999978, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85290207679298335, -0.099999999999999978, 0.90000000000000002, ++ { 1.5875929286844597, -0.099999999999999978, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95379006645397379, -0.099999999999999978, 0.90000000000000002, ++ { 2.2678622986596659, -0.099999999999999978, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0492213119872327, -0.099999999999999978, 0.90000000000000002, ++ { 3.3697528941897903, -0.099999999999999978, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002, ++ { 4.9862890417305499, -0.099999999999999978, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler090 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.1203697876423452e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1203697876423447e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data091[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17453292519943292, 0.0000000000000000, 0.0000000000000000, ++ { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34906585039886584, 0.0000000000000000, 0.0000000000000000, ++ { 0.34906585039886590, 0.0000000000000000, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52359877559829870, 0.0000000000000000, 0.0000000000000000, ++ { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.69813170079773168, 0.0000000000000000, 0.0000000000000000, ++ { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, + 0.69813170079773179 }, + { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0471975511965974, 0.0000000000000000, 0.0000000000000000, ++ { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2217304763960304, 0.0000000000000000, 0.0000000000000000, ++ { 1.2217304763960306, 0.0000000000000000, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.3962634015954631, 0.0000000000000000, 0.0000000000000000, ++ { 1.3962634015954636, 0.0000000000000000, 0.0000000000000000, + 1.3962634015954636 }, + { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, + 1.5707963267948966 }, +@@ -2678,849 +2950,939 @@ + const double toler091 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.10000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.1813975824747021e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1019052604815601e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 9.5107651574678312e-37 ++// stddev(f - f_Boost): 9.7523151904908366e-19 + const testcase_ellint_3 + data092[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17435710107516605, 0.0000000000000000, 0.10000000000000001, ++ { 0.17470938780535167, 0.0000000000000000, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34769194715329604, 0.0000000000000000, 0.10000000000000001, ++ { 0.35045931581655582, 0.0000000000000000, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.51913731575866107, 0.0000000000000000, 0.10000000000000001, ++ { 0.52819841383849875, 0.0000000000000000, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.68810051897078450, 0.0000000000000000, 0.10000000000000001, ++ { 0.70868910807992958, 0.0000000000000000, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85432615661706823, 0.0000000000000000, 0.10000000000000001, ++ { 0.89241311307249638, 0.0000000000000000, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0179006647340794, 0.0000000000000000, 0.10000000000000001, ++ { 1.0794871444666669, 0.0000000000000000, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1792120640746322, 0.0000000000000000, 0.10000000000000001, ++ { 1.2696086247356864, 0.0000000000000000, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3388834245070498, 0.0000000000000000, 0.10000000000000001, ++ { 1.4620562617494721, 0.0000000000000000, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001, ++ { 1.6557647109660167, 0.0000000000000000, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler092 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.2402804784409065e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0831888697465320e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data093[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17418191132226074, 0.0000000000000000, 0.20000000000000001, ++ { 0.17488649304197776, 0.0000000000000000, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34633712256943405, 0.0000000000000000, 0.20000000000000001, ++ { 0.35187284488675424, 0.0000000000000000, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51480684302043700, 0.0000000000000000, 0.20000000000000001, ++ { 0.53294400750146131, 0.0000000000000000, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.67855102942481937, 0.0000000000000000, 0.20000000000000001, ++ { 0.71982347021822823, 0.0000000000000000, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.83723056090326253, 0.0000000000000000, 0.20000000000000001, ++ { 0.91377311030258745, 0.0000000000000000, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99114645269578161, 0.0000000000000000, 0.20000000000000001, ++ { 1.1153429007215137, 0.0000000000000000, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1411014627915537, 0.0000000000000000, 0.20000000000000001, ++ { 1.3241202847784086, 0.0000000000000000, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2882448138013969, 0.0000000000000000, 0.20000000000000001, ++ { 1.5385854914338242, 0.0000000000000000, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001, ++ { 1.7562036827601815, 0.0000000000000000, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler093 = 2.5000000000000020e-13; + +-// Test data for k=0.0000000000000000, nu=0.29999999999999999. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.2972291118632678e-16 ++// Test data for k=0.0000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0642101770923591e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data094[10] = + { +- { 0.0000000000000000, 0.0000000000000000, 0.29999999999999999, ++ { 0.0000000000000000, 0.0000000000000000, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17400735186871724, 0.0000000000000000, 0.29999999999999999, ++ { 0.17506424509761404, 0.0000000000000000, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34500091027020219, 0.0000000000000000, 0.29999999999999999, ++ { 0.35330695794774630, 0.0000000000000000, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51060069523901530, 0.0000000000000000, 0.29999999999999999, ++ { 0.53784398359522367, 0.0000000000000000, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.66944393961375448, 0.0000000000000000, 0.29999999999999999, ++ { 0.73159289408687844, 0.0000000000000000, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82123776744538157, 0.0000000000000000, 0.29999999999999999, ++ { 0.93699031797084975, 0.0000000000000000, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.96657579245516501, 0.0000000000000000, 0.29999999999999999, ++ { 1.1555098909390267, 0.0000000000000000, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1066703663542414, 0.0000000000000000, 0.29999999999999999, ++ { 1.3870184960144325, 0.0000000000000000, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2431094251944901, 0.0000000000000000, 0.29999999999999999, ++ { 1.6291980835772994, 0.0000000000000000, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler094 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.40000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.3524218164111537e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0449580089795878e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data095[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17383341868035862, 0.0000000000000000, 0.40000000000000002, ++ { 0.17524264820030025, 0.0000000000000000, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34368286022299821, 0.0000000000000000, 0.40000000000000002, ++ { 0.35476219513871499, 0.0000000000000000, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50651268947499395, 0.0000000000000000, 0.40000000000000002, ++ { 0.54290749235440094, 0.0000000000000000, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66074441806097539, 0.0000000000000000, 0.40000000000000002, ++ { 0.74406433757109913, 0.0000000000000000, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80622931670113474, 0.0000000000000000, 0.40000000000000002, ++ { 0.96236826162553313, 0.0000000000000000, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94389791565435210, 0.0000000000000000, 0.40000000000000002, ++ { 1.2009785880262487, 0.0000000000000000, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0753503387899728, 0.0000000000000000, 0.40000000000000002, ++ { 1.4608000106167567, 0.0000000000000000, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2025374759127518, 0.0000000000000000, 0.40000000000000002, ++ { 1.7389349574753439, 0.0000000000000000, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3275651989026320, 0.0000000000000000, 0.40000000000000002, ++ { 2.0278893379868057, 0.0000000000000000, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler095 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.50000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6090167266677240e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0254203825026289e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data096[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17366010776037044, 0.0000000000000000, 0.50000000000000000, ++ { 0.17542170661831016, 0.0000000000000000, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34238253799539309, 0.0000000000000000, 0.50000000000000000, ++ { 0.35623911740195419, 0.0000000000000000, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50253707775976397, 0.0000000000000000, 0.50000000000000000, ++ { 0.54814449099863127, 0.0000000000000000, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65242145347295766, 0.0000000000000000, 0.50000000000000000, ++ { 0.75731546607718081, 0.0000000000000000, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79210420018698058, 0.0000000000000000, 0.50000000000000000, ++ { 0.99028751188233310, 0.0000000000000000, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92287437995632171, 0.0000000000000000, 0.50000000000000000, ++ { 1.2531022857760581, 0.0000000000000000, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0466900550798659, 0.0000000000000000, 0.50000000000000000, ++ { 1.5491761777615785, 0.0000000000000000, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1658007366618623, 0.0000000000000000, 0.50000000000000000, ++ { 1.8758359693666533, 0.0000000000000000, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler096 = 2.5000000000000020e-13; + +-// Test data for k=0.0000000000000000, nu=0.59999999999999998. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.4581288258006758e-16 ++// Test data for k=0.0000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1742785192400269e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 2.3776912893669577e-35 ++// stddev(f - f_Boost): 4.8761575952454181e-18 + const testcase_ellint_3 + data097[10] = + { +- { 0.0000000000000000, 0.0000000000000000, 0.59999999999999998, ++ { 0.0000000000000000, 0.0000000000000000, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17348741514884700, 0.0000000000000000, 0.59999999999999998, ++ { 0.17560142466065651, 0.0000000000000000, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34109952405241289, 0.0000000000000000, 0.59999999999999998, ++ { 0.35773830754879005, 0.0000000000000000, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49866850781226285, 0.0000000000000000, 0.59999999999999998, ++ { 0.55356583986445973, 0.0000000000000000, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64444732407062499, 0.0000000000000000, 0.59999999999999998, ++ { 0.77143701715151514, 0.0000000000000000, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.77877564686544720, 0.0000000000000000, 0.59999999999999998, ++ { 1.0212334940541210, 0.0000000000000000, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90330743691883475, 0.0000000000000000, 0.59999999999999998, ++ { 1.3137928444460387, 0.0000000000000000, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0203257987604104, 0.0000000000000000, 0.59999999999999998, ++ { 1.6579755004159076, 0.0000000000000000, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1323247918768629, 0.0000000000000000, 0.59999999999999998, ++ { 2.0537461418295506, 0.0000000000000000, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998, ++ { 2.4836470664490253, 0.0000000000000000, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler097 = 2.5000000000000020e-13; + +-// Test data for k=0.0000000000000000, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.5088894797856263e-16 ++// Test data for k=0.0000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 4 ++// max(|f - f_Boost| / |f_Boost|): 3.0903019454022601e-16 ++// mean(f - f_Boost): -6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 + const testcase_ellint_3 + data098[10] = + { +- { 0.0000000000000000, 0.0000000000000000, 0.69999999999999996, ++ { 0.0000000000000000, 0.0000000000000000, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17331533692234474, 0.0000000000000000, 0.69999999999999996, ++ { 0.17578180667760368, 0.0000000000000000, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.33983341309265935, 0.0000000000000000, 0.69999999999999996, ++ { 0.35926037139410999, 0.0000000000000000, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49490198805931979, 0.0000000000000000, 0.69999999999999996, ++ { 0.55918341315855080, 0.0000000000000000, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63679715525145297, 0.0000000000000000, 0.69999999999999996, ++ { 0.78653584856932546, 0.0000000000000000, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76616861049481944, 0.0000000000000000, 0.69999999999999996, ++ { 1.0558379029273324, 0.0000000000000000, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88503143209004198, 0.0000000000000000, 0.69999999999999996, ++ { 1.3858662544850615, 0.0000000000000000, 0.70000000000000007, + 1.0471975511965976 }, +- { 0.99596060249112173, 0.0000000000000000, 0.69999999999999996, ++ { 1.7970491170359040, 0.0000000000000000, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1016495050260424, 0.0000000000000000, 0.69999999999999996, ++ { 2.2992404490153917, 0.0000000000000000, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996, ++ { 2.8678686047727382, 0.0000000000000000, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler098 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.80000000000000004. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8375904358197891e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2373744057922657e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data099[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17314386919344210, 0.0000000000000000, 0.80000000000000004, ++ { 0.17596285706118869, 0.0000000000000000, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33858381342073240, 0.0000000000000000, 0.80000000000000004, ++ { 0.36080593896484231, 0.0000000000000000, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49123285640844727, 0.0000000000000000, 0.80000000000000004, ++ { 0.56501022706967863, 0.0000000000000000, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.62944854858904509, 0.0000000000000000, 0.80000000000000004, ++ { 0.80273891984116930, 0.0000000000000000, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75421778305499343, 0.0000000000000000, 0.80000000000000004, ++ { 1.0949425007763358, 0.0000000000000000, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.86790634112156617, 0.0000000000000000, 0.80000000000000004, ++ { 1.4736985692253419, 0.0000000000000000, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97334918087427558, 0.0000000000000000, 0.80000000000000004, ++ { 1.9848676587180696, 0.0000000000000000, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0734012615283985, 0.0000000000000000, 0.80000000000000004, ++ { 2.6726187823193546, 0.0000000000000000, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler099 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.90000000000000002. +-// max(|f - f_GSL|): 1.1102230246251565e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.7838310376154469e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.6108624815885066e-16 ++// mean(f - f_Boost): 2.1371793224034264e-16 ++// variance(f - f_Boost): 5.6389326618626776e-33 ++// stddev(f - f_Boost): 7.5092826966779442e-17 + const testcase_ellint_3 + data100[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17297300811030597, 0.0000000000000000, 0.90000000000000002, ++ { 0.17614458024574997, 0.0000000000000000, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33735034635360817, 0.0000000000000000, 0.90000000000000002, ++ { 0.36237566578821978, 0.0000000000000000, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48765675230233130, 0.0000000000000000, 0.90000000000000002, ++ { 0.57106058859196640, 0.0000000000000000, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62238126886123568, 0.0000000000000000, 0.90000000000000002, ++ { 0.82019857015755915, 0.0000000000000000, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74286600807269243, 0.0000000000000000, 0.90000000000000002, ++ { 1.1397014388908147, 0.0000000000000000, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85181283909264949, 0.0000000000000000, 0.90000000000000002, ++ { 1.5845952415154960, 0.0000000000000000, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95228683995371133, 0.0000000000000000, 0.90000000000000002, ++ { 2.2620531413370775, 0.0000000000000000, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0472730487412552, 0.0000000000000000, 0.90000000000000002, ++ { 3.3587842061975066, 0.0000000000000000, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002, ++ { 4.9672941328980507, 0.0000000000000000, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler100 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1735566504509650e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data101[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17454173353063659, 0.10000000000000009, 0.0000000000000000, ++ { 0.17454173353063662, 0.10000000000000009, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34913506721468091, 0.10000000000000009, 0.0000000000000000, ++ { 0.34913506721468096, 0.10000000000000009, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52382550016538942, 0.10000000000000009, 0.0000000000000000, ++ { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, + 0.52359877559829882 }, + { 0.69864700854177020, 0.10000000000000009, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87361792586964870, 0.10000000000000009, 0.0000000000000000, ++ { 0.87361792586964859, 0.10000000000000009, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0487386319621683, 0.10000000000000009, 0.0000000000000000, ++ { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2239913752078757, 0.10000000000000009, 0.0000000000000000, ++ { 1.2239913752078759, 0.10000000000000009, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.3993423113684049, 0.10000000000000009, 0.0000000000000000, ++ { 1.3993423113684051, 0.10000000000000009, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler101 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3097339877269682e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 + const testcase_ellint_3 + data102[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17436589347616613, 0.10000000000000009, 0.10000000000000001, ++ { 0.17471821213559732, 0.10000000000000009, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34776067871237359, 0.10000000000000009, 0.10000000000000001, ++ { 0.35052902610011138, 0.10000000000000009, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.51936064354727796, 0.10000000000000009, 0.10000000000000001, ++ { 0.52842865990255727, 0.10000000000000009, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.68860303749364349, 0.10000000000000009, 0.10000000000000001, ++ { 0.70921799731166713, 0.10000000000000009, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85524561882332051, 0.10000000000000009, 0.10000000000000001, ++ { 0.89340330535868662, 0.10000000000000009, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0193708301908335, 0.10000000000000009, 0.10000000000000001, ++ { 1.0811075784236857, 0.10000000000000009, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1813474067123044, 0.10000000000000009, 0.10000000000000001, ++ { 1.2720133232666426, 0.10000000000000009, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3417670770424983, 0.10000000000000009, 0.10000000000000001, ++ { 1.4653630031861395, 0.10000000000000009, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler102 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4399947764827574e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 + const testcase_ellint_3 + data103[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17419068786141340, 0.10000000000000009, 0.20000000000000001, ++ { 0.17489533344059083, 0.10000000000000009, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34640537686230133, 0.10000000000000009, 0.20000000000000001, ++ { 0.35194305707815038, 0.10000000000000009, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51502689171753946, 0.10000000000000009, 0.20000000000000001, ++ { 0.53317790741512527, 0.10000000000000009, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.67904147863672715, 0.10000000000000009, 0.20000000000000001, ++ { 0.72036681615081222, 0.10000000000000009, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.83811885126105179, 0.10000000000000009, 0.20000000000000001, ++ { 0.91480372268244303, 0.10000000000000009, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99255278555742787, 0.10000000000000009, 0.20000000000000001, ++ { 1.1170528708071514, 0.10000000000000009, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1431260546194930, 0.10000000000000009, 0.20000000000000001, ++ { 1.3266916802718358, 0.10000000000000009, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2909589656532101, 0.10000000000000009, 0.20000000000000001, ++ { 1.5421622241831547, 0.10000000000000009, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler103 = 2.5000000000000020e-13; + +-// Test data for k=0.10000000000000009, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5650492137236872e-16 ++// Test data for k=0.10000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 + const testcase_ellint_3 + data104[10] = + { +- { 0.0000000000000000, 0.10000000000000009, 0.29999999999999999, ++ { 0.0000000000000000, 0.10000000000000009, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17401611261390104, 0.10000000000000009, 0.29999999999999999, ++ { 0.17507310163441189, 0.10000000000000009, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34506869507511773, 0.10000000000000009, 0.29999999999999999, ++ { 0.35337768072524217, 0.10000000000000009, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51081757604259859, 0.10000000000000009, 0.29999999999999999, ++ { 0.53808167801629170, 0.10000000000000009, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.66992297597712303, 0.10000000000000009, 0.29999999999999999, ++ { 0.73215166755955019, 0.10000000000000009, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82209722856174228, 0.10000000000000009, 0.29999999999999999, ++ { 0.93806546000201219, 0.10000000000000009, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.96792430487669590, 0.10000000000000009, 0.29999999999999999, ++ { 1.1573218723395986, 0.10000000000000009, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1085964108954092, 0.10000000000000009, 0.29999999999999999, ++ { 1.3897859679542097, 0.10000000000000009, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2456748370836999, 0.10000000000000009, 0.29999999999999999, ++ { 1.6331009404328622, 0.10000000000000009, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999, ++ { 1.8826015946315438, 0.10000000000000009, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler104 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6854758534459740e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 + const testcase_ellint_3 + data105[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17384216369897931, 0.10000000000000009, 0.40000000000000002, ++ { 0.17525152094559704, 0.10000000000000009, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34375018311376787, 0.10000000000000009, 0.40000000000000002, ++ { 0.35483343742825979, 0.10000000000000009, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50672650758380455, 0.10000000000000009, 0.40000000000000002, ++ { 0.54314913099505446, 0.10000000000000009, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66121264213337616, 0.10000000000000009, 0.40000000000000002, ++ { 0.74463962034766862, 0.10000000000000009, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80706202005774441, 0.10000000000000009, 0.40000000000000002, ++ { 0.96349276837570441, 0.10000000000000009, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94519376138245870, 0.10000000000000009, 0.40000000000000002, ++ { 1.2029081382746343, 0.10000000000000009, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0771880300759584, 0.10000000000000009, 0.40000000000000002, ++ { 1.4638022887050806, 0.10000000000000009, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2049711557188272, 0.10000000000000009, 0.40000000000000002, ++ { 1.7432413830105224, 0.10000000000000009, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler105 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8017534281650347e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 + const testcase_ellint_3 + data106[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17366883711936548, 0.10000000000000009, 0.50000000000000000, ++ { 0.17543059564292182, 0.10000000000000009, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34244940634881882, 0.10000000000000009, 0.50000000000000000, ++ { 0.35631088838721664, 0.10000000000000009, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50274793281634367, 0.10000000000000009, 0.50000000000000000, ++ { 0.54839023346436455, 0.10000000000000009, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65287941633275082, 0.10000000000000009, 0.50000000000000000, ++ { 0.75790846946088830, 0.10000000000000009, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79291198790315398, 0.10000000000000009, 0.50000000000000000, ++ { 0.99146713686720678, 0.10000000000000009, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92412201537880323, 0.10000000000000009, 0.50000000000000000, ++ { 1.2551692247937198, 0.10000000000000009, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0484480076799372, 0.10000000000000009, 0.50000000000000000, ++ { 1.5524660788146873, 0.10000000000000009, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1681168130475206, 0.10000000000000009, 0.50000000000000000, ++ { 1.8806578570830670, 0.10000000000000009, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler106 = 2.5000000000000020e-13; + +-// Test data for k=0.10000000000000009, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9142834151672032e-16 ++// Test data for k=0.10000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 + const testcase_ellint_3 + data107[10] = + { +- { 0.0000000000000000, 0.10000000000000009, 0.59999999999999998, ++ { 0.0000000000000000, 0.10000000000000009, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17349612891469013, 0.10000000000000009, 0.59999999999999998, ++ { 0.17561033003590576, 0.10000000000000009, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34116594505539444, 0.10000000000000009, 0.59999999999999998, ++ { 0.35781061668171932, 0.10000000000000009, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49887649430466674, 0.10000000000000009, 0.59999999999999998, ++ { 0.55381585659629196, 0.10000000000000009, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64489553282165146, 0.10000000000000009, 0.59999999999999998, ++ { 0.77204910484575640, 0.10000000000000009, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.77956016553782437, 0.10000000000000009, 0.59999999999999998, ++ { 1.0224751740393108, 0.10000000000000009, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90451074530096287, 0.10000000000000009, 0.59999999999999998, ++ { 1.3160230906351114, 0.10000000000000009, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0220113666961632, 0.10000000000000009, 0.59999999999999998, ++ { 1.6616282844233206, 0.10000000000000009, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1345351441065563, 0.10000000000000009, 0.59999999999999998, ++ { 2.0592555664850392, 0.10000000000000009, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998, ++ { 2.4913004919173822, 0.10000000000000009, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler107 = 2.5000000000000020e-13; + +-// Test data for k=0.10000000000000009, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.5172091551439012e-16 ++// Test data for k=0.10000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data108[10] = + { +- { 0.0000000000000000, 0.10000000000000009, 0.69999999999999996, ++ { 0.0000000000000000, 0.10000000000000009, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17332403516105047, 0.10000000000000009, 0.69999999999999996, ++ { 0.17579072847532518, 0.10000000000000009, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.33989939374896883, 0.10000000000000009, 0.69999999999999996, ++ { 0.35933322840606297, 0.10000000000000009, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49510719568614070, 0.10000000000000009, 0.69999999999999996, ++ { 0.55943788649460324, 0.10000000000000009, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63723607776354974, 0.10000000000000009, 0.69999999999999996, ++ { 0.78716856504031707, 0.10000000000000009, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76693133887935327, 0.10000000000000009, 0.69999999999999996, ++ { 1.0571501305617423, 0.10000000000000009, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88619382078823805, 0.10000000000000009, 0.69999999999999996, ++ { 1.3882948301743525, 0.10000000000000009, 0.70000000000000007, + 1.0471975511965976 }, +- { 0.99758012018676490, 0.10000000000000009, 0.69999999999999996, ++ { 1.8011785680114223, 0.10000000000000009, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1037642270814410, 0.10000000000000009, 0.69999999999999996, ++ { 2.3057268183616464, 0.10000000000000009, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2073745911083185, 0.10000000000000009, 0.69999999999999996, ++ { 2.8771910188009739, 0.10000000000000009, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler108 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1294144515772258e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 + const testcase_ellint_3 + data109[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17315255197057014, 0.10000000000000009, 0.80000000000000004, ++ { 0.17597179535373417, 0.10000000000000009, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33864936055747991, 0.10000000000000009, 0.80000000000000004, ++ { 0.36087935387831499, 0.10000000000000009, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49143537041117613, 0.10000000000000009, 0.80000000000000004, ++ { 0.56526935244526444, 0.10000000000000009, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.62987861760047492, 0.10000000000000009, 0.80000000000000004, ++ { 0.80339402590612397, 0.10000000000000009, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75496005490917517, 0.10000000000000009, 0.80000000000000004, ++ { 1.0963358646374459, 0.10000000000000009, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.86903081862701881, 0.10000000000000009, 0.80000000000000004, ++ { 1.4763748483246868, 0.10000000000000009, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97490814820725591, 0.10000000000000009, 0.80000000000000004, ++ { 1.9896610222794102, 0.10000000000000009, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0754290107171083, 0.10000000000000009, 0.80000000000000004, ++ { 2.6806423920122024, 0.10000000000000009, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004, ++ { 3.5246199613295612, 0.10000000000000009, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler109 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2325599449457852e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 + const testcase_ellint_3 + data110[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17298167549096563, 0.10000000000000009, 0.90000000000000002, ++ { 0.17615353510599349, 0.10000000000000009, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33741546662741589, 0.10000000000000009, 0.90000000000000002, ++ { 0.36244964892922371, 0.10000000000000009, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48785665376856868, 0.10000000000000009, 0.90000000000000002, ++ { 0.57132457590110530, 0.10000000000000009, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62280288554518959, 0.10000000000000009, 0.90000000000000002, ++ { 0.82087808820385000, 0.10000000000000009, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74358903115455188, 0.10000000000000009, 0.90000000000000002, ++ { 1.1411894342144451, 0.10000000000000009, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85290207679298335, 0.10000000000000009, 0.90000000000000002, ++ { 1.5875929286844597, 0.10000000000000009, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95379006645397379, 0.10000000000000009, 0.90000000000000002, ++ { 2.2678622986596659, 0.10000000000000009, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0492213119872327, 0.10000000000000009, 0.90000000000000002, ++ { 3.3697528941897903, 0.10000000000000009, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002, ++ { 4.9862890417305499, 0.10000000000000009, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler110 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2156475739151676e-16 ++// Test data for k=0.20000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 + const testcase_ellint_3 + data111[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.0000000000000000, ++ { 0.0000000000000000, 0.20000000000000018, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17456817290292809, 0.19999999999999996, 0.0000000000000000, ++ { 0.17456817290292806, 0.20000000000000018, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34934315932086801, 0.19999999999999996, 0.0000000000000000, ++ { 0.34934315932086796, 0.20000000000000018, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52450880529443988, 0.19999999999999996, 0.0000000000000000, ++ { 0.52450880529443988, 0.20000000000000018, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70020491009844876, 0.19999999999999996, 0.0000000000000000, ++ { 0.70020491009844887, 0.20000000000000018, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87651006649967955, 0.19999999999999996, 0.0000000000000000, ++ { 0.87651006649967977, 0.20000000000000018, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0534305870298994, 0.19999999999999996, 0.0000000000000000, ++ { 1.0534305870298994, 0.20000000000000018, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2308975521670784, 0.19999999999999996, 0.0000000000000000, ++ { 1.2308975521670789, 0.20000000000000018, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4087733584990738, 0.19999999999999996, 0.0000000000000000, ++ { 1.4087733584990738, 0.20000000000000018, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5868678474541660, 0.19999999999999996, 0.0000000000000000, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler111 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3374593253183472e-16 ++// Test data for k=0.20000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 + const testcase_ellint_3 + data112[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.10000000000000001, ++ { 0.0000000000000000, 0.20000000000000018, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17439228502691748, 0.19999999999999996, 0.10000000000000001, ++ { 0.17474469953608965, 0.20000000000000018, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34796731137565740, 0.19999999999999996, 0.10000000000000001, ++ { 0.35073860234984255, 0.20000000000000018, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52003370294544848, 0.19999999999999996, 0.10000000000000001, ++ { 0.52912258712951521, 0.20000000000000018, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69012222258631462, 0.19999999999999996, 0.10000000000000001, ++ { 0.71081701558898069, 0.20000000000000018, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85803491465566772, 0.19999999999999996, 0.10000000000000001, ++ { 0.89640758521169384, 0.20000000000000018, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0238463961099364, 0.19999999999999996, 0.10000000000000001, ++ { 1.0860417038089853, 0.20000000000000018, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1878691059202153, 0.19999999999999996, 0.10000000000000001, ++ { 1.2793599255528623, 0.20000000000000018, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3505985031831940, 0.19999999999999996, 0.10000000000000001, ++ { 1.4754938544089076, 0.20000000000000018, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5126513474261087, 0.19999999999999996, 0.10000000000000001, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler112 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4549984059502760e-16 ++// Test data for k=0.20000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 + const testcase_ellint_3 + data113[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.20000000000000001, ++ { 0.0000000000000000, 0.20000000000000018, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17421703179583747, 0.19999999999999996, 0.20000000000000001, ++ { 0.17492186907740698, 0.20000000000000018, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34661057411998791, 0.19999999999999996, 0.20000000000000001, ++ { 0.35215414286134267, 0.20000000000000018, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51569006052647393, 0.19999999999999996, 0.20000000000000001, ++ { 0.53388285615182440, 0.20000000000000018, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68052412821107244, 0.19999999999999996, 0.20000000000000001, ++ { 0.72200960282688265, 0.20000000000000018, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84081341263313825, 0.19999999999999996, 0.20000000000000001, ++ { 0.91793087614428526, 0.20000000000000018, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99683359988842890, 0.19999999999999996, 0.20000000000000001, ++ { 1.1222602841587976, 0.20000000000000018, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1493086715118852, 0.19999999999999996, 0.20000000000000001, ++ { 1.3345489407496247, 0.20000000000000018, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2992699693957541, 0.19999999999999996, 0.20000000000000001, ++ { 1.5531225705475502, 0.20000000000000018, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4479323932249564, 0.19999999999999996, 0.20000000000000001, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler113 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.3140668101543467e-16 ++// Test data for k=0.20000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 + const testcase_ellint_3 + data114[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, 0.20000000000000018, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17404240913577704, 0.19999999999999996, 0.29999999999999999, ++ { 0.17509968571715159, 0.20000000000000018, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34527248032587193, 0.19999999999999996, 0.29999999999999999, ++ { 0.35359030214835629, 0.20000000000000018, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51147118981668416, 0.19999999999999996, 0.29999999999999999, ++ { 0.53879807274537084, 0.20000000000000018, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67137107867777601, 0.19999999999999996, 0.29999999999999999, ++ { 0.73384116418059731, 0.20000000000000018, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82470418188668893, 0.19999999999999996, 0.29999999999999999, ++ { 0.94132799329524031, 0.20000000000000018, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97202873223594299, 0.19999999999999996, 0.29999999999999999, ++ { 1.1628407021801439, 0.20000000000000018, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1144773569375266, 0.19999999999999996, 0.29999999999999999, ++ { 1.3982440216739438, 0.20000000000000018, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2535292433701000, 0.19999999999999996, 0.29999999999999999, ++ { 1.6450634983653640, 0.20000000000000018, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3908453514752477, 0.19999999999999996, 0.29999999999999999, ++ { 1.8983924169967099, 0.20000000000000018, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler114 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.6788709752760483e-16 ++// Test data for k=0.20000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.6738449250038925e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 2.7810428396951687e-32 ++// stddev(f - f_Boost): 1.6676458975739331e-16 + const testcase_ellint_3 + data115[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.40000000000000002, ++ { 0.0000000000000000, 0.20000000000000018, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17386841301066674, 0.19999999999999996, 0.40000000000000002, ++ { 0.17527815368535152, 0.20000000000000018, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34395257914113253, 0.19999999999999996, 0.40000000000000002, ++ { 0.35504762134297801, 0.20000000000000018, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50737088376869466, 0.19999999999999996, 0.40000000000000002, ++ { 0.54387742353211344, 0.20000000000000018, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66262801717277631, 0.19999999999999996, 0.40000000000000002, ++ { 0.74637910471804259, 0.20000000000000018, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80958766645079094, 0.19999999999999996, 0.40000000000000002, ++ { 0.96690539714174639, 0.20000000000000018, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94913754236162040, 0.19999999999999996, 0.40000000000000002, ++ { 1.2087859420184757, 0.20000000000000018, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0827985514222997, 0.19999999999999996, 0.40000000000000002, ++ { 1.4729799844168852, 0.20000000000000018, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2124212429050478, 0.19999999999999996, 0.40000000000000002, ++ { 1.7564445064596661, 0.20000000000000018, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3400002519661005, 0.19999999999999996, 0.40000000000000002, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler115 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7788201301356829e-16 ++// Test data for k=0.20000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 + const testcase_ellint_3 + data116[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.50000000000000000, ++ { 0.0000000000000000, 0.20000000000000018, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17369503942181799, 0.19999999999999996, 0.50000000000000000, ++ { 0.17545727725228877, 0.20000000000000018, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34265043534362660, 0.19999999999999996, 0.50000000000000000, ++ { 0.35652666242062175, 0.20000000000000018, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50338337208655415, 0.19999999999999996, 0.50000000000000000, ++ { 0.54913090549102406, 0.20000000000000018, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65426373297163609, 0.19999999999999996, 0.50000000000000000, ++ { 0.75970161209211551, 0.20000000000000018, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79536193036145808, 0.19999999999999996, 0.50000000000000000, ++ { 0.99504737401590326, 0.20000000000000018, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92791875910061605, 0.19999999999999996, 0.50000000000000000, ++ { 1.2614666007124373, 0.20000000000000018, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0538145052725829, 0.19999999999999996, 0.50000000000000000, ++ { 1.5625255355205498, 0.20000000000000018, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1752060022875899, 0.19999999999999996, 0.50000000000000000, ++ { 1.8954460255613346, 0.20000000000000018, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2943374404397372, 0.19999999999999996, 0.50000000000000000, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler116 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.8899223779598256e-16 ++// Test data for k=0.20000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 + const testcase_ellint_3 + data117[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, 0.20000000000000018, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17352228440746925, 0.19999999999999996, 0.59999999999999998, ++ { 0.17563706072900442, 0.20000000000000018, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34136562863713626, 0.19999999999999996, 0.59999999999999998, ++ { 0.35802800926807238, 0.20000000000000018, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49950328177638481, 0.19999999999999996, 0.59999999999999998, ++ { 0.55456942250515051, 0.20000000000000018, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64625032705690799, 0.19999999999999996, 0.59999999999999998, ++ { 0.77390003828438203, 0.20000000000000018, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78193941198403083, 0.19999999999999996, 0.59999999999999998, ++ { 1.0262441366366397, 0.20000000000000018, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90817230934317128, 0.19999999999999996, 0.59999999999999998, ++ { 1.3228192988439669, 0.20000000000000018, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0271563751276462, 0.19999999999999996, 0.59999999999999998, ++ { 1.6728005754680795, 0.20000000000000018, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1412999379040518, 0.19999999999999996, 0.59999999999999998, ++ { 2.0761587107468511, 0.20000000000000018, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2530330675914556, 0.19999999999999996, 0.59999999999999998, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler117 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.9999318361775115e-16 ++// Test data for k=0.20000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2209418045118284e-16 ++// mean(f - f_Boost): 2.4980018054066023e-17 ++// variance(f - f_Boost): 9.1989071679544611e-32 ++// stddev(f - f_Boost): 3.0329700242426498e-16 + const testcase_ellint_3 + data118[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, 0.20000000000000018, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17335014404233895, 0.19999999999999996, 0.69999999999999996, ++ { 0.17581750846781172, 0.20000000000000018, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34009775298617811, 0.19999999999999996, 0.69999999999999996, ++ { 0.35955226882028513, 0.20000000000000018, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49572560201923810, 0.19999999999999996, 0.69999999999999996, ++ { 0.56020489659466499, 0.20000000000000018, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63856276669886503, 0.19999999999999996, 0.69999999999999996, ++ { 0.78908196988531498, 0.20000000000000018, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76924438644867565, 0.19999999999999996, 0.69999999999999996, ++ { 1.0611336754143517, 0.20000000000000018, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88973060843856466, 0.19999999999999996, 0.69999999999999996, ++ { 1.3956969951058884, 0.20000000000000018, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0025230471636377, 0.19999999999999996, 0.69999999999999996, ++ { 1.8138131612209609, 0.20000000000000018, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1102356376093103, 0.19999999999999996, 0.69999999999999996, ++ { 2.3256365528879561, 0.20000000000000018, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2154356555075863, 0.19999999999999996, 0.69999999999999996, ++ { 2.9058704854500963, 0.20000000000000018, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler118 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.0901276230707249e-16 ++// Test data for k=0.20000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7399960886656824e-16 ++// mean(f - f_Boost): 1.3877787807814457e-16 ++// variance(f - f_Boost): 1.7585404776158019e-31 ++// stddev(f - f_Boost): 4.1934955319110593e-16 + const testcase_ellint_3 + data119[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.80000000000000004, ++ { 0.0000000000000000, 0.20000000000000018, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17317861443718538, 0.19999999999999996, 0.80000000000000004, ++ { 0.17599862486281712, 0.20000000000000018, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33884641598718701, 0.19999999999999996, 0.80000000000000004, ++ { 0.36110007227128776, 0.20000000000000018, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49204565281259494, 0.19999999999999996, 0.80000000000000004, ++ { 0.56605039658567224, 0.20000000000000018, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63117851188220320, 0.19999999999999996, 0.80000000000000004, ++ { 0.80537523874517691, 0.20000000000000018, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75721095949544170, 0.19999999999999996, 0.80000000000000004, ++ { 1.1005662342414086, 0.20000000000000018, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87245201443919118, 0.19999999999999996, 0.80000000000000004, ++ { 1.4845340298105778, 0.20000000000000018, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97966584238831089, 0.19999999999999996, 0.80000000000000004, ++ { 2.0043332244969392, 0.20000000000000018, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0816336325174360, 0.19999999999999996, 0.80000000000000004, ++ { 2.7052856676744761, 0.20000000000000018, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1810223448909909, 0.19999999999999996, 0.80000000000000004, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler119 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4833128442756722e-16 ++// Test data for k=0.20000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718503329017390e-16 ++// mean(f - f_Boost): 2.3592239273284576e-16 ++// variance(f - f_Boost): 2.9295534376290287e-31 ++// stddev(f - f_Boost): 5.4125349307224141e-16 + const testcase_ellint_3 + data120[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.90000000000000002, ++ { 0.0000000000000000, 0.20000000000000018, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17300769173837277, 0.19999999999999996, 0.90000000000000002, ++ { 0.17618041435044951, 0.20000000000000018, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33761123827372508, 0.19999999999999996, 0.90000000000000002, ++ { 0.36267207636502929, 0.20000000000000018, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48845905690769426, 0.19999999999999996, 0.90000000000000002, ++ { 0.57212028758237743, 0.20000000000000018, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62407720017324952, 0.19999999999999996, 0.90000000000000002, ++ { 0.82293323876704483, 0.20000000000000018, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74578146525124289, 0.19999999999999996, 0.90000000000000002, ++ { 1.1457077279880388, 0.20000000000000018, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85621583540073076, 0.19999999999999996, 0.90000000000000002, ++ { 1.5967346899325681, 0.20000000000000018, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95837725988001199, 0.19999999999999996, 0.90000000000000002, ++ { 2.2856537353421724, 0.20000000000000018, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0551821412633928, 0.19999999999999996, 0.90000000000000002, ++ { 3.4034714304613902, 0.20000000000000018, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1493679916141861, 0.19999999999999996, 0.90000000000000002, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler120 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3361874537309281e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 2.1399221604302621e-32 ++// stddev(f - f_Boost): 1.4628472785736254e-16 + const testcase_ellint_3 + data121[10] = + { +@@ -3528,19 +3890,19 @@ + 0.0000000000000000 }, + { 0.17461228653000099, 0.30000000000000004, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34969146102798415, 0.30000000000000004, 0.0000000000000000, ++ { 0.34969146102798421, 0.30000000000000004, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52565822873726320, 0.30000000000000004, 0.0000000000000000, ++ { 0.52565822873726309, 0.30000000000000004, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70284226512408532, 0.30000000000000004, 0.0000000000000000, ++ { 0.70284226512408543, 0.30000000000000004, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88144139195111182, 0.30000000000000004, 0.0000000000000000, ++ { 0.88144139195111171, 0.30000000000000004, 0.0000000000000000, + 0.87266462599716477 }, + { 1.0614897067260520, 0.30000000000000004, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2428416824174218, 0.30000000000000004, 0.0000000000000000, ++ { 1.2428416824174220, 0.30000000000000004, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4251795877015927, 0.30000000000000004, 0.0000000000000000, ++ { 1.4251795877015929, 0.30000000000000004, 0.0000000000000000, + 1.3962634015954636 }, + { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000, + 1.5707963267948966 }, +@@ -3548,559 +3910,619 @@ + const double toler121 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3908043711907203e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 7.2164496600635178e-17 ++// variance(f - f_Boost): 4.3555500115139682e-32 ++// stddev(f - f_Boost): 2.0869954507650391e-16 + const testcase_ellint_3 + data122[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17443631884814376, 0.30000000000000004, 0.10000000000000001, ++ { 0.17478889331392972, 0.30000000000000004, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34831316835124926, 0.30000000000000004, 0.10000000000000001, ++ { 0.35108939018329183, 0.30000000000000004, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52116586276523857, 0.30000000000000004, 0.10000000000000001, ++ { 0.53028990896115835, 0.30000000000000004, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69269385837910036, 0.30000000000000004, 0.10000000000000001, ++ { 0.71352417052371409, 0.30000000000000004, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86279023163070856, 0.30000000000000004, 0.10000000000000001, ++ { 0.90153086032405894, 0.30000000000000004, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0315321461438263, 0.30000000000000004, 0.10000000000000001, ++ { 1.0945187977283313, 0.30000000000000004, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1991449111869024, 0.30000000000000004, 0.10000000000000001, ++ { 1.2920699268385683, 0.30000000000000004, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3659561780923213, 0.30000000000000004, 0.10000000000000001, ++ { 1.4931243665896394, 0.30000000000000004, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5323534693557528, 0.30000000000000004, 0.10000000000000001, ++ { 1.6960848815118226, 0.30000000000000004, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler122 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4447238179454079e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 6.6613381477509390e-17 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 + const testcase_ellint_3 + data123[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17426098615372088, 0.30000000000000004, 0.20000000000000001, ++ { 0.17496614335337535, 0.30000000000000004, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34695402664689923, 0.30000000000000004, 0.20000000000000001, ++ { 0.35250745937139372, 0.30000000000000004, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51680555567038933, 0.30000000000000004, 0.20000000000000001, ++ { 0.53506875002836884, 0.30000000000000004, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68303375225260210, 0.30000000000000004, 0.20000000000000001, ++ { 0.72479106622248191, 0.30000000000000004, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84540662891295026, 0.30000000000000004, 0.20000000000000001, ++ { 0.92326451535891607, 0.30000000000000004, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0041834051646927, 0.30000000000000004, 0.20000000000000001, ++ { 1.1312092060698349, 0.30000000000000004, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1599952702345711, 0.30000000000000004, 0.20000000000000001, ++ { 1.3481473154592321, 0.30000000000000004, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3137179520499165, 0.30000000000000004, 0.20000000000000001, ++ { 1.5722049569662750, 0.30000000000000004, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4663658145259877, 0.30000000000000004, 0.20000000000000001, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler123 = 2.5000000000000020e-13; + +-// Test data for k=0.30000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4979715256503266e-16 ++// Test data for k=0.30000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 + const testcase_ellint_3 + data124[10] = + { +- { 0.0000000000000000, 0.30000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, 0.30000000000000004, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17408628437042842, 0.30000000000000004, 0.29999999999999999, ++ { 0.17514404084107435, 0.30000000000000004, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34561356761638401, 0.30000000000000004, 0.29999999999999999, ++ { 0.35394619108645647, 0.30000000000000004, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51257058617875850, 0.30000000000000004, 0.29999999999999999, ++ { 0.54000325463372689, 0.30000000000000004, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67382207124602878, 0.30000000000000004, 0.29999999999999999, ++ { 0.73670193794067651, 0.30000000000000004, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82914751587825131, 0.30000000000000004, 0.29999999999999999, ++ { 0.94689345491722177, 0.30000000000000004, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97907434814374938, 0.30000000000000004, 0.29999999999999999, ++ { 1.1723274608389140, 0.30000000000000004, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1246399297351584, 0.30000000000000004, 0.29999999999999999, ++ { 1.4128880552936287, 0.30000000000000004, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2671793970398149, 0.30000000000000004, 0.29999999999999999, ++ { 1.6659010047449661, 0.30000000000000004, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4081767433479091, 0.30000000000000004, 0.29999999999999999, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler124 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.5505716921759864e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 + const testcase_ellint_3 + data125[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17391220945982727, 0.30000000000000004, 0.40000000000000002, ++ { 0.17532259000954434, 0.30000000000000004, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34429133937639689, 0.30000000000000004, 0.40000000000000002, ++ { 0.35540612770983693, 0.30000000000000004, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50845471668581632, 0.30000000000000004, 0.40000000000000002, ++ { 0.54510265552938919, 0.30000000000000004, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66502347027873854, 0.30000000000000004, 0.40000000000000002, ++ { 0.74932476310965057, 0.30000000000000004, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.81389191978012254, 0.30000000000000004, 0.40000000000000002, ++ { 0.97272793583093109, 0.30000000000000004, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.95590618002140570, 0.30000000000000004, 0.40000000000000002, ++ { 1.2188928987074241, 0.30000000000000004, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0924915195213121, 0.30000000000000004, 0.40000000000000002, ++ { 1.4888771674085941, 0.30000000000000004, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2253651604038061, 0.30000000000000004, 0.40000000000000002, ++ { 1.7794558498219191, 0.30000000000000004, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3563643538969763, 0.30000000000000004, 0.40000000000000002, ++ { 2.0822121773175528, 0.30000000000000004, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler125 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.7807908859023716e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 + const testcase_ellint_3 + data126[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17373875742088232, 0.30000000000000004, 0.50000000000000000, ++ { 0.17550179513158179, 0.30000000000000004, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34298690571124157, 0.30000000000000004, 0.50000000000000000, ++ { 0.35688783251681200, 0.30000000000000004, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50445214859646936, 0.30000000000000004, 0.50000000000000000, ++ { 0.55037700010142798, 0.30000000000000004, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65660648352418516, 0.30000000000000004, 0.50000000000000000, ++ { 0.76273839789895992, 0.30000000000000004, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79953670639287289, 0.30000000000000004, 0.50000000000000000, ++ { 1.0011570518830419, 0.30000000000000004, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.93443393926588536, 0.30000000000000004, 0.50000000000000000, ++ { 1.2722987414055109, 0.30000000000000004, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0630838369016911, 0.30000000000000004, 0.50000000000000000, ++ { 1.5799590511080066, 0.30000000000000004, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1875197325653029, 0.30000000000000004, 0.50000000000000000, ++ { 1.9212367220124293, 0.30000000000000004, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3098448759814962, 0.30000000000000004, 0.50000000000000000, ++ { 2.2833505881933971, 0.30000000000000004, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler126 = 2.5000000000000020e-13; + +-// Test data for k=0.30000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.0057999499931649e-16 ++// Test data for k=0.30000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 + const testcase_ellint_3 + data127[10] = + { +- { 0.0000000000000000, 0.30000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, 0.30000000000000004, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17356592428950823, 0.30000000000000004, 0.59999999999999998, ++ { 0.17568166052076745, 0.30000000000000004, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34169984536697379, 0.30000000000000004, 0.59999999999999998, ++ { 0.35839189074731181, 0.30000000000000004, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50055748266498457, 0.30000000000000004, 0.59999999999999998, ++ { 0.55583724744367558, 0.30000000000000004, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64854298527106768, 0.30000000000000004, 0.59999999999999998, ++ { 0.77703498090888223, 0.30000000000000004, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78599329284207431, 0.30000000000000004, 0.59999999999999998, ++ { 1.0326772113675962, 0.30000000000000004, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.91445452089128199, 0.30000000000000004, 0.59999999999999998, ++ { 1.3345139983717369, 0.30000000000000004, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0360412952290587, 0.30000000000000004, 0.59999999999999998, ++ { 1.6921742922838403, 0.30000000000000004, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1530473919778641, 0.30000000000000004, 0.59999999999999998, ++ { 2.1056608968472186, 0.30000000000000004, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2677758800420669, 0.30000000000000004, 0.59999999999999998, ++ { 2.5560975528589061, 0.30000000000000004, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler127 = 2.5000000000000020e-13; + +-// Test data for k=0.30000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.2239502844122443e-16 ++// Test data for k=0.30000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 2.1094237467877973e-16 ++// variance(f - f_Boost): 3.0253363535298873e-31 ++// stddev(f - f_Boost): 5.5003057674368314e-16 + const testcase_ellint_3 + data128[10] = + { +- { 0.0000000000000000, 0.30000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, 0.30000000000000004, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17339370613812224, 0.30000000000000004, 0.69999999999999996, ++ { 0.17586219053197988, 0.30000000000000004, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34042975138455933, 0.30000000000000004, 0.69999999999999996, ++ { 0.35991891074557669, 0.30000000000000004, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49676568368075985, 0.30000000000000004, 0.69999999999999996, ++ { 0.56149538019961731, 0.30000000000000004, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64080774055753720, 0.30000000000000004, 0.69999999999999996, ++ { 0.79232303189667685, 0.30000000000000004, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77318507779667278, 0.30000000000000004, 0.69999999999999996, ++ { 1.0679345542878826, 0.30000000000000004, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.89579782346548609, 0.30000000000000004, 0.69999999999999996, ++ { 1.4084400085913955, 0.30000000000000004, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0110573286052202, 0.30000000000000004, 0.69999999999999996, ++ { 1.8357382859296454, 0.30000000000000004, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1214710972949635, 0.30000000000000004, 0.69999999999999996, ++ { 2.3604197996171519, 0.30000000000000004, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2294913236274982, 0.30000000000000004, 0.69999999999999996, ++ { 2.9562123549913872, 0.30000000000000004, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler128 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.4358357000101250e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 + const testcase_ellint_3 + data129[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17322209907520358, 0.30000000000000004, 0.80000000000000004, ++ { 0.17604338956191670, 0.30000000000000004, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33917623046949996, 0.30000000000000004, 0.80000000000000004, ++ { 0.36146952517410791, 0.30000000000000004, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49307204894329176, 0.30000000000000004, 0.80000000000000004, ++ { 0.56736453393774644, 0.30000000000000004, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63337802830291734, 0.30000000000000004, 0.80000000000000004, ++ { 0.80873149979001091, 0.30000000000000004, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76104540997689407, 0.30000000000000004, 0.80000000000000004, ++ { 1.1077903069860620, 0.30000000000000004, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87832009635450714, 0.30000000000000004, 0.80000000000000004, ++ { 1.4985874311132998, 0.30000000000000004, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.98787879723171790, 0.30000000000000004, 0.80000000000000004, ++ { 2.0298167266724954, 0.30000000000000004, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0924036340069339, 0.30000000000000004, 0.80000000000000004, ++ { 2.7483929054985432, 0.30000000000000004, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1944567571590048, 0.30000000000000004, 0.80000000000000004, ++ { 3.6283050484567170, 0.30000000000000004, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler129 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.6419688299804087e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 + const testcase_ellint_3 + data130[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17305109924485945, 0.30000000000000004, 0.90000000000000002, ++ { 0.17622526204962433, 0.30000000000000004, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33793890239556984, 0.30000000000000004, 0.90000000000000002, ++ { 0.36304439230777141, 0.30000000000000004, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48947218005089738, 0.30000000000000004, 0.90000000000000002, ++ { 0.57345914744719195, 0.30000000000000004, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62623332340775151, 0.30000000000000004, 0.90000000000000002, ++ { 0.82641512928845162, 0.30000000000000004, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74951596581511148, 0.30000000000000004, 0.90000000000000002, ++ { 1.1534256210757743, 0.30000000000000004, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.86189886597755994, 0.30000000000000004, 0.90000000000000002, ++ { 1.6124900353411677, 0.30000000000000004, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.96629451153092005, 0.30000000000000004, 0.90000000000000002, ++ { 2.3165905514845089, 0.30000000000000004, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0655269133492682, 0.30000000000000004, 0.90000000000000002, ++ { 3.4625619526539824, 0.30000000000000004, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1622376896064914, 0.30000000000000004, 0.90000000000000002, ++ { 5.1479514944016787, 0.30000000000000004, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler130 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4157225142938039e-16 ++// Test data for k=0.40000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0831445028587608e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 + const testcase_ellint_3 + data131[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.0000000000000000, ++ { 0.0000000000000000, 0.40000000000000013, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17467414669441528, 0.39999999999999991, 0.0000000000000000, ++ { 0.17467414669441528, 0.40000000000000013, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35018222772483443, 0.39999999999999991, 0.0000000000000000, ++ { 0.35018222772483443, 0.40000000000000013, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52729015917508737, 0.39999999999999991, 0.0000000000000000, ++ { 0.52729015917508748, 0.40000000000000013, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70662374407341244, 0.39999999999999991, 0.0000000000000000, ++ { 0.70662374407341244, 0.40000000000000013, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88859210497602170, 0.39999999999999991, 0.0000000000000000, ++ { 0.88859210497602159, 0.40000000000000013, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0733136290471379, 0.39999999999999991, 0.0000000000000000, ++ { 1.0733136290471381, 0.40000000000000013, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2605612170157061, 0.39999999999999991, 0.0000000000000000, ++ { 1.2605612170157066, 0.40000000000000013, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4497513956433439, 0.39999999999999991, 0.0000000000000000, ++ { 1.4497513956433439, 0.40000000000000013, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler131 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.6859551010103832e-16 ++// Test data for k=0.40000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0263824105456986e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 + const testcase_ellint_3 + data132[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.10000000000000001, ++ { 0.0000000000000000, 0.40000000000000013, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17449806706684670, 0.39999999999999991, 0.10000000000000001, ++ { 0.17485086590796767, 0.40000000000000013, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34880048623856075, 0.39999999999999991, 0.10000000000000001, ++ { 0.35158366412506992, 0.40000000000000013, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52277322065757392, 0.39999999999999991, 0.10000000000000001, ++ { 0.53194731675711726, 0.40000000000000013, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69638072056918365, 0.39999999999999991, 0.10000000000000001, ++ { 0.71740615528010931, 0.40000000000000013, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86968426619831540, 0.39999999999999991, 0.10000000000000001, ++ { 0.90896157773487030, 0.40000000000000013, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0428044206578095, 0.39999999999999991, 0.10000000000000001, ++ { 1.1069605483834348, 0.40000000000000013, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2158651158274378, 0.39999999999999991, 0.10000000000000001, ++ { 1.3109353428823001, 0.40000000000000013, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3889447129893324, 0.39999999999999991, 0.10000000000000001, ++ { 1.5195460789903450, 0.40000000000000013, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler132 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.9444065952225719e-16 ++// Test data for k=0.40000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.6644296021947179e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 + const testcase_ellint_3 + data133[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.20000000000000001, ++ { 0.0000000000000000, 0.40000000000000013, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17432262290723397, 0.39999999999999991, 0.20000000000000001, ++ { 0.17502822886437389, 0.40000000000000013, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34743795258968596, 0.39999999999999991, 0.20000000000000001, ++ { 0.35300530062530805, 0.40000000000000013, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51838919472805112, 0.39999999999999991, 0.20000000000000001, ++ { 0.53675259548210896, 0.40000000000000013, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68663134739057907, 0.39999999999999991, 0.20000000000000001, ++ { 0.72878006428676934, 0.40000000000000013, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.85206432981833979, 0.39999999999999991, 0.20000000000000001, ++ { 0.93100219010583574, 0.40000000000000013, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0149595349004430, 0.39999999999999991, 0.20000000000000001, ++ { 1.1443487271187611, 0.40000000000000013, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1758349405464676, 0.39999999999999991, 0.20000000000000001, ++ { 1.3683427764108813, 0.40000000000000013, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3353337673882637, 0.39999999999999991, 0.20000000000000001, ++ { 1.6008221459300933, 0.40000000000000013, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001, ++ { 1.8380358826317627, 0.40000000000000013, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler133 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.29999999999999999. +-// max(|f - f_GSL|): 1.1102230246251565e-15 +-// max(|f - f_GSL| / |f_GSL|): 7.7406350888907249e-16 ++// Test data for k=0.40000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0271556462838835e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 + const testcase_ellint_3 + data134[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.29999999999999999, ++ { 0.0000000000000000, 0.40000000000000013, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17414781013591540, 0.39999999999999991, 0.29999999999999999, ++ { 0.17520623975982899, 0.40000000000000013, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34609415696777285, 0.39999999999999991, 0.29999999999999999, ++ { 0.35444766141612105, 0.40000000000000013, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51413131295862535, 0.39999999999999991, 0.29999999999999999, ++ { 0.54171455841536009, 0.40000000000000013, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67733527622935630, 0.39999999999999991, 0.29999999999999999, ++ { 0.74080517001084012, 0.40000000000000013, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.83558675182733266, 0.39999999999999991, 0.29999999999999999, ++ { 0.95496950509296574, 0.40000000000000013, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.98940140808865906, 0.39999999999999991, 0.29999999999999999, ++ { 1.1862627879844718, 0.40000000000000013, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1396968797728058, 0.39999999999999991, 0.29999999999999999, ++ { 1.4346501803799458, 0.40000000000000013, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2875920037865090, 0.39999999999999991, 0.29999999999999999, ++ { 1.6971744798077699, 0.40000000000000013, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999, ++ { 1.9677924132520139, 0.40000000000000013, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler134 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4314214811441816e-16 ++// Test data for k=0.40000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3436329231972794e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 2.9507053793392374e-31 ++// stddev(f - f_Boost): 5.4320395611033958e-16 + const testcase_ellint_3 + data135[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.40000000000000002, ++ { 0.0000000000000000, 0.40000000000000013, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17397362471112707, 0.39999999999999991, 0.40000000000000002, ++ { 0.17538490283034375, 0.40000000000000013, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34476864603333196, 0.39999999999999991, 0.40000000000000002, ++ { 0.35591129064319948, 0.40000000000000013, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50999329415379346, 0.39999999999999991, 0.40000000000000002, ++ { 0.54684250413264535, 0.40000000000000013, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66845674551396006, 0.39999999999999991, 0.40000000000000002, ++ { 0.75355027742668290, 0.40000000000000013, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82012848346231748, 0.39999999999999991, 0.40000000000000002, ++ { 0.98117935026780634, 0.40000000000000013, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.96582449258349057, 0.39999999999999991, 0.40000000000000002, ++ { 1.2337464222030736, 0.40000000000000013, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1068473749476286, 0.39999999999999991, 0.40000000000000002, ++ { 1.5125183419289221, 0.40000000000000013, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2447132729159989, 0.39999999999999991, 0.40000000000000002, ++ { 1.8140224451130313, 0.40000000000000013, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002, ++ { 2.1289968719280026, 0.40000000000000013, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler135 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.6621057007519435e-16 ++// Test data for k=0.40000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.7013794022122431e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 + const testcase_ellint_3 + data136[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.50000000000000000, ++ { 0.0000000000000000, 0.40000000000000013, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17380006262854136, 0.39999999999999991, 0.50000000000000000, ++ { 0.17556422235224273, 0.40000000000000013, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34346098216756610, 0.39999999999999991, 0.50000000000000000, ++ { 0.35739675341763921, 0.40000000000000013, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50596929935059420, 0.39999999999999991, 0.50000000000000000, ++ { 0.55214655195037188, 0.40000000000000013, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65996392089131251, 0.39999999999999991, 0.50000000000000000, ++ { 0.76709520942047438, 0.40000000000000013, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.80558463511364786, 0.39999999999999991, 0.50000000000000000, ++ { 1.0100278761577499, 0.40000000000000013, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.94397834522857704, 0.39999999999999991, 0.50000000000000000, ++ { 1.2882265661384342, 0.40000000000000013, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0768075114108115, 0.39999999999999991, 0.50000000000000000, ++ { 1.6059059780051876, 0.40000000000000013, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2059184624251333, 0.39999999999999991, 0.50000000000000000, ++ { 1.9600182740224081, 0.40000000000000013, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler136 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.59999999999999998. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.8853630717730749e-16 ++// Test data for k=0.40000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.4792115132836117e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 4.8893797490374802e-31 ++// stddev(f - f_Boost): 6.9924099915819294e-16 + const testcase_ellint_3 + data137[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.59999999999999998, ++ { 0.0000000000000000, 0.40000000000000013, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17362711992081245, 0.39999999999999991, 0.59999999999999998, ++ { 0.17574420264267029, 0.40000000000000013, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34217074276403953, 0.39999999999999991, 0.59999999999999998, ++ { 0.35890463689046265, 0.40000000000000013, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50205389185761606, 0.39999999999999991, 0.59999999999999998, ++ { 0.55763773975194486, 0.40000000000000013, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65182834920372734, 0.39999999999999991, 0.59999999999999998, ++ { 0.78153324227761267, 0.40000000000000013, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79186512820565136, 0.39999999999999991, 0.59999999999999998, ++ { 1.0420205885765887, 0.40000000000000013, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.92365535916287134, 0.39999999999999991, 0.59999999999999998, ++ { 1.3517205230381770, 0.40000000000000013, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0491915663957907, 0.39999999999999991, 0.59999999999999998, ++ { 1.7210360970313896, 0.40000000000000013, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1705934291745106, 0.39999999999999991, 0.59999999999999998, ++ { 2.1500780510169246, 0.40000000000000013, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998, ++ { 2.6186940209850191, 0.40000000000000013, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler137 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.69999999999999996. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.1018730557776469e-16 ++// Test data for k=0.40000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8573292020719759e-16 ++// mean(f - f_Boost): 2.2759572004815707e-16 ++// variance(f - f_Boost): 2.9613098824898137e-31 ++// stddev(f - f_Boost): 5.4417918762938862e-16 + const testcase_ellint_3 + data138[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.69999999999999996, ++ { 0.0000000000000000, 0.40000000000000013, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17345479265712868, 0.39999999999999991, 0.69999999999999996, ++ { 0.17592484806010436, 0.40000000000000013, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34089751955950354, 0.39999999999999991, 0.69999999999999996, ++ { 0.36043555139631439, 0.40000000000000013, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49824200167361332, 0.39999999999999991, 0.69999999999999996, ++ { 0.56332813669944881, 0.40000000000000013, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64402450341199402, 0.39999999999999991, 0.69999999999999996, ++ { 0.79697424562157548, 0.40000000000000013, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77889207804122873, 0.39999999999999991, 0.69999999999999996, ++ { 1.0778155987523672, 0.40000000000000013, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.90468169720957992, 0.39999999999999991, 0.69999999999999996, ++ { 1.4272018169896268, 0.40000000000000013, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0236847823692916, 0.39999999999999991, 0.69999999999999996, ++ { 1.8684377907453382, 0.40000000000000013, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1382465247425166, 0.39999999999999991, 0.69999999999999996, ++ { 2.4128677409207473, 0.40000000000000013, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler138 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.80000000000000004. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.3122171115555478e-16 ++// Test data for k=0.40000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.5273712585384737e-16 ++// mean(f - f_Boost): 4.5241588253475131e-16 ++// variance(f - f_Boost): 1.1866477068555882e-30 ++// stddev(f - f_Boost): 1.0893336067778265e-15 + const testcase_ellint_3 + data139[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.80000000000000004, ++ { 0.0000000000000000, 0.40000000000000013, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17328307694277154, 0.39999999999999991, 0.80000000000000004, ++ { 0.17610616300487833, 0.40000000000000013, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33964091800132007, 0.39999999999999991, 0.80000000000000004, ++ { 0.36199013167171978, 0.40000000000000013, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49452889372467440, 0.39999999999999991, 0.80000000000000004, ++ { 0.56923097361842434, 0.40000000000000013, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63652940095937316, 0.39999999999999991, 0.80000000000000004, ++ { 0.81354878456624347, 0.40000000000000013, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76659772511159097, 0.39999999999999991, 0.80000000000000004, ++ { 1.1182902719261825, 0.40000000000000013, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.88691047977338111, 0.39999999999999991, 0.80000000000000004, ++ { 1.5192950589409022, 0.40000000000000013, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0000273200611638, 0.39999999999999991, 0.80000000000000004, ++ { 2.0678761710223981, 0.40000000000000013, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1084787902188009, 0.39999999999999991, 0.80000000000000004, ++ { 2.8135222249879788, 0.40000000000000013, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004, ++ { 3.7289548002199902, 0.40000000000000013, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler139 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.5168974431077345e-16 ++// Test data for k=0.40000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 6.2172489379008766e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.1718379478872251e-15 ++// mean(f - f_Boost): 8.4099394115355610e-16 ++// variance(f - f_Boost): 3.5684096037099424e-30 ++// stddev(f - f_Boost): 1.8890234523980751e-15 + const testcase_ellint_3 + data140[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.90000000000000002, ++ { 0.0000000000000000, 0.40000000000000013, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17311196891868127, 0.39999999999999991, 0.90000000000000002, ++ { 0.17628815191971123, 0.40000000000000013, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33840055664911906, 0.39999999999999991, 0.90000000000000002, ++ { 0.36356903815378772, 0.40000000000000013, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49091013944075329, 0.39999999999999991, 0.90000000000000002, ++ { 0.57536079447000310, 0.40000000000000013, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62932228186809580, 0.39999999999999991, 0.90000000000000002, ++ { 0.83141355850172571, 0.40000000000000013, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.75492278323019801, 0.39999999999999991, 0.90000000000000002, ++ { 1.1646481598721361, 0.40000000000000013, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.87021659043854294, 0.39999999999999991, 0.90000000000000002, ++ { 1.6357275034001995, 0.40000000000000013, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.97800245228239246, 0.39999999999999991, 0.90000000000000002, ++ { 2.3628787566572402, 0.40000000000000013, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0809625773173697, 0.39999999999999991, 0.90000000000000002, ++ { 3.5521010369134962, 0.40000000000000013, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002, ++ { 5.3055535102872513, 0.40000000000000013, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler140 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1201497220602069e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 + const testcase_ellint_3 + data141[10] = + { +@@ -4108,289 +4530,319 @@ + 0.0000000000000000 }, + { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35081868470101585, 0.50000000000000000, 0.0000000000000000, ++ { 0.35081868470101579, 0.50000000000000000, 0.0000000000000000, + 0.34906585039886590 }, + { 0.52942862705190574, 0.50000000000000000, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.71164727562630314, 0.50000000000000000, 0.0000000000000000, ++ { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, + 0.69813170079773179 }, + { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0895506700518851, 0.50000000000000000, 0.0000000000000000, ++ { 1.0895506700518853, 0.50000000000000000, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2853005857432931, 0.50000000000000000, 0.0000000000000000, ++ { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4845545520549484, 0.50000000000000000, 0.0000000000000000, ++ { 1.4845545520549488, 0.50000000000000000, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler141 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.10000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1662857256911530e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 + const testcase_ellint_3 + data142[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17457763120814676, 0.50000000000000000, 0.10000000000000001, ++ { 0.17493071928248824, 0.50000000000000000, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34943246340849154, 0.50000000000000000, 0.10000000000000001, ++ { 0.35222467688034798, 0.50000000000000000, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52487937869610790, 0.50000000000000000, 0.10000000000000001, ++ { 0.53411928652008112, 0.50000000000000000, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70127785096388384, 0.50000000000000000, 0.10000000000000001, ++ { 0.72256398117177589, 0.50000000000000000, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.87898815988624479, 0.50000000000000000, 0.10000000000000001, ++ { 0.91899583232771009, 0.50000000000000000, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0582764576094172, 0.50000000000000000, 0.10000000000000001, ++ { 1.1240549163055360, 0.50000000000000000, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2391936844060205, 0.50000000000000000, 0.10000000000000001, ++ { 1.3372938086286021, 0.50000000000000000, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4214793542995841, 0.50000000000000000, 0.10000000000000001, ++ { 1.5570024469132429, 0.50000000000000000, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001, ++ { 1.7803034946545480, 0.50000000000000000, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler142 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2114786773102175e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 + const testcase_ellint_3 + data143[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17440204336345433, 0.50000000000000000, 0.20000000000000001, ++ { 0.17510822779582402, 0.50000000000000000, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34806552388338824, 0.50000000000000000, 0.20000000000000001, ++ { 0.35365094725531487, 0.50000000000000000, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52046416757129810, 0.50000000000000000, 0.20000000000000001, ++ { 0.53895933237328697, 0.50000000000000000, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69140924550993865, 0.50000000000000000, 0.20000000000000001, ++ { 0.73408090840070794, 0.50000000000000000, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.86104678636125520, 0.50000000000000000, 0.20000000000000001, ++ { 0.94145442818535396, 0.50000000000000000, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0297439459053981, 0.50000000000000000, 0.20000000000000001, ++ { 1.1624120186296487, 0.50000000000000000, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1979214112912033, 0.50000000000000000, 0.20000000000000001, ++ { 1.3965823372867114, 0.50000000000000000, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3659033858648930, 0.50000000000000000, 0.20000000000000001, ++ { 1.6414308440430099, 0.50000000000000000, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001, ++ { 1.8922947612264018, 0.50000000000000000, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler143 = 2.5000000000000020e-13; + +-// Test data for k=0.50000000000000000, nu=0.29999999999999999. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2557837230041312e-16 ++// Test data for k=0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 + const testcase_ellint_3 + data144[10] = + { +- { 0.0000000000000000, 0.50000000000000000, 0.29999999999999999, ++ { 0.0000000000000000, 0.50000000000000000, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17422708752228896, 0.50000000000000000, 0.29999999999999999, ++ { 0.17528638488102041, 0.50000000000000000, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34671739434855858, 0.50000000000000000, 0.29999999999999999, ++ { 0.35509802222332720, 0.50000000000000000, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51617616305641878, 0.50000000000000000, 0.29999999999999999, ++ { 0.54395740731866193, 0.50000000000000000, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68200047612545167, 0.50000000000000000, 0.29999999999999999, ++ { 0.74625871438752667, 0.50000000000000000, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.84427217869498372, 0.50000000000000000, 0.29999999999999999, ++ { 0.96588271186092023, 0.50000000000000000, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0035637821389782, 0.50000000000000000, 0.29999999999999999, ++ { 1.2054319584357329, 0.50000000000000000, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1606800483933111, 0.50000000000000000, 0.29999999999999999, ++ { 1.4651077994832871, 0.50000000000000000, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3164407134643459, 0.50000000000000000, 0.29999999999999999, ++ { 1.7416018368052644, 0.50000000000000000, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler144 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.40000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2992508582900068e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 + const testcase_ellint_3 + data145[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17405275963859917, 0.50000000000000000, 0.40000000000000002, ++ { 0.17546519477859268, 0.50000000000000000, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34538761957029329, 0.50000000000000000, 0.40000000000000002, ++ { 0.35656644822531680, 0.50000000000000000, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51200902646603907, 0.50000000000000000, 0.40000000000000002, ++ { 0.54912289677411319, 0.50000000000000000, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67301522212868792, 0.50000000000000000, 0.40000000000000002, ++ { 0.75916731611690047, 0.50000000000000000, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82853844466313320, 0.50000000000000000, 0.40000000000000002, ++ { 0.99260415631328214, 0.50000000000000000, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.97942097862681488, 0.50000000000000000, 0.40000000000000002, ++ { 1.2541925856918670, 0.50000000000000000, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1268429801220614, 0.50000000000000000, 0.40000000000000002, ++ { 1.5456393705347609, 0.50000000000000000, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2720406704533922, 0.50000000000000000, 0.40000000000000002, ++ { 1.8631904972952076, 0.50000000000000000, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler145 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3419255755184137e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 + const testcase_ellint_3 + data146[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17387905570381157, 0.50000000000000000, 0.50000000000000000, ++ { 0.17564466176941509, 0.50000000000000000, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34407576010465207, 0.50000000000000000, 0.50000000000000000, ++ { 0.35805679276065394, 0.50000000000000000, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50795686560160824, 0.50000000000000000, 0.50000000000000000, ++ { 0.55446601496200032, 0.50000000000000000, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.66442115453330164, 0.50000000000000000, 0.50000000000000000, ++ { 0.77288783578259013, 0.50000000000000000, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.81373829119355345, 0.50000000000000000, 0.50000000000000000, ++ { 1.0220246013918972, 0.50000000000000000, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.95705743313235825, 0.50000000000000000, 0.50000000000000000, ++ { 1.3101681612463965, 0.50000000000000000, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0959131991362554, 0.50000000000000000, 0.50000000000000000, ++ { 1.6422994881851025, 0.50000000000000000, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2318900529754597, 0.50000000000000000, 0.50000000000000000, ++ { 2.0152636030998816, 0.50000000000000000, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler146 = 2.5000000000000020e-13; + +-// Test data for k=0.50000000000000000, nu=0.59999999999999998. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3838494104749599e-16 ++// Test data for k=0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 + const testcase_ellint_3 + data147[10] = + { +- { 0.0000000000000000, 0.50000000000000000, 0.59999999999999998, ++ { 0.0000000000000000, 0.50000000000000000, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17370597174637581, 0.50000000000000000, 0.59999999999999998, ++ { 0.17582479017522740, 0.50000000000000000, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34278139158591414, 0.50000000000000000, 0.59999999999999998, ++ { 0.35956964546660036, 0.50000000000000000, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50401419439302708, 0.50000000000000000, 0.59999999999999998, ++ { 0.55999790372984193, 0.50000000000000000, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65618938076167210, 0.50000000000000000, 0.59999999999999998, ++ { 0.78751507911209895, 0.50000000000000000, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79977959248855424, 0.50000000000000000, 0.59999999999999998, ++ { 1.0546620505035220, 0.50000000000000000, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.93625925190753545, 0.50000000000000000, 0.59999999999999998, ++ { 1.3754438357425935, 0.50000000000000000, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0674905658379708, 0.50000000000000000, 0.59999999999999998, ++ { 1.7615727400820127, 0.50000000000000000, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1953481298023050, 0.50000000000000000, 0.59999999999999998, ++ { 2.2134638067565242, 0.50000000000000000, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler147 = 2.5000000000000020e-13; + +-// Test data for k=0.50000000000000000, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4250604066951477e-16 ++// Test data for k=0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 + const testcase_ellint_3 + data148[10] = + { +- { 0.0000000000000000, 0.50000000000000000, 0.69999999999999996, ++ { 0.0000000000000000, 0.50000000000000000, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17353350383131641, 0.50000000000000000, 0.69999999999999996, ++ { 0.17600558435914915, 0.50000000000000000, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34150410405436771, 0.50000000000000000, 0.69999999999999996, ++ { 0.36110561926726259, 0.50000000000000000, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50017589696443487, 0.50000000000000000, 0.69999999999999996, ++ { 0.56573074641137111, 0.50000000000000000, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64829398188419951, 0.50000000000000000, 0.69999999999999996, ++ { 0.80316073084237205, 0.50000000000000000, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.78658270782402073, 0.50000000000000000, 0.69999999999999996, ++ { 1.0911910688131461, 0.50000000000000000, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.91684738336675053, 0.50000000000000000, 0.69999999999999996, ++ { 1.4530946406380640, 0.50000000000000000, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0412486789555935, 0.50000000000000000, 0.69999999999999996, ++ { 1.9144386536785372, 0.50000000000000000, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1619021847612001, 0.50000000000000000, 0.69999999999999996, ++ { 2.4878788958234970, 0.50000000000000000, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996, ++ { 3.1433945297859225, 0.50000000000000000, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler148 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5715240651179632e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 + const testcase_ellint_3 + data149[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17336164805979126, 0.50000000000000000, 0.80000000000000004, ++ { 0.17618704872620228, 0.50000000000000000, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34024350132086773, 0.50000000000000000, 0.80000000000000004, ++ { 0.36266535159745827, 0.50000000000000000, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49643719555734073, 0.50000000000000000, 0.80000000000000004, ++ { 0.57167789954529158, 0.50000000000000000, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64071162456976150, 0.50000000000000000, 0.80000000000000004, ++ { 0.81995752984315018, 0.50000000000000000, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.77407836177211908, 0.50000000000000000, 0.80000000000000004, ++ { 1.1325112162158122, 0.50000000000000000, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.89867058251905652, 0.50000000000000000, 0.80000000000000004, ++ { 1.5479055930718042, 0.50000000000000000, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0169181822134910, 0.50000000000000000, 0.80000000000000004, ++ { 2.1215243941010486, 0.50000000000000000, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1311363312779448, 0.50000000000000000, 0.80000000000000004, ++ { 2.9069405767650132, 0.50000000000000000, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004, ++ { 3.8750701888108066, 0.50000000000000000, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler149 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4664649039489274e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 + const testcase_ellint_3 + data150[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17319040056865681, 0.50000000000000000, 0.90000000000000002, ++ { 0.17636918772384180, 0.50000000000000000, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33899920036578557, 0.50000000000000000, 0.90000000000000002, ++ { 0.36424950570740700, 0.50000000000000000, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49279362182695174, 0.50000000000000000, 0.90000000000000002, ++ { 0.57785404590231426, 0.50000000000000000, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63342123379746151, 0.50000000000000000, 0.90000000000000002, ++ { 0.83806480521716531, 0.50000000000000000, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.76220595179550321, 0.50000000000000000, 0.90000000000000002, ++ { 1.1798568683069752, 0.50000000000000000, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.88160004743532294, 0.50000000000000000, 0.90000000000000002, ++ { 1.6678766243739607, 0.50000000000000000, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.99427448642310123, 0.50000000000000000, 0.90000000000000002, ++ { 2.4282976450693483, 0.50000000000000000, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1027091512470095, 0.50000000000000000, 0.90000000000000002, ++ { 3.6810787666126656, 0.50000000000000000, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002, ++ { 5.5355132096026454, 0.50000000000000000, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler150 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3664899092028927e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 + const testcase_ellint_3 + data151[10] = + { +@@ -4398,19 +4850,19 @@ + 0.0000000000000000 }, + { 0.17485154362988359, 0.60000000000000009, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35160509865544326, 0.60000000000000009, 0.0000000000000000, ++ { 0.35160509865544320, 0.60000000000000009, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53210652578446138, 0.60000000000000009, 0.0000000000000000, + 0.52359877559829882 }, + { 0.71805304664485659, 0.60000000000000009, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.91082759030195970, 0.60000000000000009, 0.0000000000000000, ++ { 0.91082759030195981, 0.60000000000000009, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1112333229323361, 0.60000000000000009, 0.0000000000000000, + 1.0471975511965976 }, + { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.5332022105084775, 0.60000000000000009, 0.0000000000000000, ++ { 1.5332022105084779, 0.60000000000000009, 0.0000000000000000, + 1.3962634015954636 }, + { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, + 1.5707963267948966 }, +@@ -4418,559 +4870,619 @@ + const double toler151 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4937942733669112e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 + const testcase_ellint_3 + data152[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17467514275022011, 0.60000000000000009, 0.10000000000000001, ++ { 0.17502858548476194, 0.60000000000000009, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35021333086258255, 0.60000000000000009, 0.10000000000000001, ++ { 0.35301673150537388, 0.60000000000000009, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52751664092962691, 0.60000000000000009, 0.10000000000000001, ++ { 0.53683932476326812, 0.60000000000000009, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70752126971957874, 0.60000000000000009, 0.10000000000000001, ++ { 0.72914228589586771, 0.60000000000000009, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.89111058756112871, 0.60000000000000009, 0.10000000000000001, ++ { 0.93208036718354692, 0.60000000000000009, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0789241202877768, 0.60000000000000009, 0.10000000000000001, ++ { 1.1468984688863377, 0.60000000000000009, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2710800210399946, 0.60000000000000009, 0.10000000000000001, ++ { 1.3733904977062528, 0.60000000000000009, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4669060574440276, 0.60000000000000009, 0.10000000000000001, ++ { 1.6094225663372157, 0.60000000000000009, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001, ++ { 1.8508766487100685, 0.60000000000000009, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler152 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.20000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.4980018054066023e-17 ++// variance(f - f_Boost): 2.1685495635542404e-32 ++// stddev(f - f_Boost): 1.4725995937641163e-16 + const testcase_ellint_3 + data153[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17449937871800650, 0.60000000000000009, 0.20000000000000001, ++ { 0.17520627248155893, 0.60000000000000009, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34884093647346553, 0.60000000000000009, 0.20000000000000001, ++ { 0.35444873935437748, 0.60000000000000009, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52306221119844087, 0.60000000000000009, 0.20000000000000001, ++ { 0.54172310557682524, 0.60000000000000009, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69749955678982223, 0.60000000000000009, 0.20000000000000001, ++ { 0.74084300280734672, 0.60000000000000009, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.87274610682416853, 0.60000000000000009, 0.20000000000000001, ++ { 0.95509001527006121, 0.60000000000000009, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0494620540750792, 0.60000000000000009, 0.20000000000000001, ++ { 1.1865688084431796, 0.60000000000000009, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2280847305507339, 0.60000000000000009, 0.20000000000000001, ++ { 1.4352978868932600, 0.60000000000000009, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4085436279696888, 0.60000000000000009, 0.20000000000000001, ++ { 1.6983400371331818, 0.60000000000000009, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler153 = 2.5000000000000020e-13; + +-// Test data for k=0.60000000000000009, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7339932380431439e-16 ++// Test data for k=0.60000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 + const testcase_ellint_3 + data154[10] = + { +- { 0.0000000000000000, 0.60000000000000009, 0.29999999999999999, ++ { 0.0000000000000000, 0.60000000000000009, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17432424744393932, 0.60000000000000009, 0.29999999999999999, ++ { 0.17538460882640122, 0.60000000000000009, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34748744127146447, 0.60000000000000009, 0.29999999999999999, ++ { 0.35590165133735557, 0.60000000000000009, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51873632743924825, 0.60000000000000009, 0.29999999999999999, ++ { 0.54676661152254535, 0.60000000000000009, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68794610396313116, 0.60000000000000009, 0.29999999999999999, ++ { 0.75321709418305305, 0.60000000000000009, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.85558070175468726, 0.60000000000000009, 0.29999999999999999, ++ { 0.98012637808992920, 0.60000000000000009, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0224416343605653, 0.60000000000000009, 0.29999999999999999, ++ { 1.2310891277158875, 0.60000000000000009, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1893144457936788, 0.60000000000000009, 0.29999999999999999, ++ { 1.5069157924585623, 0.60000000000000009, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3566435377982575, 0.60000000000000009, 0.29999999999999999, ++ { 1.8039583598337940, 0.60000000000000009, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler154 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.40000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.5440898085101625e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.8974839914337670e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 + const testcase_ellint_3 + data155[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17414974487670717, 0.60000000000000009, 0.40000000000000002, ++ { 0.17556359876533037, 0.60000000000000009, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34615238767335027, 0.60000000000000009, 0.40000000000000002, ++ { 0.35737601674244679, 0.60000000000000009, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51453257838108557, 0.60000000000000009, 0.40000000000000002, ++ { 0.55197933771320218, 0.60000000000000009, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67882386787534399, 0.60000000000000009, 0.40000000000000002, ++ { 0.76633591620002905, 0.60000000000000009, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.83948470233173578, 0.60000000000000009, 0.40000000000000002, ++ { 1.0075231136019616, 0.60000000000000009, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.99753496200073977, 0.60000000000000009, 0.40000000000000002, ++ { 1.2815842073813450, 0.60000000000000009, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1541101404388487, 0.60000000000000009, 0.40000000000000002, ++ { 1.5911666941449827, 0.60000000000000009, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3100911323398816, 0.60000000000000009, 0.40000000000000002, ++ { 1.9323227566025762, 0.60000000000000009, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler155 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.50000000000000000. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.7124937590522226e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1397785842303966e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.5339913122479866e-32 ++// stddev(f - f_Boost): 1.2385440291923362e-16 + const testcase_ellint_3 + data156[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17397586700252807, 0.60000000000000009, 0.50000000000000000, ++ { 0.17574324658480217, 0.60000000000000009, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34483533397138516, 0.60000000000000009, 0.50000000000000000, ++ { 0.35887240603169313, 0.60000000000000009, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51044500461706477, 0.60000000000000009, 0.50000000000000000, ++ { 0.55737161826345261, 0.60000000000000009, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67009988034712664, 0.60000000000000009, 0.50000000000000000, ++ { 0.78028227313077458, 0.60000000000000009, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.82434762375735193, 0.60000000000000009, 0.50000000000000000, ++ { 1.0376989776486290, 0.60000000000000009, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.97447346702798998, 0.60000000000000009, 0.50000000000000000, ++ { 1.3395933991042928, 0.60000000000000009, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1219494000522143, 0.60000000000000009, 0.50000000000000000, ++ { 1.6924049626591784, 0.60000000000000009, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2680242605954486, 0.60000000000000009, 0.50000000000000000, ++ { 2.0931011856518920, 0.60000000000000009, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler156 = 2.5000000000000020e-13; + +-// Test data for k=0.60000000000000009, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0652177678695900e-16 ++// Test data for k=0.60000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 + const testcase_ellint_3 + data157[10] = + { +- { 0.0000000000000000, 0.60000000000000009, 0.59999999999999998, ++ { 0.0000000000000000, 0.60000000000000009, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17380260984469353, 0.60000000000000009, 0.59999999999999998, ++ { 0.17592355661219386, 0.60000000000000009, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34353585361777839, 0.60000000000000009, 0.59999999999999998, ++ { 0.36039141192661606, 0.60000000000000009, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50646805774321380, 0.60000000000000009, 0.59999999999999998, ++ { 0.56295472636903854, 0.60000000000000009, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66174468108625506, 0.60000000000000009, 0.59999999999999998, ++ { 0.79515295130165986, 0.60000000000000009, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.81007462280278408, 0.60000000000000009, 0.59999999999999998, ++ { 1.0711886441942242, 0.60000000000000009, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.95303466945718729, 0.60000000000000009, 0.59999999999999998, ++ { 1.4072952835139891, 0.60000000000000009, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0924118588677505, 0.60000000000000009, 0.59999999999999998, ++ { 1.8174863977376825, 0.60000000000000009, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2297640574847937, 0.60000000000000009, 0.59999999999999998, ++ { 2.3029921578542232, 0.60000000000000009, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998, ++ { 2.8388723099514972, 0.60000000000000009, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler157 = 2.5000000000000020e-13; + +-// Test data for k=0.60000000000000009, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1692457486457856e-16 ++// Test data for k=0.60000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.0027679235921772e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 + const testcase_ellint_3 + data158[10] = + { +- { 0.0000000000000000, 0.60000000000000009, 0.69999999999999996, ++ { 0.0000000000000000, 0.60000000000000009, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17362996946312007, 0.60000000000000009, 0.69999999999999996, ++ { 0.17610453321631936, 0.60000000000000009, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34225353454870588, 0.60000000000000009, 0.69999999999999996, ++ { 0.36193365056369764, 0.60000000000000009, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50259656397799524, 0.60000000000000009, 0.69999999999999996, ++ { 0.56874098962268527, 0.60000000000000009, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.65373184496628933, 0.60000000000000009, 0.69999999999999996, ++ { 0.81106198671477181, 0.60000000000000009, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.79658372884056439, 0.60000000000000009, 0.69999999999999996, ++ { 1.1086886419010082, 0.60000000000000009, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.93303240100245421, 0.60000000000000009, 0.69999999999999996, ++ { 1.4879048567239257, 0.60000000000000009, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0651547944716557, 0.60000000000000009, 0.69999999999999996, ++ { 1.9780310073615925, 0.60000000000000009, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1947676204853441, 0.60000000000000009, 0.69999999999999996, ++ { 2.5941545586772712, 0.60000000000000009, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3232737468822813, 0.60000000000000009, 0.69999999999999996, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler158 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2705175719241326e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 7.3044933435043190e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 + const testcase_ellint_3 + data159[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17345794195390685, 0.60000000000000009, 0.80000000000000004, ++ { 0.17628618080795252, 0.60000000000000009, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34098797854531027, 0.60000000000000009, 0.80000000000000004, ++ { 0.36349976272521012, 0.60000000000000009, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49882569168826213, 0.60000000000000009, 0.80000000000000004, ++ { 0.57474392342151914, 0.60000000000000009, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64603758566475511, 0.60000000000000009, 0.80000000000000004, ++ { 0.82814493499158170, 0.60000000000000009, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.78380365594769730, 0.60000000000000009, 0.80000000000000004, ++ { 1.1511281795998280, 0.60000000000000009, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.91430946255611190, 0.60000000000000009, 0.80000000000000004, ++ { 1.5864286332503075, 0.60000000000000009, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0398955217270607, 0.60000000000000009, 0.80000000000000004, ++ { 2.1958944866494527, 0.60000000000000009, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1625948314277679, 0.60000000000000009, 0.80000000000000004, ++ { 3.0398358172574604, 0.60000000000000009, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler159 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5585887739668036e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.5952142720718732e-16 ++// mean(f - f_Boost): 4.6351811278100284e-16 ++// variance(f - f_Boost): 2.1278339779151204e-31 ++// stddev(f - f_Boost): 4.6128450851021651e-16 + const testcase_ellint_3 + data160[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17328652344890030, 0.60000000000000009, 0.90000000000000002, ++ { 0.17646850384035848, 0.60000000000000009, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33973880062929018, 0.60000000000000009, 0.90000000000000002, ++ { 0.36509041515134105, 0.60000000000000009, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49515092233122743, 0.60000000000000009, 0.90000000000000002, ++ { 0.58097838596260631, 0.60000000000000009, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63864042139737043, 0.60000000000000009, 0.90000000000000002, ++ { 0.84656453396163722, 0.60000000000000009, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.77167205646538850, 0.60000000000000009, 0.90000000000000002, ++ { 1.1997828426963724, 0.60000000000000009, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.89673202848034383, 0.60000000000000009, 0.90000000000000002, ++ { 1.7112436789225605, 0.60000000000000009, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0163984492661304, 0.60000000000000009, 0.90000000000000002, ++ { 2.5193168553672312, 0.60000000000000009, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1328845785162431, 0.60000000000000009, 0.90000000000000002, ++ { 3.8656670488606690, 0.60000000000000009, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2479362973851873, 0.60000000000000009, 0.90000000000000002, ++ { 5.8709993116265604, 0.60000000000000009, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler160 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5930208052157665e-16 ++// Test data for k=0.70000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1569224977685422e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 1.6571557210371951e-32 ++// stddev(f - f_Boost): 1.2873056051447903e-16 + const testcase_ellint_3 + data161[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.0000000000000000, ++ { 0.0000000000000000, 0.70000000000000018, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17496737466916723, 0.69999999999999996, 0.0000000000000000, ++ { 0.17496737466916723, 0.70000000000000018, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35254687535677925, 0.69999999999999996, 0.0000000000000000, ++ { 0.35254687535677931, 0.70000000000000018, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.53536740275997119, 0.69999999999999996, 0.0000000000000000, ++ { 0.53536740275997130, 0.70000000000000018, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.72603797651684454, 0.69999999999999996, 0.0000000000000000, ++ { 0.72603797651684454, 0.70000000000000018, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.92698296348313458, 0.69999999999999996, 0.0000000000000000, ++ { 0.92698296348313447, 0.70000000000000018, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.1400447527693316, 0.69999999999999996, 0.0000000000000000, ++ { 1.1400447527693318, 0.70000000000000018, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.3657668117194073, 0.69999999999999996, 0.0000000000000000, ++ { 1.3657668117194073, 0.70000000000000018, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.6024686895959159, 0.69999999999999996, 0.0000000000000000, ++ { 1.6024686895959164, 0.70000000000000018, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000, ++ { 1.8456939983747236, 0.70000000000000018, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler161 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6735282577377367e-16 ++// Test data for k=0.70000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9552278747527691e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 1.3695501826753678e-32 ++// stddev(f - f_Boost): 1.1702778228589004e-16 + const testcase_ellint_3 + data162[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.10000000000000001, ++ { 0.0000000000000000, 0.70000000000000018, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17479076384884684, 0.69999999999999996, 0.10000000000000001, ++ { 0.17514462737300920, 0.70000000000000018, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35114844900396364, 0.69999999999999996, 0.10000000000000001, ++ { 0.35396527997470451, 0.70000000000000018, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53072776947527001, 0.69999999999999996, 0.10000000000000001, ++ { 0.54015179589433981, 0.70000000000000018, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.71530198262386235, 0.69999999999999996, 0.10000000000000001, ++ { 0.73734430854477728, 0.70000000000000018, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.90666760677828306, 0.69999999999999996, 0.10000000000000001, ++ { 0.94888950796697047, 0.70000000000000018, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1063366517438080, 0.69999999999999996, 0.10000000000000001, ++ { 1.1772807959736322, 0.70000000000000018, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3149477243092149, 0.69999999999999996, 0.10000000000000001, ++ { 1.4231796401075834, 0.70000000000000018, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.5314886725038925, 0.69999999999999996, 0.10000000000000001, ++ { 1.6841856799887471, 0.70000000000000018, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001, ++ { 1.9541347343119564, 0.70000000000000018, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler162 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7517969287516802e-16 ++// Test data for k=0.70000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.7430437016285820e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data163[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.20000000000000001, ++ { 0.0000000000000000, 0.70000000000000018, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17461479077791475, 0.69999999999999996, 0.20000000000000001, ++ { 0.17532252613350796, 0.70000000000000018, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34976950621407538, 0.69999999999999996, 0.20000000000000001, ++ { 0.35540417596807522, 0.70000000000000018, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52622533231350177, 0.69999999999999996, 0.20000000000000001, ++ { 0.54508913033361928, 0.70000000000000018, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.70508774017895215, 0.69999999999999996, 0.20000000000000001, ++ { 0.74927635777718415, 0.70000000000000018, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.88775302531730294, 0.69999999999999996, 0.20000000000000001, ++ { 0.97261706337936338, 0.70000000000000018, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0756195476149006, 0.69999999999999996, 0.20000000000000001, ++ { 1.2187303976209327, 0.70000000000000018, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2695349716654374, 0.69999999999999996, 0.20000000000000001, ++ { 1.4887796709222487, 0.70000000000000018, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4690814617070540, 0.69999999999999996, 0.20000000000000001, ++ { 1.7796581281839214, 0.70000000000000018, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.6721098780092145, 0.69999999999999996, 0.20000000000000001, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler163 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8280039841080712e-16 ++// Test data for k=0.70000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.2570807706941696e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 1.5582437633995295e-32 ++// stddev(f - f_Boost): 1.2482963443828271e-16 + const testcase_ellint_3 + data164[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, 0.70000000000000018, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17443945136076175, 0.69999999999999996, 0.29999999999999999, ++ { 0.17550107516328570, 0.70000000000000018, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34840956983535287, 0.69999999999999996, 0.29999999999999999, ++ { 0.35686409576571965, 0.70000000000000018, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52185308551329168, 0.69999999999999996, 0.29999999999999999, ++ { 0.55018827316513352, 0.70000000000000018, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.69535240431168255, 0.69999999999999996, 0.29999999999999999, ++ { 0.76189759494390275, 0.70000000000000018, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.87007983473964923, 0.69999999999999996, 0.29999999999999999, ++ { 0.99844623430885626, 0.70000000000000018, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0474657975577066, 0.69999999999999996, 0.29999999999999999, ++ { 1.2652862989039833, 0.70000000000000018, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2286225419931891, 0.69999999999999996, 0.29999999999999999, ++ { 1.5647666808691361, 0.70000000000000018, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4136490671013271, 0.69999999999999996, 0.29999999999999999, ++ { 1.8932499694938165, 0.70000000000000018, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999, ++ { 2.2392290510988535, 0.70000000000000018, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler164 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3472957053482092e-16 ++// Test data for k=0.70000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3719045096496910e-16 ++// mean(f - f_Boost): 1.3600232051658169e-16 ++// variance(f - f_Boost): 1.1718213750516114e-32 ++// stddev(f - f_Boost): 1.0825069861444829e-16 + const testcase_ellint_3 + data165[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.40000000000000002, ++ { 0.0000000000000000, 0.70000000000000018, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17426474153983229, 0.69999999999999996, 0.40000000000000002, ++ { 0.17568027871494424, 0.70000000000000018, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34706817945773732, 0.69999999999999996, 0.40000000000000002, ++ { 0.35834559208180261, 0.70000000000000018, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51760452851738148, 0.69999999999999996, 0.40000000000000002, ++ { 0.55545885451190613, 0.70000000000000018, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.68605801534722755, 0.69999999999999996, 0.40000000000000002, ++ { 0.77528120402568113, 0.70000000000000018, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.85351339387296532, 0.69999999999999996, 0.40000000000000002, ++ { 1.0267241287600322, 0.70000000000000018, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0215297967969539, 0.69999999999999996, 0.40000000000000002, ++ { 1.3181380338980246, 0.70000000000000018, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1915051074460530, 0.69999999999999996, 0.40000000000000002, ++ { 1.6542840785132087, 0.70000000000000018, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3639821911744707, 0.69999999999999996, 0.40000000000000002, ++ { 2.0315595131131823, 0.70000000000000018, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler165 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9748346743390620e-16 ++// Test data for k=0.70000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.0277361210295499e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 6.3799163752809956e-32 ++// stddev(f - f_Boost): 2.5258496343371268e-16 + const testcase_ellint_3 + data166[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.50000000000000000, ++ { 0.0000000000000000, 0.70000000000000018, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17409065729516096, 0.69999999999999996, 0.50000000000000000, ++ { 0.17586014108156545, 0.70000000000000018, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34574489064986091, 0.69999999999999996, 0.50000000000000000, ++ { 0.35984923894341653, 0.70000000000000018, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51347361925579782, 0.69999999999999996, 0.50000000000000000, ++ { 0.56091135606739995, 0.70000000000000018, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67717079489579279, 0.69999999999999996, 0.50000000000000000, ++ { 0.78951212635197054, 0.70000000000000018, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.83793902055292280, 0.69999999999999996, 0.50000000000000000, ++ { 1.0578865732938731, 0.70000000000000018, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.99752863545289705, 0.69999999999999996, 0.50000000000000000, ++ { 1.3789149005151722, 0.70000000000000018, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1576240080401501, 0.69999999999999996, 0.50000000000000000, ++ { 1.7620212286086228, 0.70000000000000018, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3191464023923762, 0.69999999999999996, 0.50000000000000000, ++ { 2.2051554347435589, 0.70000000000000018, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000, ++ { 2.6868019968236996, 0.70000000000000018, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler166 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0457157538295173e-16 ++// Test data for k=0.70000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8597454441867134e-16 ++// mean(f - f_Boost): 2.5535129566378598e-16 ++// variance(f - f_Boost): 2.8561208198482198e-31 ++// stddev(f - f_Boost): 5.3442687243889785e-16 + const testcase_ellint_3 + data167[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, 0.70000000000000018, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17391719464391614, 0.69999999999999996, 0.59999999999999998, ++ { 0.17604066659721918, 0.70000000000000018, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34443927423869031, 0.69999999999999996, 0.59999999999999998, ++ { 0.36137563278353424, 0.70000000000000018, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50945473266486063, 0.69999999999999996, 0.59999999999999998, ++ { 0.56655721272747606, 0.70000000000000018, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66866056326513812, 0.69999999999999996, 0.59999999999999998, ++ { 0.80468966552978305, 0.70000000000000018, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.82325830002337352, 0.69999999999999996, 0.59999999999999998, ++ { 1.0924902943683852, 0.70000000000000018, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.97522808245669368, 0.69999999999999996, 0.59999999999999998, ++ { 1.4499247992499800, 0.70000000000000018, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1265300613705285, 0.69999999999999996, 0.59999999999999998, ++ { 1.8953714382113818, 0.70000000000000018, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2784066076152001, 0.69999999999999996, 0.59999999999999998, ++ { 2.4323229949248670, 0.70000000000000018, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler167 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4867405596732161e-16 ++// Test data for k=0.70000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.2316852368580916e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 + const testcase_ellint_3 + data168[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, 0.70000000000000018, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17374434963995031, 0.69999999999999996, 0.69999999999999996, ++ { 0.17622185963747933, 0.70000000000000018, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34315091562900674, 0.69999999999999996, 0.69999999999999996, ++ { 0.36292539360435261, 0.70000000000000018, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50554262375653347, 0.69999999999999996, 0.69999999999999996, ++ { 0.57240892970150015, 0.70000000000000018, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66050025406305801, 0.69999999999999996, 0.69999999999999996, ++ { 0.82093084713182629, 0.70000000000000018, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.80938620118847404, 0.69999999999999996, 0.69999999999999996, ++ { 1.1312609022179871, 0.70000000000000018, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.95443223855852144, 0.69999999999999996, 0.69999999999999996, ++ { 1.5345768067715795, 0.70000000000000018, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0978573207128304, 0.69999999999999996, 0.69999999999999996, ++ { 2.0668847445934424, 0.70000000000000018, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.2411754575007123, 0.69999999999999996, 0.69999999999999996, ++ { 2.7483444537551245, 0.70000000000000018, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler168 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1829502028913879e-16 ++// Test data for k=0.70000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1198716111867353e-16 ++// mean(f - f_Boost): 2.2482016248659419e-16 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 + const testcase_ellint_3 + data169[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.80000000000000004, ++ { 0.0000000000000000, 0.70000000000000018, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17357211837335740, 0.69999999999999996, 0.80000000000000004, ++ { 0.17640372461994805, 0.70000000000000018, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34187941416012108, 0.69999999999999996, 0.80000000000000004, ++ { 0.36449916621651091, 0.70000000000000018, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50173239465478259, 0.69999999999999996, 0.80000000000000004, ++ { 0.57848021800372584, 0.70000000000000018, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.65266550725988315, 0.69999999999999996, 0.80000000000000004, ++ { 0.83837480968392586, 0.70000000000000018, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.79624879865249298, 0.69999999999999996, 0.80000000000000004, ++ { 1.1751669030061143, 0.70000000000000018, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.93497577043296920, 0.69999999999999996, 0.80000000000000004, ++ { 1.6381851899173603, 0.70000000000000018, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0713041566930750, 0.69999999999999996, 0.80000000000000004, ++ { 2.3002065924302197, 0.70000000000000018, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2069772023255654, 0.69999999999999996, 0.80000000000000004, ++ { 3.2337600665337871, 0.70000000000000018, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.3427110650397531, 0.69999999999999996, 0.80000000000000004, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler169 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2494869624129105e-16 ++// Test data for k=0.70000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 7.4384942649885490e-16 ++// variance(f - f_Boost): 9.7403930714297352e-31 ++// stddev(f - f_Boost): 9.8693429727767263e-16 + const testcase_ellint_3 + data170[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.90000000000000002, ++ { 0.0000000000000000, 0.70000000000000018, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17340049697003637, 0.69999999999999996, 0.90000000000000002, ++ { 0.17658626600478800, 0.70000000000000018, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34062438249741556, 0.69999999999999996, 0.90000000000000002, ++ { 0.36609762156017206, 0.70000000000000018, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49801946510076867, 0.69999999999999996, 0.90000000000000002, ++ { 0.58478615187842409, 0.70000000000000018, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.64513432604750476, 0.69999999999999996, 0.90000000000000002, ++ { 0.85718862878291846, 0.70000000000000018, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.78378145487573758, 0.69999999999999996, 0.90000000000000002, ++ { 1.2255385617397643, 0.70000000000000018, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.91671799500854623, 0.69999999999999996, 0.90000000000000002, ++ { 1.7696521899992941, 0.70000000000000018, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0466193579463123, 0.69999999999999996, 0.90000000000000002, ++ { 2.6476314987883507, 0.70000000000000018, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1754218079199146, 0.69999999999999996, 0.90000000000000002, ++ { 4.1373434902898083, 0.70000000000000018, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3040500499695913, 0.69999999999999996, 0.90000000000000002, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler170 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1175183168766718e-16 ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 + const testcase_ellint_3 + data171[10] = + { +@@ -4978,596 +5490,654 @@ + 0.0000000000000000 }, + { 0.17510154241338899, 0.80000000000000004, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35365068839779390, 0.80000000000000004, 0.0000000000000000, ++ { 0.35365068839779396, 0.80000000000000004, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53926804409084550, 0.80000000000000004, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.73587926028070361, 0.80000000000000004, 0.0000000000000000, ++ { 0.73587926028070372, 0.80000000000000004, 0.0000000000000000, + 0.69813170079773179 }, + { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1789022995388236, 0.80000000000000004, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.4323027881876009, 0.80000000000000004, 0.0000000000000000, ++ { 1.4323027881876012, 0.80000000000000004, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.7069629739121674, 0.80000000000000004, 0.0000000000000000, ++ { 1.7069629739121677, 0.80000000000000004, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler171 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1537164503193145e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 + const testcase_ellint_3 + data172[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17492468824017163, 0.80000000000000004, 0.10000000000000001, ++ { 0.17527903952342144, 0.80000000000000004, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35224443521476911, 0.80000000000000004, 0.10000000000000001, ++ { 0.35507705313548549, 0.80000000000000004, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53456851853226950, 0.80000000000000004, 0.10000000000000001, ++ { 0.54411455987643553, 0.80000000000000004, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.72488875602364922, 0.80000000000000004, 0.10000000000000001, ++ { 0.74745625666804383, 0.80000000000000004, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.92661354274638952, 0.80000000000000004, 0.10000000000000001, ++ { 0.97046953684238557, 0.80000000000000004, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1432651144499075, 0.80000000000000004, 0.10000000000000001, ++ { 1.2183080025184605, 0.80000000000000004, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3774479927211429, 0.80000000000000004, 0.10000000000000001, ++ { 1.4943711151994405, 0.80000000000000004, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.6287092337196041, 0.80000000000000004, 0.10000000000000001, ++ { 1.7972401309544201, 0.80000000000000004, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler172 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1894552974436829e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 + const testcase_ellint_3 + data173[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17474847286224940, 0.80000000000000004, 0.20000000000000001, ++ { 0.17545718375086419, 0.80000000000000004, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35085779529084682, 0.80000000000000004, 0.20000000000000001, ++ { 0.35652404627248163, 0.80000000000000004, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53000829263059146, 0.80000000000000004, 0.20000000000000001, ++ { 0.54911638512920913, 0.80000000000000004, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.71443466027453384, 0.80000000000000004, 0.20000000000000001, ++ { 0.75967684282131176, 0.80000000000000004, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.90698196872715420, 0.80000000000000004, 0.20000000000000001, ++ { 0.99513526893543769, 0.80000000000000004, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1108198200558579, 0.80000000000000004, 0.20000000000000001, ++ { 1.2622192109995993, 0.80000000000000004, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.3284988909963957, 0.80000000000000004, 0.20000000000000001, ++ { 1.5654106676347741, 0.80000000000000004, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.5600369318140328, 0.80000000000000004, 0.20000000000000001, ++ { 1.9029531718534984, 0.80000000000000004, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler173 = 2.5000000000000020e-13; + +-// Test data for k=0.80000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2247517409029886e-16 ++// Test data for k=0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 + const testcase_ellint_3 + data174[10] = + { +- { 0.0000000000000000, 0.80000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, 0.80000000000000004, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17457289217669889, 0.80000000000000004, 0.29999999999999999, ++ { 0.17563597931587369, 0.80000000000000004, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34949028801501258, 0.80000000000000004, 0.29999999999999999, ++ { 0.35799220412005128, 0.80000000000000004, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52558024362769307, 0.80000000000000004, 0.29999999999999999, ++ { 0.55428253691111318, 0.80000000000000004, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.70447281740094891, 0.80000000000000004, 0.29999999999999999, ++ { 0.77260647376977365, 0.80000000000000004, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.88864745641528986, 0.80000000000000004, 0.29999999999999999, ++ { 1.0220015271210958, 0.80000000000000004, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0811075819341462, 0.80000000000000004, 0.29999999999999999, ++ { 1.3115965312302671, 0.80000000000000004, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2844589654082377, 0.80000000000000004, 0.29999999999999999, ++ { 1.6478518468813512, 0.80000000000000004, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4991461361277847, 0.80000000000000004, 0.29999999999999999, ++ { 2.0290458414203481, 0.80000000000000004, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999, ++ { 2.4392042002725693, 0.80000000000000004, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler174 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2596216594752862e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 + const testcase_ellint_3 + data175[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17439794211872175, 0.80000000000000004, 0.40000000000000002, ++ { 0.17581543047866136, 0.80000000000000004, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34814144964568972, 0.80000000000000004, 0.40000000000000002, ++ { 0.35948208343061633, 0.80000000000000004, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52127776285273064, 0.80000000000000004, 0.40000000000000002, ++ { 0.55962280893702021, 0.80000000000000004, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.69496411438966588, 0.80000000000000004, 0.40000000000000002, ++ { 0.78632063889234116, 0.80000000000000004, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.87146878427509589, 0.80000000000000004, 0.40000000000000002, ++ { 1.0514333069550323, 0.80000000000000004, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0537579024937762, 0.80000000000000004, 0.40000000000000002, ++ { 1.3677213138838757, 0.80000000000000004, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.2445534387922637, 0.80000000000000004, 0.40000000000000002, ++ { 1.7451736773665165, 0.80000000000000004, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.4446769766361993, 0.80000000000000004, 0.40000000000000002, ++ { 2.1830100424586831, 0.80000000000000004, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002, ++ { 2.6604037035529724, 0.80000000000000004, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler175 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2940800093915668e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 + const testcase_ellint_3 + data176[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17422361866118044, 0.80000000000000004, 0.50000000000000000, ++ { 0.17599554153999472, 0.80000000000000004, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34681083254170475, 0.80000000000000004, 0.50000000000000000, ++ { 0.36099426243351540, 0.80000000000000004, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51709470815494440, 0.80000000000000004, 0.50000000000000000, ++ { 0.56514786174780673, 0.80000000000000004, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.68587375344080237, 0.80000000000000004, 0.50000000000000000, ++ { 0.80090697622371010, 0.80000000000000004, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.85532571852810624, 0.80000000000000004, 0.50000000000000000, ++ { 1.0838891627679339, 0.80000000000000004, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0284677391874903, 0.80000000000000004, 0.50000000000000000, ++ { 1.4323506654466280, 0.80000000000000004, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2081693942686225, 0.80000000000000004, 0.50000000000000000, ++ { 1.8625761085390575, 0.80000000000000004, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3955803006426311, 0.80000000000000004, 0.50000000000000000, ++ { 2.3768757305654766, 0.80000000000000004, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000, ++ { 2.9478781158239746, 0.80000000000000004, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler176 = 2.5000000000000020e-13; + +-// Test data for k=0.80000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3281408974056389e-16 ++// Test data for k=0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 + const testcase_ellint_3 + data177[10] = + { +- { 0.0000000000000000, 0.80000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, 0.80000000000000004, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17404991781414089, 0.80000000000000004, 0.59999999999999998, ++ { 0.17617631684170665, 0.80000000000000004, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34549800443625167, 0.80000000000000004, 0.59999999999999998, ++ { 0.36252934193666231, 0.80000000000000004, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51302536167001545, 0.80000000000000004, 0.59999999999999998, ++ { 0.57086932622945163, 0.80000000000000004, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.67717065003912236, 0.80000000000000004, 0.59999999999999998, ++ { 0.81646796740150973, 0.80000000000000004, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.84011512421134416, 0.80000000000000004, 0.59999999999999998, ++ { 1.1199552158519064, 0.80000000000000004, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0049863847088740, 0.80000000000000004, 0.59999999999999998, ++ { 1.5079766673336394, 0.80000000000000004, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1748145941898920, 0.80000000000000004, 0.59999999999999998, ++ { 2.0082747447038165, 0.80000000000000004, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.3510319699755071, 0.80000000000000004, 0.59999999999999998, ++ { 2.6315146066775523, 0.80000000000000004, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998, ++ { 3.3418121892288051, 0.80000000000000004, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler177 = 2.5000000000000020e-13; + +-// Test data for k=0.80000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3618176466061808e-16 ++// Test data for k=0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 + const testcase_ellint_3 + data178[10] = + { +- { 0.0000000000000000, 0.80000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, 0.80000000000000004, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17387683562442199, 0.80000000000000004, 0.69999999999999996, ++ { 0.17635776076721221, 0.80000000000000004, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34420254775101611, 0.80000000000000004, 0.69999999999999996, ++ { 0.36408794649916976, 0.80000000000000004, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50906439222143673, 0.80000000000000004, 0.69999999999999996, ++ { 0.57679992290624138, 0.80000000000000004, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66882693152688422, 0.80000000000000004, 0.69999999999999996, ++ { 0.83312441418142813, 0.80000000000000004, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.82574792844091316, 0.80000000000000004, 0.69999999999999996, ++ { 1.1603958891464856, 0.80000000000000004, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.98310431309490931, 0.80000000000000004, 0.69999999999999996, ++ { 1.5982855143796213, 0.80000000000000004, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.1440884535113258, 0.80000000000000004, 0.69999999999999996, ++ { 2.1962484408371821, 0.80000000000000004, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.3103743938952537, 0.80000000000000004, 0.69999999999999996, ++ { 2.9873281786111869, 0.80000000000000004, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler178 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3951228558314112e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 + const testcase_ellint_3 + data179[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17370436817515203, 0.80000000000000004, 0.80000000000000004, ++ { 0.17653987774203392, 0.80000000000000004, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34292405894783395, 0.80000000000000004, 0.80000000000000004, ++ { 0.36567072568046877, 0.80000000000000004, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50520682176250076, 0.80000000000000004, 0.80000000000000004, ++ { 0.58295359996558616, 0.80000000000000004, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.66081751679736178, 0.80000000000000004, 0.80000000000000004, ++ { 0.85101998309176108, 0.80000000000000004, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.81214672249355102, 0.80000000000000004, 0.80000000000000004, ++ { 1.2062322059736537, 0.80000000000000004, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.96264481387685552, 0.80000000000000004, 0.80000000000000004, ++ { 1.7090321420917429, 0.80000000000000004, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1156611352656258, 0.80000000000000004, 0.80000000000000004, ++ { 2.4529058049405066, 0.80000000000000004, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2730756225143889, 0.80000000000000004, 0.80000000000000004, ++ { 3.5368893360106948, 0.80000000000000004, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.4339837018309471, 0.80000000000000004, 0.80000000000000004, ++ { 4.9246422058196062, 0.80000000000000004, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler179 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4280684534289690e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 + const testcase_ellint_3 + data180[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17353251158533151, 0.80000000000000004, 0.90000000000000002, ++ { 0.17672267223433513, 0.80000000000000004, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34166214791545768, 0.80000000000000004, 0.90000000000000002, ++ { 0.36727835537196063, 0.80000000000000004, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50144799535130569, 0.80000000000000004, 0.90000000000000002, ++ { 0.58934569363716649, 0.80000000000000004, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.65311976193814425, 0.80000000000000004, 0.90000000000000002, ++ { 0.87032723471138851, 0.80000000000000004, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.79924384892320866, 0.80000000000000004, 0.90000000000000002, ++ { 1.2588676111323349, 0.80000000000000004, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.94345762353365603, 0.80000000000000004, 0.90000000000000002, ++ { 1.8498731900660019, 0.80000000000000004, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0892582069219161, 0.80000000000000004, 0.90000000000000002, ++ { 2.8368381299300420, 0.80000000000000004, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.2387000876610268, 0.80000000000000004, 0.90000000000000002, ++ { 4.5674844191654058, 0.80000000000000004, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002, ++ { 7.2263259298637115, 0.80000000000000004, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler180 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8945813740035884e-16 ++// Test data for k=0.90000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3381508715713360e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data181[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.0000000000000000, ++ { 0.0000000000000000, 0.90000000000000013, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17525427376115024, 0.89999999999999991, 0.0000000000000000, ++ { 0.17525427376115027, 0.90000000000000013, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35492464591297446, 0.89999999999999991, 0.0000000000000000, ++ { 0.35492464591297446, 0.90000000000000013, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.54388221416157112, 0.89999999999999991, 0.0000000000000000, ++ { 0.54388221416157123, 0.90000000000000013, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.74797400423532490, 0.89999999999999991, 0.0000000000000000, ++ { 0.74797400423532512, 0.90000000000000013, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.97463898451966458, 0.89999999999999991, 0.0000000000000000, ++ { 0.97463898451966446, 0.90000000000000013, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.2334463254523440, 0.89999999999999991, 0.0000000000000000, ++ { 1.2334463254523440, 0.90000000000000013, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.5355247765594910, 0.89999999999999991, 0.0000000000000000, ++ { 1.5355247765594915, 0.90000000000000013, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.8882928567775117, 0.89999999999999991, 0.0000000000000000, ++ { 1.8882928567775128, 0.90000000000000013, 0.0000000000000000, + 1.3962634015954636 }, +- { 2.2805491384227703, 0.89999999999999991, 0.0000000000000000, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler181 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1237990617685137e-16 ++// Test data for k=0.90000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 + const testcase_ellint_3 + data182[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.10000000000000001, ++ { 0.0000000000000000, 0.90000000000000013, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17507714233254656, 0.89999999999999991, 0.10000000000000001, ++ { 0.17543204932716244, 0.90000000000000013, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35350932904326521, 0.89999999999999991, 0.10000000000000001, ++ { 0.35636022898551184, 0.90000000000000013, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53911129989870976, 0.89999999999999991, 0.10000000000000001, ++ { 0.54880278898382595, 0.90000000000000013, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.73666644254508395, 0.89999999999999991, 0.10000000000000001, ++ { 0.75988834774529268, 0.90000000000000013, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.95250736612100195, 0.89999999999999991, 0.10000000000000001, ++ { 0.99853303003568117, 0.90000000000000013, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1950199550905594, 0.89999999999999991, 0.10000000000000001, ++ { 1.2759958823999022, 0.90000000000000013, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.4741687286340848, 0.89999999999999991, 0.10000000000000001, ++ { 1.6051187364639401, 0.90000000000000013, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.7968678183506053, 0.89999999999999991, 0.10000000000000001, ++ { 1.9941406879519474, 0.90000000000000013, 0.10000000000000001, + 1.3962634015954636 }, +- { 2.1537868513875287, 0.89999999999999991, 0.10000000000000001, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler182 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3446165733924066e-16 ++// Test data for k=0.90000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9533518431433547e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data183[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.20000000000000001, ++ { 0.0000000000000000, 0.90000000000000013, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17490065089140927, 0.89999999999999991, 0.20000000000000001, ++ { 0.17561047321968409, 0.90000000000000013, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35211377590661436, 0.89999999999999991, 0.20000000000000001, ++ { 0.35781659944356109, 0.90000000000000013, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53448220334204100, 0.89999999999999991, 0.20000000000000001, ++ { 0.55388150905215283, 0.90000000000000013, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.72591368943179579, 0.89999999999999991, 0.20000000000000001, ++ { 0.77246874123251441, 0.90000000000000013, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.93192539780038763, 0.89999999999999991, 0.20000000000000001, ++ { 1.0244466254771925, 0.90000000000000013, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1600809679692683, 0.89999999999999991, 0.20000000000000001, ++ { 1.3234824077640801, 0.90000000000000013, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.4195407225882508, 0.89999999999999991, 0.20000000000000001, ++ { 1.6849848968804240, 0.90000000000000013, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.7168966476424521, 0.89999999999999991, 0.20000000000000001, ++ { 2.1185749045502278, 0.90000000000000013, 0.20000000000000001, + 1.3962634015954636 }, +- { 2.0443194576468895, 0.89999999999999991, 0.20000000000000001, ++ { 2.6076835743348417, 0.90000000000000013, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler183 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.29999999999999999. +-// max(|f - f_GSL|): 1.1102230246251565e-15 +-// max(|f - f_GSL| / |f_GSL|): 5.6974600067013622e-16 ++// Test data for k=0.90000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9712691025502371e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 + const testcase_ellint_3 + data184[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.29999999999999999, ++ { 0.0000000000000000, 0.90000000000000013, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17472479532647531, 0.89999999999999991, 0.29999999999999999, ++ { 0.17578954966746221, 0.90000000000000013, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.35073750187374114, 0.89999999999999991, 0.29999999999999999, ++ { 0.35929429810867447, 0.90000000000000013, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52998766129466957, 0.89999999999999991, 0.29999999999999999, ++ { 0.55912757154240822, 0.90000000000000013, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.71566993548699553, 0.89999999999999991, 0.29999999999999999, ++ { 0.78578314722025389, 0.90000000000000013, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.91271517762560195, 0.89999999999999991, 0.29999999999999999, ++ { 1.0526941001131365, 0.90000000000000013, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.1281241199843370, 0.89999999999999991, 0.29999999999999999, ++ { 1.3769682234538601, 0.90000000000000013, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.3704929576917448, 0.89999999999999991, 0.29999999999999999, ++ { 1.7779437432911240, 0.90000000000000013, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.6461981511487711, 0.89999999999999991, 0.29999999999999999, ++ { 2.2676509341813635, 0.90000000000000013, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.9486280260314426, 0.89999999999999991, 0.29999999999999999, ++ { 2.8256506968858517, 0.90000000000000013, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler184 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.7646208744449464e-16 ++// Test data for k=0.90000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 + const testcase_ellint_3 + data185[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.40000000000000002, ++ { 0.0000000000000000, 0.90000000000000013, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17454957156468837, 0.89999999999999991, 0.40000000000000002, ++ { 0.17596928293938452, 0.90000000000000013, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34938003933330430, 0.89999999999999991, 0.40000000000000002, ++ { 0.36079388642472821, 0.90000000000000013, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52562093533067433, 0.89999999999999991, 0.40000000000000002, ++ { 0.56455096667115612, 0.90000000000000013, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.70589461324915670, 0.89999999999999991, 0.40000000000000002, ++ { 0.79990996997869435, 0.90000000000000013, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.89472658511942849, 0.89999999999999991, 0.40000000000000002, ++ { 1.0836647913872215, 0.90000000000000013, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0987419542323440, 0.89999999999999991, 0.40000000000000002, ++ { 1.4378726836091849, 0.90000000000000013, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.3261349565496301, 0.89999999999999991, 0.40000000000000002, ++ { 1.8880446720682853, 0.90000000000000013, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.5831293909853763, 0.89999999999999991, 0.40000000000000002, ++ { 2.4505848932025232, 0.90000000000000013, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.8641114227238351, 0.89999999999999991, 0.40000000000000002, ++ { 3.1000689868578624, 0.90000000000000013, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler185 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.9652155758573562e-16 ++// Test data for k=0.90000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3939646155354115e-16 ++// mean(f - f_Boost): 1.5820678100908481e-16 ++// variance(f - f_Boost): 1.0089970755557622e-32 ++// stddev(f - f_Boost): 1.0044884646205561e-16 + const testcase_ellint_3 + data186[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.50000000000000000, ++ { 0.0000000000000000, 0.90000000000000013, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17437497557073334, 0.89999999999999991, 0.50000000000000000, ++ { 0.17614967734498183, 0.90000000000000013, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34804093691586013, 0.89999999999999991, 0.50000000000000000, ++ { 0.36231594750319435, 0.90000000000000013, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.52137576320372891, 0.89999999999999991, 0.50000000000000000, ++ { 0.57016256984349567, 0.90000000000000013, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.69655163996912262, 0.89999999999999991, 0.50000000000000000, ++ { 0.81494025918293422, 0.90000000000000013, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.87783188683054236, 0.89999999999999991, 0.50000000000000000, ++ { 1.1178482279283477, 0.90000000000000013, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0716015959755185, 0.89999999999999991, 0.50000000000000000, ++ { 1.5081455873012106, 0.90000000000000013, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2857636916026749, 0.89999999999999991, 0.50000000000000000, ++ { 2.0213599730863998, 0.90000000000000013, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.5264263913252358, 0.89999999999999991, 0.50000000000000000, ++ { 2.6822467012926832, 0.90000000000000013, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.7888013241937863, 0.89999999999999991, 0.50000000000000000, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler186 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.59999999999999998. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8702201113622378e-16 ++// Test data for k=0.90000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.4914274070443813e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 2.5224926888894056e-31 ++// stddev(f - f_Boost): 5.0224423231027804e-16 + const testcase_ellint_3 + data187[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.59999999999999998, ++ { 0.0000000000000000, 0.90000000000000013, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17420100334657812, 0.89999999999999991, 0.59999999999999998, ++ { 0.17633073723493825, 0.90000000000000013, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34671975876122157, 0.89999999999999991, 0.59999999999999998, ++ { 0.36386108723492810, 0.90000000000000013, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51724631570707946, 0.89999999999999991, 0.59999999999999998, ++ { 0.57597424744716241, 0.90000000000000013, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.68760879113743023, 0.89999999999999991, 0.59999999999999998, ++ { 0.83098051948501150, 0.90000000000000013, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.86192157779698364, 0.89999999999999991, 0.59999999999999998, ++ { 1.1558706545698916, 0.90000000000000013, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0464279696166354, 0.89999999999999991, 0.59999999999999998, ++ { 1.5905576379415669, 0.90000000000000013, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.2488156247094004, 0.89999999999999991, 0.59999999999999998, ++ { 2.1875186010215084, 0.90000000000000013, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.4750988777188470, 0.89999999999999991, 0.59999999999999998, ++ { 2.9885767771316853, 0.90000000000000013, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.7211781128919525, 0.89999999999999991, 0.59999999999999998, ++ { 3.9549939883570238, 0.90000000000000013, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler187 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3410843563834748e-16 ++// Test data for k=0.90000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.5442489886293633e-16 ++// mean(f - f_Boost): 4.3576253716537392e-16 ++// variance(f - f_Boost): 2.2187568928205130e-31 ++// stddev(f - f_Boost): 4.7103682370070737e-16 + const testcase_ellint_3 + data188[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.69999999999999996, ++ { 0.0000000000000000, 0.90000000000000013, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17402765093102207, 0.89999999999999991, 0.69999999999999996, ++ { 0.17651246700160939, 0.90000000000000013, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34541608382635131, 0.89999999999999991, 0.69999999999999996, ++ { 0.36542993547358982, 0.90000000000000013, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.51322715827061682, 0.89999999999999991, 0.69999999999999996, ++ { 0.58199897877674867, 0.90000000000000013, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.67903717872440272, 0.89999999999999991, 0.69999999999999996, ++ { 0.84815633587352857, 0.90000000000000013, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.84690113601682671, 0.89999999999999991, 0.69999999999999996, ++ { 1.1985495623872375, 0.90000000000000013, 0.70000000000000007, + 0.87266462599716477 }, +- { 1.0229914311548418, 0.89999999999999991, 0.69999999999999996, ++ { 1.6892158134027691, 0.90000000000000013, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.2148329639709381, 0.89999999999999991, 0.69999999999999996, ++ { 2.4029722191094236, 0.90000000000000013, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.4283586501307799, 0.89999999999999991, 0.69999999999999996, ++ { 3.4201084941340061, 0.90000000000000013, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.6600480747670940, 0.89999999999999991, 0.69999999999999996, ++ { 4.6985482312992444, 0.90000000000000013, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler188 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3100928058463168e-16 ++// Test data for k=0.90000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9362432595976420e-16 ++// mean(f - f_Boost): 3.0531133177191805e-16 ++// variance(f - f_Boost): 1.1508025840536076e-32 ++// stddev(f - f_Boost): 1.0727546709539920e-16 + const testcase_ellint_3 + data189[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.80000000000000004, ++ { 0.0000000000000000, 0.90000000000000013, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17385491439925146, 0.89999999999999991, 0.80000000000000004, ++ { 0.17669487107954862, 0.90000000000000013, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34412950523113928, 0.89999999999999991, 0.80000000000000004, ++ { 0.36702314729628421, 0.90000000000000013, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50931321668729590, 0.89999999999999991, 0.80000000000000004, ++ { 0.58825099711365492, 0.90000000000000013, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.67081081392296327, 0.89999999999999991, 0.80000000000000004, ++ { 0.86661711422209031, 0.90000000000000013, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.83268846097293259, 0.89999999999999991, 0.80000000000000004, ++ { 1.2469779109884802, 0.90000000000000013, 0.80000000000000004, + 0.87266462599716477 }, +- { 1.0010985015814027, 0.89999999999999991, 0.80000000000000004, ++ { 1.8105469760531578, 0.90000000000000013, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1834394045489678, 0.89999999999999991, 0.80000000000000004, ++ { 2.6989505165893752, 0.90000000000000013, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.3855695891683182, 0.89999999999999991, 0.80000000000000004, ++ { 4.0935213267757433, 0.90000000000000013, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.6044591960982202, 0.89999999999999991, 0.80000000000000004, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler189 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.7167507456081732e-16 ++// Test data for k=0.90000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9577148062669782e-16 ++// mean(f - f_Boost): 5.9119376061289588e-16 ++// variance(f - f_Boost): 1.7340883003959522e-31 ++// stddev(f - f_Boost): 4.1642385863395872e-16 + const testcase_ellint_3 + data190[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.90000000000000002, ++ { 0.0000000000000000, 0.90000000000000013, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17368278986240135, 0.89999999999999991, 0.90000000000000002, ++ { 0.17687795394604169, 0.90000000000000013, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34285962963961397, 0.89999999999999991, 0.90000000000000002, ++ { 0.36864140434751286, 0.90000000000000013, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50549974644993312, 0.89999999999999991, 0.90000000000000002, ++ { 0.59474595366817051, 0.90000000000000013, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.66290623857720876, 0.89999999999999991, 0.90000000000000002, ++ { 0.88654237226056665, 0.90000000000000013, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.81921183128847175, 0.89999999999999991, 0.90000000000000002, ++ { 1.3026595810616726, 0.90000000000000013, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.98058481956066390, 0.89999999999999991, 0.90000000000000002, ++ { 1.9653635459278080, 0.90000000000000013, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.1543223520473569, 0.89999999999999991, 0.90000000000000002, ++ { 3.1451407527189468, 0.90000000000000013, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.3462119782292934, 0.89999999999999991, 0.90000000000000002, ++ { 5.3745230680316132, 0.90000000000000013, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.5536420236310948, 0.89999999999999991, 0.90000000000000002, ++ { 8.9942562031858717, 0.90000000000000013, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler190 = 2.5000000000000020e-13; + +-template ++template + void +- test(const testcase_ellint_3 (&data)[Num], Tp toler) ++ test(const testcase_ellint_3 (&data)[Num], Ret toler) + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); + unsigned int num_datum = Num; + for (unsigned int i = 0; i < num_datum; ++i) + { +- const Tp f = std::ellint_3(data[i].k, data[i].nu, ++ const Ret f = std::ellint_3(data[i].k, data[i].nu, + data[i].phi); +- const Tp f0 = data[i].f0; +- const Tp diff = f - f0; ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; + if (std::abs(diff) > max_abs_diff) + max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) + { +- const Tp frac = diff / f0; ++ const Ret frac = diff / f0; + if (std::abs(frac) > max_abs_frac) + max_abs_frac = std::abs(frac); + } +Index: libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,122 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ struct X { ++ mutable int conversions = 0; ++ ++ operator std::pair() const { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::unordered_map m; ++ m.insert(X()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), X()); ++ VERIFY( m.size() == 1 ); ++ ++} ++void ++test02() ++{ ++ struct Y { ++ int conversions = 0; ++ ++ operator std::pair() && { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::unordered_map m; ++ m.insert(Y()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), Y()); ++ VERIFY( m.size() == 1 ); ++} ++ ++struct Key { ++ int key; ++ bool operator==(const Key& r) const { return key == r.key; } ++}; ++ ++namespace std { ++ template<> struct hash { ++ size_t operator()(const Key& k) const { return std::hash()(k.key); } ++ }; ++} ++ ++struct Z { ++ operator std::pair() const { return { { z }, 0 }; } ++ int z; ++}; ++ ++template ++struct Alloc ++{ ++ Alloc() = default; ++ ++ template ++ Alloc(const Alloc&) { } ++ ++ using value_type = T; ++ ++ T* allocate(std::size_t n) { return std::allocator().allocate(n); } ++ ++ void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } ++ ++ template ++ void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } ++ ++ template ++ bool operator==(const Alloc&) { return true; } ++ ++ template ++ bool operator!=(const Alloc&) { return false; } ++}; ++ ++void ++test03() ++{ ++ std::unordered_map, std::equal_to, ++ Alloc>> m; ++ m.insert(Z{}); ++ m.insert(Z{}); ++ VERIFY( m.size() == 1 ); ++ m.insert(Z{}); ++ m.insert(Z{1}); ++ VERIFY( m.size() == 2 ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,115 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ struct X { ++ mutable int conversions = 0; ++ ++ operator std::pair() const { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::multimap m; ++ m.insert(X()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), X()); ++ VERIFY( m.size() == 2 ); ++ ++} ++void ++test02() ++{ ++ struct Y { ++ int conversions = 0; ++ ++ operator std::pair() && { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::multimap m; ++ m.insert(Y()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), Y()); ++ VERIFY( m.size() == 2 ); ++} ++ ++struct Key { ++ int key; ++ bool operator<(const Key& r) const { return key < r.key; } ++}; ++ ++struct Z { ++ operator std::pair() const { return { { z }, 0 }; } ++ int z; ++}; ++ ++template ++struct Alloc ++{ ++ Alloc() = default; ++ ++ template ++ Alloc(const Alloc&) { } ++ ++ using value_type = T; ++ ++ T* allocate(std::size_t n) { return std::allocator().allocate(n); } ++ ++ void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } ++ ++ template ++ void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } ++ ++ template ++ bool operator==(const Alloc&) { return true; } ++ ++ template ++ bool operator!=(const Alloc&) { return false; } ++}; ++ ++void ++test03() ++{ ++ std::multimap, Alloc>> m; ++ m.insert(Z{}); ++ m.insert(Z{}); ++ VERIFY( m.size() == 2 ); ++ m.insert(Z{}); ++ m.insert(Z{1}); ++ VERIFY( m.size() == 4 ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,48 @@ ++// Copyright (C) 2018 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 run { target c++1z } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // PR libstdc++/82966 ++ std::set::node_type n1, n2; ++ n1.swap(n2); ++ VERIFY( n1.empty() ); ++ VERIFY( n2.empty() ); ++} ++ ++void ++test02() ++{ ++ std::set s{1, 2}; ++ std::set::node_type n1 = s.extract(1), n2; ++ swap(n1, n2); ++ VERIFY( n1.empty() ); ++ VERIFY( !n2.empty() ); ++} ++ ++int main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,122 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ struct X { ++ mutable int conversions = 0; ++ ++ operator std::pair() const { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::unordered_multimap m; ++ m.insert(X()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), X()); ++ VERIFY( m.size() == 2 ); ++ ++} ++void ++test02() ++{ ++ struct Y { ++ int conversions = 0; ++ ++ operator std::pair() && { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::unordered_multimap m; ++ m.insert(Y()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), Y()); ++ VERIFY( m.size() == 2 ); ++} ++ ++struct Key { ++ int key; ++ bool operator==(const Key& r) const { return key == r.key; } ++}; ++ ++namespace std { ++ template<> struct hash { ++ size_t operator()(const Key& k) const { return std::hash()(k.key); } ++ }; ++} ++ ++struct Z { ++ operator std::pair() const { return { { z }, 0 }; } ++ int z; ++}; ++ ++template ++struct Alloc ++{ ++ Alloc() = default; ++ ++ template ++ Alloc(const Alloc&) { } ++ ++ using value_type = T; ++ ++ T* allocate(std::size_t n) { return std::allocator().allocate(n); } ++ ++ void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } ++ ++ template ++ void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } ++ ++ template ++ bool operator==(const Alloc&) { return true; } ++ ++ template ++ bool operator!=(const Alloc&) { return false; } ++}; ++ ++void ++test03() ++{ ++ std::unordered_multimap, std::equal_to, ++ Alloc>> m; ++ m.insert(Z{}); ++ m.insert(Z{}); ++ VERIFY( m.size() == 2 ); ++ m.insert(Z{}); ++ m.insert(Z{1}); ++ VERIFY( m.size() == 4 ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,76 @@ ++// Copyright (C) 2017 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++// libstdc++/80893 ++ ++#include ++#include ++ ++struct DereferencedInvalidPointer { }; ++ ++// User-defined pointer type that throws if a null pointer is dereferenced. ++template ++struct Pointer : __gnu_test::PointerBase, T> ++{ ++ using __gnu_test::PointerBase, T>::PointerBase; ++ ++ T& operator*() const ++ { ++ if (!this->value) ++ throw DereferencedInvalidPointer(); ++ return *this->value; ++ } ++}; ++ ++// Minimal allocator using Pointer ++template ++struct Alloc ++{ ++ typedef T value_type; ++ typedef Pointer pointer; ++ ++ Alloc() = default; ++ template ++ Alloc(const Alloc&) { } ++ ++ pointer allocate(std::size_t n) ++ { ++ if (n) ++ return pointer(std::allocator().allocate(n)); ++ return nullptr; ++ } ++ ++ void deallocate(pointer p, std::size_t n) ++ { ++ if (n) ++ std::allocator().deallocate(p.value, n); ++ } ++}; ++ ++template ++bool operator==(Alloc, Alloc) { return true; } ++ ++template ++bool operator!=(Alloc, Alloc) { return false; } ++ ++int main() ++{ ++ std::vector> v(0); ++ std::vector> w(v); ++} +Index: libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,60 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++#include ++ ++struct X ++{ ++ X() : data(1) ++ { ++ if (fail) ++ throw 1; ++ } ++ ++ static bool fail; ++ ++ std::vector data; ++}; ++ ++bool X::fail = false; ++ ++void ++test01() ++{ ++ std::vector v(2); ++ X* const addr = &v[0]; ++ bool caught = false; ++ try { ++ X::fail = true; ++ v.resize(v.capacity() + 1); // force reallocation ++ } catch (int) { ++ caught = true; ++ } ++ VERIFY( caught ); ++ VERIFY( v.size() == 2 ); ++ VERIFY( &v[0] == addr ); ++ // PR libstdc++/83982 ++ VERIFY( ! v[0].data.empty() ); ++ VERIFY( ! v[1].data.empty() ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,64 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run } ++ ++#include ++#include ++#include ++ ++struct X ++{ ++ X() { ++count; } ++ X(const X&) { if (++copies >= max_copies) throw 1; ++count; } ++ ~X() { --count; } ++ ++ static int count; ++ static int copies; ++ static int max_copies; ++}; ++ ++int X::count = 0; ++int X::copies = 0; ++int X::max_copies = 0; ++ ++void ++test01() ++{ ++ X x[3]; ++ const int count = X::count; ++ X::max_copies = 2; ++ __gnu_test::test_container ++ x_input(x, x+3); ++ bool caught = false; ++ try ++ { ++ std::vector v(x_input.begin(), x_input.end()); ++ } ++ catch(int) ++ { ++ caught = true; ++ } ++ VERIFY( caught ); ++ VERIFY( X::count == count ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc (.../branches/gcc-7-branch) +@@ -18,6 +18,7 @@ + // { dg-do run { target c++11 } } + + #include ++ + #include + #include + #include +@@ -24,65 +25,126 @@ + + using __gnu_test::propagating_allocator; + using __gnu_test::counter_type; ++using __gnu_test::tracker_allocator; ++using __gnu_test::tracker_allocator_counter; + + void test01() + { +- typedef propagating_allocator alloc_type; +- typedef __gnu_test::counter_type_hasher hash; +- typedef std::unordered_set, +- alloc_type> test_type; ++ tracker_allocator_counter::reset(); ++ { ++ typedef propagating_allocator> alloc_type; ++ typedef __gnu_test::counter_type_hasher hash; ++ typedef std::unordered_set, ++ alloc_type> test_type; + +- test_type v1(alloc_type(1)); +- v1.emplace(0); ++ test_type v1(alloc_type(1)); ++ v1.emplace(0); + +- test_type v2(alloc_type(2)); +- v2.emplace(1); ++ test_type v2(alloc_type(2)); ++ v2.emplace(1); + +- counter_type::reset(); ++ counter_type::reset(); + +- v2 = std::move(v1); ++ v2 = std::move(v1); + +- VERIFY( 1 == v1.get_allocator().get_personality() ); +- VERIFY( 2 == v2.get_allocator().get_personality() ); ++ VERIFY( 1 == v1.get_allocator().get_personality() ); ++ VERIFY( 2 == v2.get_allocator().get_personality() ); + +- VERIFY( counter_type::move_count == 1 ); +- VERIFY( counter_type::destructor_count == 2 ); ++ VERIFY( counter_type::move_count == 1 ); ++ VERIFY( counter_type::destructor_count == 2 ); ++ } ++ ++ // Check there's nothing left allocated or constructed. ++ VERIFY( tracker_allocator_counter::get_construct_count() ++ == tracker_allocator_counter::get_destruct_count() ); ++ VERIFY( tracker_allocator_counter::get_allocation_count() ++ == tracker_allocator_counter::get_deallocation_count() ); + } + + void test02() + { +- typedef propagating_allocator alloc_type; +- typedef __gnu_test::counter_type_hasher hash; +- typedef std::unordered_set, +- alloc_type> test_type; ++ tracker_allocator_counter::reset(); ++ { ++ typedef propagating_allocator> alloc_type; ++ typedef __gnu_test::counter_type_hasher hash; ++ typedef std::unordered_set, ++ alloc_type> test_type; + +- test_type v1(alloc_type(1)); +- v1.emplace(0); ++ test_type v1(alloc_type(1)); ++ v1.emplace(0); + +- auto it = v1.begin(); ++ auto it = v1.begin(); + +- test_type v2(alloc_type(2)); +- v2.emplace(0); ++ test_type v2(alloc_type(2)); ++ v2.emplace(0); + +- counter_type::reset(); ++ counter_type::reset(); + +- v2 = std::move(v1); ++ v2 = std::move(v1); + +- VERIFY(0 == v1.get_allocator().get_personality()); +- VERIFY(1 == v2.get_allocator().get_personality()); ++ VERIFY(0 == v1.get_allocator().get_personality()); ++ VERIFY(1 == v2.get_allocator().get_personality()); + +- VERIFY( counter_type::move_count == 0 ); +- VERIFY( counter_type::copy_count == 0 ); +- VERIFY( counter_type::destructor_count == 1 ); ++ VERIFY( counter_type::move_count == 0 ); ++ VERIFY( counter_type::copy_count == 0 ); ++ VERIFY( counter_type::destructor_count == 1 ); + +- VERIFY( it == v2.begin() ); ++ VERIFY( it == v2.begin() ); ++ } ++ ++ // Check there's nothing left allocated or constructed. ++ VERIFY( tracker_allocator_counter::get_construct_count() ++ == tracker_allocator_counter::get_destruct_count() ); ++ VERIFY( tracker_allocator_counter::get_allocation_count() ++ == tracker_allocator_counter::get_deallocation_count() ); + } + ++void test03() ++{ ++ tracker_allocator_counter::reset(); ++ { ++ typedef propagating_allocator> alloc_type; ++ typedef __gnu_test::counter_type_hasher hash; ++ typedef std::unordered_set, ++ alloc_type> test_type; ++ ++ test_type v1(alloc_type(1)); ++ v1.emplace(0); ++ ++ test_type v2(alloc_type(2)); ++ int i = 0; ++ v2.emplace(i++); ++ for (; v2.bucket_count() == v1.bucket_count(); ++i) ++ v2.emplace(i); ++ ++ counter_type::reset(); ++ ++ v2 = std::move(v1); ++ ++ VERIFY( 1 == v1.get_allocator().get_personality() ); ++ VERIFY( 2 == v2.get_allocator().get_personality() ); ++ ++ VERIFY( counter_type::move_count == 1 ); ++ VERIFY( counter_type::destructor_count == i + 1 ); ++ } ++ ++ // Check there's nothing left allocated or constructed. ++ VERIFY( tracker_allocator_counter::get_construct_count() ++ == tracker_allocator_counter::get_destruct_count() ); ++ VERIFY( tracker_allocator_counter::get_allocation_count() ++ == tracker_allocator_counter::get_deallocation_count() ); ++} ++ + int main() + { + test01(); + test02(); ++ test03(); + return 0; + } +Index: libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,115 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ struct X { ++ mutable int conversions = 0; ++ ++ operator std::pair() const { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::map m; ++ m.insert(X()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), X()); ++ VERIFY( m.size() == 1 ); ++ ++} ++void ++test02() ++{ ++ struct Y { ++ int conversions = 0; ++ ++ operator std::pair() && { ++ if (++conversions > 1) ++ throw 1; ++ return {}; ++ } ++ }; ++ ++ std::map m; ++ m.insert(Y()); ++ VERIFY( m.size() == 1 ); ++ m.insert(m.begin(), Y()); ++ VERIFY( m.size() == 1 ); ++} ++ ++struct Key { ++ int key; ++ bool operator<(const Key& r) const { return key < r.key; } ++}; ++ ++struct Z { ++ operator std::pair() const { return { { z }, 0 }; } ++ int z; ++}; ++ ++template ++struct Alloc ++{ ++ Alloc() = default; ++ ++ template ++ Alloc(const Alloc&) { } ++ ++ using value_type = T; ++ ++ T* allocate(std::size_t n) { return std::allocator().allocate(n); } ++ ++ void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } ++ ++ template ++ void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } ++ ++ template ++ bool operator==(const Alloc&) { return true; } ++ ++ template ++ bool operator!=(const Alloc&) { return false; } ++}; ++ ++void ++test03() ++{ ++ std::map, Alloc>> m; ++ m.insert(Z{}); ++ m.insert(Z{}); ++ VERIFY( m.size() == 1 ); ++ m.insert(Z{}); ++ m.insert(Z{1}); ++ VERIFY( m.size() == 2 ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc (.../branches/gcc-7-branch) +@@ -50,18 +50,11 @@ + ios.pword(1) = v; + VERIFY( ios.pword(1) == v ); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + v = ios.pword(max); + } +- catch(exception_type&) ++ catch(std::ios_base::failure&) + { + // Ok. + VERIFY( ios.bad() ); +@@ -80,7 +73,7 @@ + { + v = ios.pword(std::numeric_limits::max()); + } +- catch(exception_type&) ++ catch(std::ios_base::failure&) + { + // Ok. + VERIFY( ios.bad() ); +@@ -99,7 +92,7 @@ + { + l = ios.iword(max); + } +- catch(exception_type&) ++ catch(std::ios_base::failure&) + { + // Ok. + VERIFY( ios.bad() ); +@@ -118,7 +111,7 @@ + { + l = ios.iword(std::numeric_limits::max()); + } +- catch(exception_type&) ++ catch(std::ios_base::failure&) + { + // Ok. + VERIFY( ios.bad() ); +Index: libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,99 @@ ++// Copyright (C) 2018 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 "-D_GLIBCXX_USE_CXX11_ABI=0" } ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++ using std::ios; ++ bool caught_ios_failure = false; ++ bool rethrown = false; ++ bool caught_system_error = false; ++ try { ++ std::ifstream f; ++ f.exceptions(ios::failbit | ios::badbit | ios::eofbit); ++ try { ++ f.get(); ++ } ++ catch (const ios::failure&) // catch as old ABI type ++ { ++ caught_ios_failure = true; ++#if _GLIBCXX_USE_DUAL_ABI || _GLIBCXX_USE_CXX11_ABI == 1 ++ rethrown = true; ++ throw; // re-throw, to catch as new ABI type ++#endif ++ } ++ } ++ catch (const std::system_error& e) ++ { ++ caught_system_error = true; ++ } ++ ++ VERIFY( caught_ios_failure ); ++ if (rethrown) ++ VERIFY( caught_system_error ); ++} ++ ++void ++test02() ++{ ++ using std::ios; ++ const std::exception* p = nullptr; ++ bool caught_ios_failure = false; ++ bool caught_exception = false; ++ try { ++ std::ifstream f; ++ f.exceptions(ios::failbit | ios::badbit | ios::eofbit); ++ try { ++ f.get(); ++ } ++ catch (const std::exception& e1) ++ { ++ caught_exception = true; ++ p = &e1; ++ throw; ++ } ++ } ++ catch (const ios::failure& e2) ++ { ++ caught_ios_failure = true; ++#if _GLIBCXX_USE_DUAL_ABI ++ // If the Dual ABI is active the library throws the new type, ++ // so e1 was an object of that new type and so &e1 != &e2. ++ VERIFY( p != &e2 ); ++#else ++ // Otherwise there's only one type of ios::failure, so &e1 == &e2. ++ VERIFY( p == &e2 ); ++#endif ++ } ++ ++ VERIFY( caught_exception ); ++ VERIFY( caught_ios_failure ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc (.../branches/gcc-7-branch) +@@ -46,13 +46,6 @@ + } + + { +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + std::ios ios_01(0); + std::ios ios_02(0); + ios_01.clear(std::ios_base::eofbit); +@@ -62,7 +55,7 @@ + ios_01.copyfmt(ios_02); + VERIFY( false ); + } +- catch(exception_type&) { ++ catch(std::ios_base::failure&) { + VERIFY( true ); + } + catch(...) { +Index: libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc (.../branches/gcc-7-branch) +@@ -50,13 +50,6 @@ + } + + { +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + std::ios ios_01(0); + ios_01.clear(std::ios_base::eofbit); + try { +@@ -63,7 +56,7 @@ + ios_01.exceptions(std::ios_base::eofbit); + VERIFY( false ); + } +- catch(exception_type&) { ++ catch(std::ios_base::failure&) { + iostate02 = ios_01.exceptions(); + VERIFY( static_cast(iostate02 & std::ios_base::eofbit) ); + } +Index: libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc (.../branches/gcc-7-branch) +@@ -26,19 +26,12 @@ + wistringstream stream; + stream.exceptions(ios_base::eofbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + wistream::sentry sentry(stream, false); + VERIFY( false ); + } +- catch (exception_type&) ++ catch (std::ios_base::failure&) + { + VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) ); + } +Index: libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc (.../branches/gcc-7-branch) +@@ -26,19 +26,12 @@ + istringstream stream; + stream.exceptions(ios_base::eofbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + istream::sentry sentry(stream, false); + VERIFY( false ); + } +- catch (exception_type&) ++ catch (std::ios_base::failure&) + { + VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) ); + } +Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc (.../branches/gcc-7-branch) +@@ -35,19 +35,12 @@ + wistringstream stream; + stream.exceptions(ios_base::failbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + stream >> static_cast(0); + VERIFY( false ); + } +- catch (exception_type&) ++ catch (std::ios_base::failure&) + { + } + +Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc (.../branches/gcc-7-branch) +@@ -35,19 +35,12 @@ + istringstream stream; + stream.exceptions(ios_base::failbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + stream >> static_cast(0); + VERIFY(false); + } +- catch (exception_type&) ++ catch (std::ios_base::failure&) + { + } + +Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc (.../branches/gcc-7-branch) +@@ -27,13 +27,6 @@ + wistringstream stream(L"jaylib - champion sound"); + stream.exceptions(ios_base::failbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + T i; +@@ -40,7 +33,7 @@ + stream >> i; + VERIFY( false ); + } +- catch (const exception_type&) ++ catch (const std::ios_base::failure&) + { + // stream should set failbit and throw ios_base::failure. + VERIFY( stream.fail() ); +Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc (.../branches/gcc-7-branch) +@@ -27,13 +27,6 @@ + istringstream stream("jaylib - champion sound"); + stream.exceptions(ios_base::failbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + T i; +@@ -40,7 +33,7 @@ + stream >> i; + VERIFY( false ); + } +- catch (const exception_type&) ++ catch (const std::ios_base::failure&) + { + // stream should set failbit and throw ios_base::failure. + VERIFY( stream.fail() ); +Index: libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc (.../branches/gcc-7-branch) +@@ -37,19 +37,12 @@ + wostringstream stream; + stream.exceptions(ios_base::badbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + stream << static_cast(0); + VERIFY( false ); + } +- catch (exception_type&) ++ catch (std::ios_base::failure&) + { + } + +Index: libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc (.../branches/gcc-7-branch) +@@ -37,19 +37,12 @@ + ostringstream stream; + stream.exceptions(ios_base::badbit); + +- // The library throws the new definition of std::ios::failure +-#if _GLIBCXX_USE_CXX11_ABI +- typedef std::ios_base::failure exception_type; +-#else +- typedef std::exception exception_type; +-#endif +- + try + { + stream << static_cast(0); + VERIFY( false ); + } +- catch (exception_type&) ++ catch (std::ios_base::failure&) + { + } + +Index: libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,114 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++ const char* name = std::system_category().name(); ++ VERIFY( name == std::string("system") ); ++} ++ ++void ++test02() ++{ ++ const std::error_category& cat = std::system_category(); ++ std::error_condition cond; ++ ++ // As of 2011, ISO C only defines EDOM, EILSEQ and ERANGE: ++ cond = cat.default_error_condition(EDOM); ++ VERIFY( cond.value() == EDOM ); ++ VERIFY( cond == std::errc::argument_out_of_domain ); ++ VERIFY( cond.category() == std::generic_category() ); ++ cond = cat.default_error_condition(EILSEQ); ++ VERIFY( cond.value() == EILSEQ ); ++ VERIFY( cond == std::errc::illegal_byte_sequence ); ++ VERIFY( cond.category() == std::generic_category() ); ++ cond = cat.default_error_condition(ERANGE); ++ VERIFY( cond.value() == ERANGE ); ++ VERIFY( cond == std::errc::result_out_of_range ); ++ VERIFY( cond.category() == std::generic_category() ); ++ ++ // EBADF and EACCES are defined on all targets, ++ // according to config/os/*/error_constants.h ++ cond = cat.default_error_condition(EBADF); ++ VERIFY( cond.value() == EBADF ); ++ VERIFY( cond == std::errc::bad_file_descriptor ); ++ VERIFY( cond.category() == std::generic_category() ); ++ cond = cat.default_error_condition(EACCES); ++ VERIFY( cond.value() == EACCES ); ++ VERIFY( cond == std::errc::permission_denied ); ++ VERIFY( cond.category() == std::generic_category() ); ++ ++ // All POSIX errno values are positive: ++ cond = cat.default_error_condition(-1); ++ VERIFY( cond.value() == -1 ); ++ VERIFY( cond.category() == cat ); ++ cond = cat.default_error_condition(-99); ++ VERIFY( cond.value() == -99 ); ++ VERIFY( cond.category() == cat ); ++ ++ // PR libstdc++/60555 ++ VERIFY( std::error_code(EDOM, cat) == std::errc::argument_out_of_domain ); ++ VERIFY( std::error_code(EILSEQ, cat) == std::errc::illegal_byte_sequence ); ++ VERIFY( std::error_code(ERANGE, cat) == std::errc::result_out_of_range ); ++ VERIFY( std::error_code(EBADF, cat) == std::errc::bad_file_descriptor ); ++ VERIFY( std::error_code(EACCES, cat) == std::errc::permission_denied ); ++ ++ // As shown at https://gcc.gnu.org/ml/libstdc++/2018-08/msg00018.html ++ // these two error codes might have the same value on AIX, but we still ++ // expect both to be matched by system_category and so use generic_category: ++#ifdef EEXIST ++ cond = cat.default_error_condition(EEXIST); ++ VERIFY( cond.value() == EEXIST ); ++ VERIFY( cond == std::errc::file_exists ); ++ VERIFY( cond.category() == std::generic_category() ); ++ VERIFY( std::error_code(EEXIST, cat) == std::errc::file_exists ); ++#endif ++#ifdef ENOTEMPTY ++ cond = cat.default_error_condition(ENOTEMPTY); ++ VERIFY( cond.value() == ENOTEMPTY ); ++ VERIFY( cond == std::errc::directory_not_empty ); ++ VERIFY( cond.category() == std::generic_category() ); ++ VERIFY( std::error_code(ENOTEMPTY, cat) == std::errc::directory_not_empty ); ++#endif ++} ++ ++void ++test03() ++{ ++ // set "C" locale to get expected message ++ auto loc = std::locale::global(std::locale::classic()); ++ ++ std::string msg = std::system_category().message(EBADF); ++ VERIFY( msg.find("file") != std::string::npos ); ++ ++ std::locale::global(loc); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,69 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++ const char* name = std::generic_category().name(); ++ VERIFY( name == std::string("generic") ); ++} ++ ++void ++test02() ++{ ++ const std::error_category& cat = std::generic_category(); ++ std::error_condition cond; ++ ++ cond = cat.default_error_condition(EBADF); ++ VERIFY( cond.value() == EBADF ); ++ VERIFY( cond == std::errc::bad_file_descriptor ); ++ VERIFY( cond.category() == std::generic_category() ); ++ cond = cat.default_error_condition(EACCES); ++ VERIFY( cond.value() == EACCES ); ++ VERIFY( cond == std::errc::permission_denied ); ++ VERIFY( cond.category() == std::generic_category() ); ++ ++ // PR libstdc++/60555 ++ VERIFY( std::error_code(EBADF, cat) == std::errc::bad_file_descriptor ); ++ VERIFY( std::error_code(EACCES, cat) == std::errc::permission_denied ); ++} ++ ++void ++test03() ++{ ++ // set "C" locale to get expected message ++ auto loc = std::locale::global(std::locale::classic()); ++ ++ std::string msg = std::generic_category().message(EBADF); ++ VERIFY( msg.find("file") != std::string::npos ); ++ ++ std::locale::global(loc); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,79 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++// PR libstdc++/87749 ++ ++#include ++#include ++ ++bool oom = false; ++ ++template ++struct alloc ++{ ++ using value_type = T; ++ ++#if !_GLIBCXX_USE_CXX11_ABI ++ using size_type = unsigned long; ++ using difference_type = long; ++ using reference = T&; ++ using const_reference = T&; ++ using pointer = T*; ++ using const_pointer = const T*; ++ template ++ struct rebind { using other = alloc; }; ++#endif ++ ++ int not_empty = 0; // this makes is_always_equal false ++ ++ alloc() = default; ++ template ++ alloc(const alloc&) { } ++ ++ T* allocate(unsigned long n) ++ { ++ if (oom) ++ throw std::bad_alloc(); ++ return std::allocator().allocate(n); ++ } ++ ++ void deallocate(T* p, unsigned long n) ++ { ++ std::allocator().deallocate(p, n); ++ } ++}; ++ ++template ++bool operator==(const alloc&, const alloc&) { return true; } ++ ++template ++bool operator!=(const alloc&, const alloc&) { return false; } ++ ++int main() ++{ ++ using string ++ = std::basic_string, alloc>; ++ ++ string s = L"PR libstdc++/87749 a string that is longer than a short string"; ++ const auto ptr = s.c_str(); ++ oom = true; ++ string ss; ++ ss = std::move(s); // allocators are equal, should not allocate new storage ++ VERIFY( ss.c_str() == ptr ); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2018 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 "-O1" } ++// { dg-do compile { target c++11 } } ++// { dg-final { scan-assembler-not "__throw_length_error" } } ++// { dg-final { scan-assembler-not "__throw_bad_alloc" } } ++ ++#include ++#undef _GLIBCXX_EXTERN_TEMPLATE ++#include ++ ++void ++test01(std::wstring& target, std::wstring&& source) ++{ ++ // The move assignment operator should be simple enough that the compiler ++ // can see that it never results in a length_error or bad_alloc exception ++ // (which would be turned into std::terminate by the noexcept on the ++ // assignment operator). ++ target = std::move(source); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,78 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++// PR libstdc++/87749 ++ ++#include ++#include ++ ++bool oom = false; ++ ++template ++struct alloc ++{ ++ using value_type = T; ++ ++#if !_GLIBCXX_USE_CXX11_ABI ++ using size_type = unsigned long; ++ using difference_type = long; ++ using reference = T&; ++ using const_reference = T&; ++ using pointer = T*; ++ using const_pointer = const T*; ++ template ++ struct rebind { using other = alloc; }; ++#endif ++ ++ int not_empty = 0; // this makes is_always_equal false ++ ++ alloc() = default; ++ template ++ alloc(const alloc&) { } ++ ++ T* allocate(unsigned long n) ++ { ++ if (oom) ++ throw std::bad_alloc(); ++ return std::allocator().allocate(n); ++ } ++ ++ void deallocate(T* p, unsigned long n) ++ { ++ std::allocator().deallocate(p, n); ++ } ++}; ++ ++template ++bool operator==(const alloc&, const alloc&) { return true; } ++ ++template ++bool operator!=(const alloc&, const alloc&) { return false; } ++ ++int main() ++{ ++ using string = std::basic_string, alloc>; ++ ++ string s = "PR libstdc++/87749 a string that is longer than a short string"; ++ const auto ptr = s.c_str(); ++ oom = true; ++ string ss; ++ ss = std::move(s); // allocators are equal, should not allocate new storage ++ VERIFY( ss.c_str() == ptr ); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2018 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 "-O1" } ++// { dg-do compile { target c++11 } } ++// { dg-final { scan-assembler-not "__throw_length_error" } } ++// { dg-final { scan-assembler-not "__throw_bad_alloc" } } ++ ++#include ++#undef _GLIBCXX_EXTERN_TEMPLATE ++#include ++ ++void ++test01(std::string& target, std::string&& source) ++{ ++ // The move assignment operator should be simple enough that the compiler ++ // can see that it never results in a length_error or bad_alloc exception ++ // (which would be turned into std::terminate by the noexcept on the ++ // assignment operator). ++ target = std::move(source); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,37 @@ ++// Copyright (C) 2018 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 run { target c++1z } } ++ ++// PR libstdc++/86169 ++ ++#ifndef _GLIBCXX_USE_CXX11_ABI ++# define _GLIBCXX_USE_CXX11_ABI 0 ++#endif ++ ++#include ++#include ++ ++int main() ++{ ++ const std::string s0{"hello world"}; ++ std::string s1 {s0}; ++ char* p = s1.data(); ++ *p = ' '; ++ VERIFY(s0.compare("hello world") == 0); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc (.../branches/gcc-7-branch) +@@ -17,6 +17,7 @@ + // + + // { dg-do run { target c++11 } } ++// { dg-require-effective-target cxx11-abi } + + #include + #include +Index: libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++// Copyright (C) 2018 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++1z } } ++// { dg-final { scan-assembler-not "_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE:" } } ++ ++#undef _GLIBCXX_USE_CXX11_ABI ++#define _GLIBCXX_USE_CXX11_ABI 0 ++#include ++ ++void ++test01(std::wstring* s) ++{ ++ s->~basic_string(); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++// Copyright (C) 2018 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++1z } } ++// { dg-final { scan-assembler-not "_ZNSs4_Rep20_S_empty_rep_storageE:" } } ++ ++#undef _GLIBCXX_USE_CXX11_ABI ++#define _GLIBCXX_USE_CXX11_ABI 0 ++#include ++ ++void ++test01(std::string* s) ++{ ++ s->~basic_string(); ++} +Index: libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,45 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // PR libstdc++/84087 ++ ++ std::string s0 = "string"; ++ std::string s; ++ s.append(s0, 2); ++ VERIFY( s == "ring" ); ++ s.assign(s0, 3); ++ VERIFY( s == "ing" ); ++ s.insert(2, s0, 4); ++ VERIFY( s == "inngg" ); ++ s.replace(2, 3, s0, 2); ++ VERIFY( s == "inring" ); ++ VERIFY( s.compare(2, 4, s0, 2) == 0 ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,40 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++// { dg-additional-options "-ffloat-store" { target { m68*-*-* || ia32 } } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ std::default_random_engine r1, r2; ++ using chi = std::chi_squared_distribution; ++ chi::param_type p(5); ++ chi d1(p); ++ chi d2; ++ d2.param(p); ++ VERIFY( d1(r1) == d2(r2) ); // PR libstdc++/83833 ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/26_numerics/valarray/87641.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,75 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // PR libstdc++/87641 ++ std::valarray v1(3); ++ v1[0] = 1; ++ v1[1] = 2; ++ v1[2] = 3; ++ std::valarray< std::valarray > v2(v1, 3); ++ std::valarray v3 = v2.sum(); ++ VERIFY( v3.size() == v1.size() ); ++ VERIFY( v3[0] == 3 ); ++ VERIFY( v3[1] == 6 ); ++ VERIFY( v3[2] == 9 ); ++} ++ ++struct X ++{ ++ X() : val(1) { } ++ ++ X& operator+=(const X& x) { val += x.val; return *this; } ++ bool operator==(const X& x) { return val == x.val; } ++ ++ int val; ++}; ++ ++void ++test02() ++{ ++ std::valarray v1(1); ++ VERIFY( v1.sum() == v1[0] ); ++ ++ std::valarray v2(2); ++ VERIFY( v2.sum().val == 2 ); ++} ++ ++struct Y ++{ ++ X& operator+=(const Y&) { throw 1; } ++}; ++ ++void ++test03() ++{ ++ std::valarray v1(1); ++ (void) v1.sum(); // no addition performed for a single element ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc (.../branches/gcc-7-branch) +@@ -25,5 +25,5 @@ + using std::experimental::any_cast; + + const any y(1); +- any_cast(y); // { dg-error "qualifiers" "" { target { *-*-* } } 359 } ++ any_cast(y); // { dg-error "qualifiers" "" { target { *-*-* } } 357 } + } +Index: libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc (.../branches/gcc-7-branch) +@@ -25,10 +25,10 @@ + using std::experimental::propagate_const; + using std::unique_ptr; + +-// { dg-error "no type" "" { target *-*-* } 120 } +-// { dg-error "no type" "" { target *-*-* } 127 } +-// { dg-error "no type" "" { target *-*-* } 136 } +-// { dg-error "no type" "" { target *-*-* } 145 } ++// { dg-error "no type" "" { target *-*-* } 118 } ++// { dg-error "no type" "" { target *-*-* } 125 } ++// { dg-error "no type" "" { target *-*-* } 134 } ++// { dg-error "no type" "" { target *-*-* } 143 } + + int main() + { +Index: libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc (.../branches/gcc-7-branch) +@@ -25,7 +25,7 @@ + using std::experimental::propagate_const; + using std::unique_ptr; + +-// { dg-error "no type" "" { target *-*-* } 162 } ++// { dg-error "no type" "" { target *-*-* } 160 } + + int main() + { +Index: libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc (.../branches/gcc-7-branch) +@@ -21,9 +21,9 @@ + + using std::experimental::propagate_const; + +-// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 } +-// { dg-error "not a pointer-to-object type" "" { target *-*-* } 68 } +-// { dg-error "forming pointer to reference type" "" { target *-*-* } 189 } +-// { dg-error "forming pointer to reference type" "" { target *-*-* } 215 } ++// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 } ++// { dg-error "not a pointer-to-object type" "" { target *-*-* } 66 } ++// { dg-error "forming pointer to reference type" "" { target *-*-* } 187 } ++// { dg-error "forming pointer to reference type" "" { target *-*-* } 213 } + + propagate_const test1; +Index: libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc (.../branches/gcc-7-branch) +@@ -21,6 +21,6 @@ + + using std::experimental::propagate_const; + +-// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 } ++// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 } + + propagate_const test1; +Index: libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc (.../branches/gcc-7-branch) +@@ -21,8 +21,8 @@ + + using std::experimental::propagate_const; + +-// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 } +-// { dg-error "invalid type" "" { target *-*-* } 68 } +-// { dg-error "uninitialized reference member" "" { target *-*-* } 114 } ++// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 } ++// { dg-error "invalid type" "" { target *-*-* } 66 } ++// { dg-error "uninitialized reference member" "" { target *-*-* } 112 } + + propagate_const test1; // { dg-error "use of deleted function" } +Index: libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc (.../branches/gcc-7-branch) +@@ -21,6 +21,6 @@ + + using std::experimental::propagate_const; + +-// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 } ++// { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 } + + propagate_const test1; +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++ ++static_assert(std::is_same, ++ std::list>>::value, ++ "pmr::list"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Cmp { bool operator()(X, X) const { return false; } }; ++ ++static_assert(std::is_same, ++ std::set, xpmr::polymorphic_allocator>>::value, ++ "pmr::set"); ++static_assert(std::is_same, ++ std::set>>::value, ++ "pmr::set"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,50 @@ ++// Copyright (C) 2018 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 } } ++// { dg-require-effective-target cxx11-abi } ++ ++#include ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X; ++static_assert(std::is_same, ++ std::match_results>>>::value, ++ "pmr::match_results"); ++ ++static_assert(std::is_same>>>::value, ++ "pmr::cmatch"); ++static_assert(std::is_same>>>::value, ++ "pmr::smatch"); ++#ifdef _GLIBCXX_USE_WCHAR_T ++static_assert(std::is_same>>>::value, ++ "pmr::wcmatch"); ++static_assert(std::is_same>>>::value, ++ "pmr::wsmatch"); ++#endif +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Y { }; ++struct Cmp { bool operator()(X, X) const { return false; } }; ++ ++static_assert(std::is_same, ++ std::map, ++ xpmr::polymorphic_allocator>>>::value, ++ "pmr::map"); ++static_assert(std::is_same, ++ std::map>>>::value, ++ "pmr::map"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Hash { std::size_t operator()(X) const { return 0; } }; ++struct Eq { bool operator()(X, X) const { return true; } }; ++ ++static_assert(std::is_same, ++ std::unordered_multiset, std::equal_to, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::unordered_multiset"); ++static_assert(std::is_same, ++ std::unordered_multiset, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::unordered_multiset"); ++static_assert(std::is_same, ++ std::unordered_multiset>>::value, ++ "pmr::unordered_multiset"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++ ++static_assert(std::is_same, ++ std::forward_list>>::value, ++ "pmr::forward_list"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,40 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Y { }; ++struct Hash { std::size_t operator()(X) const { return 0; } }; ++struct Eq { bool operator()(X, X) const { return true; } }; ++ ++static_assert(std::is_same, ++ std::unordered_multimap, std::equal_to, ++ xpmr::polymorphic_allocator>>>::value, ++ "pmr::unordered_multimap"); ++static_assert(std::is_same, ++ std::unordered_multimap, ++ xpmr::polymorphic_allocator>>>::value, ++ "pmr::unordered_multimap"); ++static_assert(std::is_same, ++ std::unordered_multimap>>>::value, ++ "pmr::unordered_multimap"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Hash { std::size_t operator()(X) const { return 0; } }; ++struct Eq { bool operator()(X, X) const { return true; } }; ++ ++static_assert(std::is_same, ++ std::unordered_set, std::equal_to, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::unordered_set"); ++static_assert(std::is_same, ++ std::unordered_set, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::unordered_set"); ++static_assert(std::is_same, ++ std::unordered_set>>::value, ++ "pmr::unordered_set"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++ ++static_assert(std::is_same, ++ std::vector>>::value, ++ "pmr::vector"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++ ++static_assert(std::is_same, ++ std::deque>>::value, ++ "pmr::deque"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,40 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Y { }; ++struct Hash { std::size_t operator()(X) const { return 0; } }; ++struct Eq { bool operator()(X, X) const { return true; } }; ++ ++static_assert(std::is_same, ++ std::unordered_map, std::equal_to, ++ xpmr::polymorphic_allocator>>>::value, ++ "pmr::unordered_map"); ++static_assert(std::is_same, ++ std::unordered_map, ++ xpmr::polymorphic_allocator>>>::value, ++ "pmr::unordered_map"); ++static_assert(std::is_same, ++ std::unordered_map>>>::value, ++ "pmr::unordered_map"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Cmp { bool operator()(X, X) const { return false; } }; ++ ++static_assert(std::is_same, ++ std::multiset, xpmr::polymorphic_allocator>>::value, ++ "pmr::multiset"); ++static_assert(std::is_same, ++ std::multiset>>::value, ++ "pmr::multiset"); +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,61 @@ ++// Copyright (C) 2018 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 } } ++// { dg-require-effective-target cxx11-abi } ++ ++#include ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct T : std::char_traits { }; ++ ++static_assert(std::is_same, ++ std::basic_string, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::basic_string"); ++static_assert(std::is_same, ++ std::basic_string>>::value, ++ "pmr::basic_string"); ++ ++static_assert(std::is_same, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::string"); ++static_assert(std::is_same, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::u16string"); ++static_assert(std::is_same, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::u32string"); ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++static_assert(std::is_same, ++ std::basic_string, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::basic_string"); ++static_assert(std::is_same, ++ std::basic_string>>::value, ++ "pmr::basic_string"); ++ ++static_assert(std::is_same, ++ xpmr::polymorphic_allocator>>::value, ++ "pmr::wstring"); ++#endif +Index: libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2018 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 ++ ++namespace xpmr = std::experimental::pmr; ++ ++struct X { }; ++struct Y { }; ++struct Cmp { bool operator()(X, X) const { return false; } }; ++ ++static_assert(std::is_same, ++ std::multimap, ++ xpmr::polymorphic_allocator>>>::value, ++ "pmr::multimap"); ++static_assert(std::is_same, ++ std::multimap>>>::value, ++ "pmr::multimap"); +Index: libstdc++-v3/testsuite/experimental/memory_resource/70966.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/memory_resource/70966.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/memory_resource/70966.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,56 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++14 } } ++ ++#include ++ ++namespace pmr = std::experimental::pmr; ++ ++struct X ++{ ++ pmr::memory_resource* res = nullptr; ++ void* ptr = nullptr; ++ static constexpr std::size_t n = 64; ++ ++ constexpr X() { } ++ ++ explicit ++ X(pmr::memory_resource* r) : res(r), ptr(r->allocate(n)) { } ++ ++ ~X() { if (ptr) res->deallocate(ptr, n); } ++}; ++ ++void ++swap(X& lhs, X& rhs) { ++ std::swap(lhs.res, rhs.res); ++ std::swap(lhs.ptr, rhs.ptr); ++} ++ ++void ++test01() ++{ ++ static X x1; ++ X x2(pmr::new_delete_resource()); ++ swap(x1, x2); ++ // Now x1 will deallocate the memory during destruction of static objects. ++} ++ ++int main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc (.../branches/gcc-7-branch) +@@ -1,4 +1,5 @@ + // { dg-do run { target c++14 } } ++// { dg-xfail-run-if "PR libstdc++/77691" { { i?86-*-solaris2.* x86_64-*-solaris2.* } && ilp32 } } + + // Copyright (C) 2016-2017 Free Software Foundation, Inc. + // +Index: libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,57 @@ ++// Copyright (C) 2017-2018 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 "" } ++ ++// 30.10.14.3 Permissions [fs.op.space] ++ ++#include ++#include ++#include ++ ++namespace fs = std::experimental::filesystem; ++ ++void ++test01() ++{ ++ fs::space_info s = fs::space("/"); ++ std::error_code ec = make_error_code(std::errc::invalid_argument); ++ s = fs::space("/", ec); ++ VERIFY( !ec ); ++ ++ s = fs::space(__gnu_test::nonexistent_path(), ec); ++ VERIFY( ec ); ++ VERIFY( s.capacity == static_cast(-1) ); ++ VERIFY( s.free == static_cast(-1) ); ++ VERIFY( s.available == static_cast(-1) ); ++} ++ ++void ++test02() ++{ ++ fs::space_info s = fs::space("."); ++ VERIFY( s.capacity >= s.free ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/experimental/functional/87538.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/functional/87538.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/functional/87538.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,48 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++14 } } ++ ++#include ++#include ++ ++struct N { ++ int operator()(int i) { if (i == 0) throw -1; return i; } ++}; ++ ++void ++test01() ++{ ++ N n; ++ auto not_n = std::experimental::not_fn(n); ++ static_assert( !noexcept(not_n(1)), "can throw" ); ++ VERIFY(not_n(1) == 0); ++ int exception = 0; ++ try { ++ not_n(0); ++ } ++ catch (int e) { ++ exception = e; ++ } ++ VERIFY(exception == -1); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/experimental/array/neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/array/neg.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/array/neg.cc (.../branches/gcc-7-branch) +@@ -24,5 +24,5 @@ + { + int dummy; + auto bad = std::experimental::make_array(std::ref(dummy)); +- // { dg-error "explicit target type" "" { target *-*-* } 78 } ++ // { dg-error "explicit target type" "" { target *-*-* } 76 } + } +Index: libstdc++-v3/testsuite/util/testsuite_allocator.h +=================================================================== +--- a/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../branches/gcc-7-branch) +@@ -570,6 +570,8 @@ + + explicit PointerBase(T* p = nullptr) : value(p) { } + ++ PointerBase(std::nullptr_t) : value(nullptr) { } ++ + template(std::declval()))> + PointerBase(const PointerBase& p) : value(p.value) { } +@@ -603,7 +605,11 @@ + } + + private: +- Derived& derived() { return static_cast(*this); } ++ Derived& ++ derived() { return static_cast(*this); } ++ ++ const Derived& ++ derived() const { return static_cast(*this); } + }; + + template +Index: libstdc++-v3/testsuite/20_util/duration/literals/range.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/duration/literals/range.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/duration/literals/range.cc (.../branches/gcc-7-branch) +@@ -1,31 +0,0 @@ +-// { dg-do compile { target c++14 } } +- +-// Copyright (C) 2014-2017 Free Software Foundation, Inc. +-// +-// This file is part of the GNU ISO C++ Library. This library is free +-// software; you can redistribute it and/or modify it under the +-// terms of the GNU General Public License as published by the +-// Free Software Foundation; either version 3, or (at your option) +-// any later version. +- +-// This library is distributed in the hope that it will be useful, +-// but WITHOUT ANY WARRANTY; without even the implied warranty of +-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-// GNU General Public License for more details. +- +-// You should have received a copy of the GNU General Public License along +-// with this library; see the file COPYING3. If not see +-// . +- +-#include +- +-void +-test01() +-{ +- using namespace std::literals::chrono_literals; +- +- // std::numeric_limits::max() == 9223372036854775807; +- auto h = 9223372036854775808h; +- // { dg-error "cannot be represented" "" { target *-*-* } 893 } +-} +-// { dg-prune-output "in constexpr expansion" } // needed for -O0 +Index: libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,31 @@ ++// { dg-do compile { target c++14 } } ++ ++// Copyright (C) 2014-2017 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++ ++void ++test01() ++{ ++ using namespace std::literals::chrono_literals; ++ ++ // std::numeric_limits::max() == 9223372036854775807; ++ auto h = 9223372036854775808h; ++ // { dg-error "cannot be represented" "" { target *-*-* } 899 } ++} ++// { dg-prune-output "in constexpr expansion" } // needed for -O0 +Index: libstdc++-v3/testsuite/20_util/duration/literals/84671.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/duration/literals/84671.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/duration/literals/84671.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// Copyright (C) 2018 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 ++ ++// PR libstdc++/84671 ++using namespace std::literals::chrono_literals; ++constexpr auto ns_ok = 12113ns; ++constexpr auto ns_fail = 12'11'3ns; ++static_assert(ns_ok == ns_fail, "digit separators work in duration literals"); +Index: libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++struct X { operator int64_t() /* not const */; }; ++static_assert(!std::is_constructible::value, ++ "LWG 3050"); +Index: libstdc++-v3/testsuite/20_util/pair/ref_assign.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/pair/ref_assign.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/pair/ref_assign.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,74 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ typedef std::pair pair_type; ++ int i = 1; ++ int j = 2; ++ pair_type p(i, 3); ++ const pair_type q(j, 4); ++ p = q; ++ VERIFY( p.first == q.first ); ++ VERIFY( p.second == q.second ); ++ VERIFY( i == j ); ++} ++ ++void ++test02() ++{ ++ typedef std::pair pair_type; ++ int i = 1; ++ int j = 2; ++ pair_type p(3, i); ++ const pair_type q(4, j); ++ p = q; ++ VERIFY( p.first == q.first ); ++ VERIFY( p.second == q.second ); ++ VERIFY( i == j ); ++} ++ ++void ++test03() ++{ ++ typedef std::pair pair_type; ++ int i = 1; ++ int j = 2; ++ int k = 3; ++ int l = 4; ++ pair_type p(i, j); ++ const pair_type q(k, l); ++ p = q; ++ VERIFY( p.first == q.first ); ++ VERIFY( p.second == q.second ); ++ VERIFY( i == k ); ++ VERIFY( j == l ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/20_util/pair/87822.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/pair/87822.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/pair/87822.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,64 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++#include ++ ++void ++test01() ++{ ++ std::pair, int> p; ++#if __cplusplus >= 201103L ++ static_assert(sizeof(p) == (3 * sizeof(int)), "PR libstdc++/87822"); ++#endif ++ VERIFY( (void*)&p == (void*)&p.first ); ++ VERIFY( (void*)&p == (void*)&p.first.first ); ++} ++ ++struct empty { }; ++ ++void ++test02() ++{ ++ std::pair, empty> p; ++#if __cplusplus >= 201103L ++ static_assert(sizeof(p) == (3 * sizeof(empty)), "PR libstdc++/87822"); ++#endif ++ VERIFY( (void*)&p == (void*)&p.first ); ++} ++ ++void ++test03() ++{ ++ typedef std::pair int_pair; ++ typedef std::pair int_pair_pair; ++ std::pair p; ++#if __cplusplus >= 201103L ++ static_assert(sizeof(int_pair_pair) == (2 * sizeof(int_pair)), "nested"); ++ static_assert(sizeof(p) == (2 * sizeof(int_pair_pair)), "nested again"); ++#endif ++ VERIFY( (void*)&p == (void*)&p.first ); ++ VERIFY( (void*)&p == (void*)&p.first.first ); ++ VERIFY( (void*)&p == (void*)&p.first.first.first ); ++} ++ ++int main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/20_util/pair/86751.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/pair/86751.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/pair/86751.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,33 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++struct X { ++ template operator T() const; ++}; ++ ++ ++void ++test01() ++{ ++ std::pair p; ++ X x; ++ p = x; // PR libstdc++/86751 ++} +Index: libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,74 @@ ++// Copyright (C) 2018 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 run { target c++1z } } ++ ++#include ++#include ++#include ++ ++struct E : std::bad_alloc { }; ++ ++struct X ++{ ++ X() = default; ++ X(std::initializer_list) { } ++ ++ // Prevents small-object optimization: ++ X(const X&) noexcept(false) { } ++ ++ static void* operator new(std::size_t) { throw E{}; } ++ static void operator delete(void*, std::size_t) noexcept { } ++}; ++ ++void ++test01() ++{ ++ std::any a; ++ try ++ { ++ a.emplace(); ++ VERIFY(false); ++ } ++ catch (const E&) ++ { ++ VERIFY( !a.has_value() ); ++ } ++} ++ ++void ++test02() ++{ ++ std::any a; ++ try ++ { ++ a.emplace(std::initializer_list{}); ++ VERIFY(false); ++ } ++ catch (const E&) ++ { ++ VERIFY( !a.has_value() ); ++ } ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc (.../branches/gcc-7-branch) +@@ -26,5 +26,5 @@ + using std::any_cast; + + const any y(1); +- any_cast(y); // { dg-error "invalid static_cast" "" { target { *-*-* } } 461 } ++ any_cast(y); // { dg-error "invalid static_cast" "" { target { *-*-* } } 460 } + } +Index: libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++struct Incomplete; ++ ++void f(void** p) ++{ ++ ::new (p[0]) std::unique_ptr(); ++ ::new (p[1]) std::unique_ptr(); ++ ++ // PR libstdc++/87704 ++ ::new (p[2]) std::unique_ptr(nullptr); ++ ::new (p[3]) std::unique_ptr(nullptr); ++} +Index: libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,49 @@ ++// Copyright (C) 2018 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 run { target c++1z } } ++ ++#include ++#include ++ ++struct N { ++ int operator()(int i) { if (i == 0) throw -1; return i; } ++}; ++ ++void ++test01() ++{ ++ N n; ++ auto not_n = std::not_fn(n); ++ static_assert( !noexcept(not_n(1)) ); ++ VERIFY(not_n(1) == 0); ++ int exception = 0; ++ try { ++ not_n(0); ++ } ++ catch (int e) { ++ exception = e; ++ } ++ VERIFY(exception == -1); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc (.../branches/gcc-7-branch) +@@ -108,3 +108,17 @@ + static_assert(test_category(false), ""); + } ++ ++void ++test02() ++{ ++ using std::has_unique_object_representations; ++ using std::has_unique_object_representations_v; ++ ++ static_assert(has_unique_object_representations_v ++ == has_unique_object_representations::value); ++ static_assert(has_unique_object_representations_v ++ == has_unique_object_representations::value); ++ static_assert(has_unique_object_representations_v ++ == has_unique_object_representations::value); ++} +Index: libstdc++-v3/crossconfig.m4 +=================================================================== +--- a/src/libstdc++-v3/crossconfig.m4 (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/crossconfig.m4 (.../branches/gcc-7-branch) +@@ -133,6 +133,7 @@ + AC_DEFINE(HAVE_ISNANL) + fi + AC_CHECK_FUNCS(__cxa_thread_atexit) ++ AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) + ;; + + *-fuchsia*) +@@ -197,6 +198,7 @@ + GLIBCXX_CHECK_LINKER_FEATURES + GLIBCXX_CHECK_MATH_SUPPORT + GLIBCXX_CHECK_STDLIB_SUPPORT ++ AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) + ;; + *-netbsd*) + SECTION_FLAGS='-ffunction-sections -fdata-sections' +@@ -215,6 +217,7 @@ + AC_DEFINE(HAVE_ISINFL) + AC_DEFINE(HAVE_ISNANL) + fi ++ AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc) + ;; + *-qnx6.1* | *-qnx6.2*) + SECTION_FLAGS='-ffunction-sections -fdata-sections' +Index: libstdc++-v3/config.h.in +=================================================================== +--- a/src/libstdc++-v3/config.h.in (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/config.h.in (.../branches/gcc-7-branch) +@@ -912,9 +912,6 @@ + /* Define if fchmodat is available in . */ + #undef _GLIBCXX_USE_FCHMODAT + +-/* Define if __float128 is supported on this host. */ +-#undef _GLIBCXX_USE_FLOAT128 +- + /* Defined if gettimeofday is available. */ + #undef _GLIBCXX_USE_GETTIMEOFDAY + +Index: libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (.../branches/gcc-7-branch) +@@ -4004,6 +4004,7 @@ + OBJECT:0:GLIBCXX_3.4.21 + OBJECT:0:GLIBCXX_3.4.22 + OBJECT:0:GLIBCXX_3.4.23 ++OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/acinclude.m4 +=================================================================== +--- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-7-branch) +@@ -3062,7 +3062,7 @@ + dnl + dnl Defines: + dnl _GLIBCXX_USE_INT128 +-dnl _GLIBCXX_USE_FLOAT128 ++dnl ENABLE_FLOAT128 + dnl + AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [ + +@@ -3117,13 +3117,12 @@ + + AC_MSG_CHECKING([for __float128]) + if AC_TRY_EVAL(ac_compile); then +- AC_DEFINE(_GLIBCXX_USE_FLOAT128, 1, +- [Define if __float128 is supported on this host.]) + enable_float128=yes + else + enable_float128=no + fi + AC_MSG_RESULT($enable_float128) ++ GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes) + rm -f conftest* + + AC_LANG_RESTORE +Index: ChangeLog +=================================================================== +--- a/src/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libatomic/configure +=================================================================== +--- a/src/libatomic/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libatomic/configure (.../branches/gcc-7-branch) +@@ -12333,6 +12333,7 @@ + + + ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 2" >&5 + $as_echo_n "checking for __atomic_load/store for size 2... " >&6; } + if test "${libat_cv_have_at_ldst_2+set}" = set; then : +@@ -12400,6 +12401,7 @@ + + + ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 4" >&5 + $as_echo_n "checking for __atomic_load/store for size 4... " >&6; } + if test "${libat_cv_have_at_ldst_4+set}" = set; then : +@@ -12467,6 +12469,7 @@ + + + ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 8" >&5 + $as_echo_n "checking for __atomic_load/store for size 8... " >&6; } + if test "${libat_cv_have_at_ldst_8+set}" = set; then : +@@ -12534,6 +12537,7 @@ + + + ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 16" >&5 + $as_echo_n "checking for __atomic_load/store for size 16... " >&6; } + if test "${libat_cv_have_at_ldst_16+set}" = set; then : +@@ -12602,6 +12606,7 @@ + + + ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_test_and_set for size 1" >&5 + $as_echo_n "checking for __atomic_test_and_set for size 1... " >&6; } + if test "${libat_cv_have_at_tas_1+set}" = set; then : +@@ -15267,7 +15272,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libatomic/configure.tgt +=================================================================== +--- a/src/libatomic/configure.tgt (.../tags/gcc_7_3_0_release) ++++ b/src/libatomic/configure.tgt (.../branches/gcc-7-branch) +@@ -114,6 +114,11 @@ + config_path="${config_path} linux/arm posix" + ;; + ++ s390*-*-linux*) ++ # OS support for atomic primitives. ++ config_path="${config_path} s390 posix" ++ ;; ++ + *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu \ + | *-*-netbsd* | *-*-freebsd* | *-*-openbsd* | *-*-dragonfly* \ + | *-*-solaris2* | *-*-sysv4* | *-*-irix6* | *-*-osf* | *-*-hpux11* \ +Index: libatomic/ChangeLog +=================================================================== +--- a/src/libatomic/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libatomic/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,19 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ ++2018-03-09 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-03-09 Andreas Krebbel ++ ++ * config/s390/exch_n.c: New file. ++ * configure.tgt: Add the config directory for s390. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libatomic/config/s390/exch_n.c +=================================================================== +--- a/src/libatomic/config/s390/exch_n.c (.../tags/gcc_7_3_0_release) ++++ b/src/libatomic/config/s390/exch_n.c (.../branches/gcc-7-branch) +@@ -0,0 +1,69 @@ ++/* Copyright (C) 2018 Free Software Foundation, Inc. ++ Contributed by Andreas Krebbel ++ ++ This file is part of the GNU Atomic Library (libatomic). ++ ++ Libatomic 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. ++ ++ Libatomic is distributed in the hope that 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 ++ ++ ++/* The compiler builtin will use the hardware instruction cdsg if the ++ memory operand is properly aligned and will fall back to the ++ library call otherwise. ++ ++ In case the compiler for one part is able to detect that the ++ location is aligned and fails to do so for another usage of the hw ++ instruction and the sw fall back would be mixed on the same memory ++ location. To avoid this the library fall back also has to use the ++ hardware instruction if possible. */ ++ ++#if !DONE && N == 16 ++UTYPE ++SIZE(libat_exchange) (UTYPE *mptr, UTYPE newval, int smodel UNUSED) ++{ ++ if (!((uintptr_t)mptr & 0xf)) ++ { ++ /* Use the builtin only if the memory operand is 16 byte ++ aligned. */ ++ return __atomic_exchange_n ((UTYPE *)__builtin_assume_aligned (mptr, 16), ++ newval, __ATOMIC_SEQ_CST); ++ } ++ else ++ { ++ UTYPE oldval; ++ UWORD magic; ++ ++ pre_seq_barrier (smodel); ++ magic = protect_start (mptr); ++ ++ oldval = *mptr; ++ *mptr = newval; ++ ++ protect_end (mptr, magic); ++ post_seq_barrier (smodel); ++ ++ return oldval; ++ } ++} ++#define DONE 1 ++#endif /* N == 16 */ ++ ++#include "../../exch_n.c" +Index: config/ChangeLog +=================================================================== +--- a/src/config/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/config/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * acx.m4 (GCC_BASE_VER): Remove \$\$ from sed expression. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: config/acx.m4 +=================================================================== +--- a/src/config/acx.m4 (.../tags/gcc_7_3_0_release) ++++ b/src/config/acx.m4 (.../branches/gcc-7-branch) +@@ -246,7 +246,7 @@ + [AS_HELP_STRING([--with-gcc-major-version-only], [use only GCC major number in filesystem paths])], + [if test x$with_gcc_major_version_only = xyes ; then + changequote(,)dnl +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + changequote([,])dnl + fi + ]) +Index: configure +=================================================================== +--- a/src/configure (.../tags/gcc_7_3_0_release) ++++ b/src/configure (.../branches/gcc-7-branch) +@@ -6620,7 +6620,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libgcc/ChangeLog +=================================================================== +--- a/src/libgcc/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,69 @@ ++2018-08-17 John David Anglin ++ ++ Backport from mainline ++ 2018-08-11 John David Anglin ++ ++ * config/pa/linux-atomic.c: Update comment. ++ (FETCH_AND_OP_2, OP_AND_FETCH_2, FETCH_AND_OP_WORD, OP_AND_FETCH_WORD, ++ COMPARE_AND_SWAP_2, __sync_val_compare_and_swap_4, ++ SYNC_LOCK_TEST_AND_SET_2, __sync_lock_test_and_set_4): Use ++ __ATOMIC_RELAXED for atomic loads. ++ (SYNC_LOCK_RELEASE_1): New define. Use __sync_synchronize() and ++ unordered store to release lock. ++ (__sync_lock_release_8): Likewise. ++ (SYNC_LOCK_RELEASE_2): Remove define. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ ++2018-06-22 Andre Vieira ++ ++ Backport from mainline ++ 2018-05-17 Jerome Lambourg ++ ++ * config/arm/cmse.c (cmse_check_address_range): Replace ++ UINTPTR_MAX with __UINTPTR_MAX__ and uintptr_t with __UINTPTR_TYPE__. ++ ++2018-04-02 H.J. Lu ++ ++ Backport from mainline ++ 2018-03-29 H.J. Lu ++ ++ PR target/85100 ++ * config/i386/cpuinfo.c (XCR_XFEATURE_ENABLED_MASK): New. ++ (XSTATE_FP): Likewise. ++ (XSTATE_SSE): Likewise. ++ (XSTATE_YMM): Likewise. ++ (XSTATE_OPMASK): Likewise. ++ (XSTATE_ZMM): Likewise. ++ (XSTATE_HI_ZMM): Likewise. ++ (XCR_AVX_ENABLED_MASK): Likewise. ++ (XCR_AVX512F_ENABLED_MASK): Likewise. ++ (get_available_features): Enable AVX and AVX512 features only ++ if their states are supported by OSXSAVE. ++ ++2018-03-11 John David Anglin ++ ++ Backport from mainline ++ 2018-03-06 John David Anglin ++ ++ * config/pa/fptr.c (_dl_read_access_allowed): New. ++ (__canonicalize_funcptr_for_compare): Use it. ++ ++2018-02-20 Max Filippov ++ ++ Backport from mainline ++ 2018-02-20 Max Filippov ++ ++ * config/xtensa/ieee754-df.S (__adddf3_aux): Add ++ .literal_position directive. ++ * config/xtensa/ieee754-sf.S (__addsf3_aux): Likewise. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libgcc/config/i386/cpuinfo.c +=================================================================== +--- a/src/libgcc/config/i386/cpuinfo.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/config/i386/cpuinfo.c (.../branches/gcc-7-branch) +@@ -220,6 +220,40 @@ + + unsigned int features = 0; + ++ /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv. */ ++#define XCR_XFEATURE_ENABLED_MASK 0x0 ++#define XSTATE_FP 0x1 ++#define XSTATE_SSE 0x2 ++#define XSTATE_YMM 0x4 ++#define XSTATE_OPMASK 0x20 ++#define XSTATE_ZMM 0x40 ++#define XSTATE_HI_ZMM 0x80 ++ ++#define XCR_AVX_ENABLED_MASK \ ++ (XSTATE_SSE | XSTATE_YMM) ++#define XCR_AVX512F_ENABLED_MASK \ ++ (XSTATE_SSE | XSTATE_YMM | XSTATE_OPMASK | XSTATE_ZMM | XSTATE_HI_ZMM) ++ ++ /* Check if AVX and AVX512 are usable. */ ++ int avx_usable = 0; ++ int avx512_usable = 0; ++ if ((ecx & bit_OSXSAVE)) ++ { ++ /* Check if XMM, YMM, OPMASK, upper 256 bits of ZMM0-ZMM15 and ++ ZMM16-ZMM31 states are supported by OSXSAVE. */ ++ unsigned int xcrlow; ++ unsigned int xcrhigh; ++ asm (".byte 0x0f, 0x01, 0xd0" ++ : "=a" (xcrlow), "=d" (xcrhigh) ++ : "c" (XCR_XFEATURE_ENABLED_MASK)); ++ if ((xcrlow & XCR_AVX_ENABLED_MASK) == XCR_AVX_ENABLED_MASK) ++ { ++ avx_usable = 1; ++ avx512_usable = ((xcrlow & XCR_AVX512F_ENABLED_MASK) ++ == XCR_AVX512F_ENABLED_MASK); ++ } ++ } ++ + if (edx & bit_CMOV) + features |= (1 << FEATURE_CMOV); + if (edx & bit_MMX) +@@ -242,10 +276,13 @@ + features |= (1 << FEATURE_SSE4_1); + if (ecx & bit_SSE4_2) + features |= (1 << FEATURE_SSE4_2); +- if (ecx & bit_AVX) +- features |= (1 << FEATURE_AVX); +- if (ecx & bit_FMA) +- features |= (1 << FEATURE_FMA); ++ if (avx_usable) ++ { ++ if (ecx & bit_AVX) ++ features |= (1 << FEATURE_AVX); ++ if (ecx & bit_FMA) ++ features |= (1 << FEATURE_FMA); ++ } + + /* Get Advanced Features at level 7 (eax = 7, ecx = 0). */ + if (max_cpuid_level >= 7) +@@ -253,34 +290,40 @@ + __cpuid_count (7, 0, eax, ebx, ecx, edx); + if (ebx & bit_BMI) + features |= (1 << FEATURE_BMI); +- if (ebx & bit_AVX2) +- features |= (1 << FEATURE_AVX2); ++ if (avx_usable) ++ { ++ if (ebx & bit_AVX2) ++ features |= (1 << FEATURE_AVX2); ++ } + if (ebx & bit_BMI2) + features |= (1 << FEATURE_BMI2); +- if (ebx & bit_AVX512F) +- features |= (1 << FEATURE_AVX512F); +- if (ebx & bit_AVX512VL) +- features |= (1 << FEATURE_AVX512VL); +- if (ebx & bit_AVX512BW) +- features |= (1 << FEATURE_AVX512BW); +- if (ebx & bit_AVX512DQ) +- features |= (1 << FEATURE_AVX512DQ); +- if (ebx & bit_AVX512CD) +- features |= (1 << FEATURE_AVX512CD); +- if (ebx & bit_AVX512PF) +- features |= (1 << FEATURE_AVX512PF); +- if (ebx & bit_AVX512ER) +- features |= (1 << FEATURE_AVX512ER); +- if (ebx & bit_AVX512IFMA) +- features |= (1 << FEATURE_AVX512IFMA); +- if (ecx & bit_AVX512VBMI) +- features |= (1 << FEATURE_AVX512VBMI); +- if (ecx & bit_AVX512VPOPCNTDQ) +- features |= (1 << FEATURE_AVX512VPOPCNTDQ); +- if (edx & bit_AVX5124VNNIW) +- features |= (1 << FEATURE_AVX5124VNNIW); +- if (edx & bit_AVX5124FMAPS) +- features |= (1 << FEATURE_AVX5124FMAPS); ++ if (avx512_usable) ++ { ++ if (ebx & bit_AVX512F) ++ features |= (1 << FEATURE_AVX512F); ++ if (ebx & bit_AVX512VL) ++ features |= (1 << FEATURE_AVX512VL); ++ if (ebx & bit_AVX512BW) ++ features |= (1 << FEATURE_AVX512BW); ++ if (ebx & bit_AVX512DQ) ++ features |= (1 << FEATURE_AVX512DQ); ++ if (ebx & bit_AVX512CD) ++ features |= (1 << FEATURE_AVX512CD); ++ if (ebx & bit_AVX512PF) ++ features |= (1 << FEATURE_AVX512PF); ++ if (ebx & bit_AVX512ER) ++ features |= (1 << FEATURE_AVX512ER); ++ if (ebx & bit_AVX512IFMA) ++ features |= (1 << FEATURE_AVX512IFMA); ++ if (ecx & bit_AVX512VBMI) ++ features |= (1 << FEATURE_AVX512VBMI); ++ if (ecx & bit_AVX512VPOPCNTDQ) ++ features |= (1 << FEATURE_AVX512VPOPCNTDQ); ++ if (edx & bit_AVX5124VNNIW) ++ features |= (1 << FEATURE_AVX5124VNNIW); ++ if (edx & bit_AVX5124FMAPS) ++ features |= (1 << FEATURE_AVX5124FMAPS); ++ } + } + + /* Check cpuid level of extended features. */ +@@ -292,10 +335,13 @@ + + if (ecx & bit_SSE4a) + features |= (1 << FEATURE_SSE4_A); +- if (ecx & bit_FMA4) +- features |= (1 << FEATURE_FMA4); +- if (ecx & bit_XOP) +- features |= (1 << FEATURE_XOP); ++ if (avx_usable) ++ { ++ if (ecx & bit_FMA4) ++ features |= (1 << FEATURE_FMA4); ++ if (ecx & bit_XOP) ++ features |= (1 << FEATURE_XOP); ++ } + } + + __cpu_model.__cpu_features[0] = features; +Index: libgcc/config/arm/cmse.c +=================================================================== +--- a/src/libgcc/config/arm/cmse.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/config/arm/cmse.c (.../branches/gcc-7-branch) +@@ -36,7 +36,7 @@ + char *pb = (char *) p, *pe; + + /* Check if the range wraps around. */ +- if (UINTPTR_MAX - (uintptr_t) p < size) ++ if (__UINTPTR_MAX__ - (__UINTPTR_TYPE__) p < size) + return NULL; + + /* Check if an unknown flag is present. */ +@@ -51,7 +51,8 @@ + + /* Execute the right variant of the TT instructions. */ + pe = pb + size - 1; +- const int singleCheck = (((uintptr_t) pb ^ (uintptr_t) pe) < 32); ++ const int singleCheck ++ = (((__UINTPTR_TYPE__) pb ^ (__UINTPTR_TYPE__) pe) < 32); + switch (flags & known_secure_level) + { + case 0: +Index: libgcc/config/pa/linux-atomic.c +=================================================================== +--- a/src/libgcc/config/pa/linux-atomic.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/config/pa/linux-atomic.c (.../branches/gcc-7-branch) +@@ -28,15 +28,10 @@ + #define EBUSY 16 + #define ENOSYS 251 + +-/* All PA-RISC implementations supported by linux have strongly +- ordered loads and stores. Only cache flushes and purges can be +- delayed. The data cache implementations are all globally +- coherent. Thus, there is no need to synchonize memory accesses. ++/* PA-RISC 2.0 supports out-of-order execution for loads and stores. ++ Thus, we need to synchonize memory accesses. For more info, see: ++ "Advanced Performance Features of the 64-bit PA-8000" by Doug Hunt. + +- GCC automatically issues a asm memory barrier when it encounters +- a __sync_synchronize builtin. Thus, we do not need to define this +- builtin. +- + We implement byte, short and int versions of each atomic operation + using the kernel helper defined below. There is no support for + 64-bit operations yet. */ +@@ -119,7 +114,7 @@ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ + newval = PFX_OP (tmp INF_OP val); \ + failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX); \ + } while (failure != 0); \ +@@ -156,7 +151,7 @@ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ + newval = PFX_OP (tmp INF_OP val); \ + failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX); \ + } while (failure != 0); \ +@@ -193,7 +188,7 @@ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ + failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val)); \ + } while (failure != 0); \ + \ +@@ -215,7 +210,7 @@ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ + failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val)); \ + } while (failure != 0); \ + \ +@@ -241,7 +236,7 @@ + \ + while (1) \ + { \ +- actual_oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ + \ + if (__builtin_expect (oldval != actual_oldval, 0)) \ + return actual_oldval; \ +@@ -273,7 +268,7 @@ + + while (1) + { +- actual_oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); ++ actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); + + if (__builtin_expect (oldval != actual_oldval, 0)) + return actual_oldval; +@@ -300,7 +295,7 @@ + long failure; \ + \ + do { \ +- oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ ++ oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ + failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX); \ + } while (failure != 0); \ + \ +@@ -318,7 +313,7 @@ + int oldval; + + do { +- oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); ++ oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); + failure = __kernel_cmpxchg (ptr, oldval, val); + } while (failure != 0); + +@@ -325,31 +320,24 @@ + return oldval; + } + +-#define SYNC_LOCK_RELEASE_2(TYPE, WIDTH, INDEX) \ ++void HIDDEN ++__sync_lock_release_8 (long long *ptr) ++{ ++ /* All accesses must be complete before we release the lock. */ ++ __sync_synchronize (); ++ *(double *)ptr = 0; ++} ++ ++#define SYNC_LOCK_RELEASE_1(TYPE, WIDTH) \ + void HIDDEN \ + __sync_lock_release_##WIDTH (TYPE *ptr) \ + { \ +- TYPE oldval, zero = 0; \ +- long failure; \ +- \ +- do { \ +- oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); \ +- failure = __kernel_cmpxchg2 (ptr, &oldval, &zero, INDEX); \ +- } while (failure != 0); \ ++ /* All accesses must be complete before we release \ ++ the lock. */ \ ++ __sync_synchronize (); \ ++ *ptr = 0; \ + } + +-SYNC_LOCK_RELEASE_2 (long long, 8, 3) +-SYNC_LOCK_RELEASE_2 (short, 2, 1) +-SYNC_LOCK_RELEASE_2 (signed char, 1, 0) +- +-void HIDDEN +-__sync_lock_release_4 (int *ptr) +-{ +- long failure; +- int oldval; +- +- do { +- oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST); +- failure = __kernel_cmpxchg (ptr, oldval, 0); +- } while (failure != 0); +-} ++SYNC_LOCK_RELEASE_1 (int, 4) ++SYNC_LOCK_RELEASE_1 (short, 2) ++SYNC_LOCK_RELEASE_1 (signed char, 1) +Index: libgcc/config/pa/fptr.c +=================================================================== +--- a/src/libgcc/config/pa/fptr.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/config/pa/fptr.c (.../branches/gcc-7-branch) +@@ -52,6 +52,16 @@ + typedef int (*fixup_t) (struct link_map *, unsigned int); + extern unsigned int _GLOBAL_OFFSET_TABLE_; + ++static inline int ++_dl_read_access_allowed (unsigned int *addr) ++{ ++ int result; ++ ++ asm ("proberi (%1),3,%0" : "=r" (result) : "r" (addr) : ); ++ ++ return result; ++} ++ + /* __canonicalize_funcptr_for_compare must be hidden so that it is not + placed in the dynamic symbol table. Like millicode functions, it + must be linked into all binaries in order access the got table of +@@ -82,6 +92,16 @@ + The second word in the plabel contains the relocation offset for the + function. */ + plabel = (unsigned int *) ((unsigned int) fptr & ~3); ++ if (!_dl_read_access_allowed (plabel)) ++ return (unsigned int) fptr; ++ ++ /* Load first word of candidate descriptor. It should be a pointer ++ with word alignment and point to memory that can be read. */ ++ got = (unsigned int *) plabel[0]; ++ if (((unsigned int) got & 3) != 0 ++ || !_dl_read_access_allowed (got)) ++ return (unsigned int) fptr; ++ + got = (unsigned int *) (plabel[0] + GOT_FROM_PLT_STUB); + + /* Return the address of the function if the plabel has been resolved. */ +Index: libgcc/config/xtensa/ieee754-df.S +=================================================================== +--- a/src/libgcc/config/xtensa/ieee754-df.S (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/config/xtensa/ieee754-df.S (.../branches/gcc-7-branch) +@@ -55,6 +55,7 @@ + + #ifdef L_addsubdf3 + ++ .literal_position + /* Addition */ + __adddf3_aux: + +Index: libgcc/config/xtensa/ieee754-sf.S +=================================================================== +--- a/src/libgcc/config/xtensa/ieee754-sf.S (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/config/xtensa/ieee754-sf.S (.../branches/gcc-7-branch) +@@ -55,6 +55,7 @@ + + #ifdef L_addsubsf3 + ++ .literal_position + /* Addition */ + __addsf3_aux: + +Index: libgcc/configure +=================================================================== +--- a/src/libgcc/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libgcc/configure (.../branches/gcc-7-branch) +@@ -5298,7 +5298,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: gcc/brig/Make-lang.in +=================================================================== +--- a/src/gcc/brig/Make-lang.in (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/brig/Make-lang.in (.../branches/gcc-7-branch) +@@ -235,8 +235,7 @@ + CFLAGS-brig/brig-lang.o += -DDEFAULT_TARGET_VERSION=\"$(version)\" \ + -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" + +-BRIGINCLUDES = -I $(srcdir)/brig -I ${HOME}/local/include \ +- -I $(srcdir)/brig/brigfrontend ++BRIGINCLUDES = -I $(srcdir)/brig -I $(srcdir)/brig/brigfrontend + + brig/brig-machine.o: brig/brigfrontend/brig-machine.c + $(COMPILE) $(BRIGINCLUDES) $< +Index: gcc/brig/ChangeLog +=================================================================== +--- a/src/gcc/brig/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/brig/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,8 @@ ++2018-07-04 Martin Jambor ++ ++ PR hsa/86371 ++ * Make-lang.in (BRIGINCLUDES): Remove erroneous include path in $HOME. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/tree-vrp.c +=================================================================== +--- a/src/gcc/tree-vrp.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-vrp.c (.../branches/gcc-7-branch) +@@ -8671,9 +8671,9 @@ + if (TREE_CODE (*vr0min) == INTEGER_CST) + { + *vr0type = vr1type; +- *vr0min = vr1min; + *vr0max = int_const_binop (MINUS_EXPR, *vr0min, + build_int_cst (TREE_TYPE (*vr0min), 1)); ++ *vr0min = vr1min; + } + else + goto give_up; +Index: gcc/regrename.c +=================================================================== +--- a/src/gcc/regrename.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/regrename.c (.../branches/gcc-7-branch) +@@ -1656,7 +1656,8 @@ + (6) For any non-earlyclobber write we find in an operand, make + a new chain or mark the hard register as live. + (7) For any REG_UNUSED, close any chains we just opened. +- (8) For any REG_CFA_RESTORE, kill any chain containing it. ++ (8) For any REG_CFA_RESTORE or REG_CFA_REGISTER, kill any chain ++ containing its dest. + + We cannot deal with situations where we track a reg in one mode + and see a reference in another mode; these will cause the chain +@@ -1871,10 +1872,20 @@ + } + + /* Step 8: Kill the chains involving register restores. Those +- should restore _that_ register. */ ++ should restore _that_ register. Similar for REG_CFA_REGISTER. */ + for (note = REG_NOTES (insn); note; note = XEXP (note, 1)) +- if (REG_NOTE_KIND (note) == REG_CFA_RESTORE) +- scan_rtx (insn, &XEXP (note, 0), NO_REGS, mark_all_read, OP_IN); ++ if (REG_NOTE_KIND (note) == REG_CFA_RESTORE ++ || REG_NOTE_KIND (note) == REG_CFA_REGISTER) ++ { ++ rtx *x = &XEXP (note, 0); ++ if (!*x) ++ x = &PATTERN (insn); ++ if (GET_CODE (*x) == PARALLEL) ++ x = &XVECEXP (*x, 0, 0); ++ if (GET_CODE (*x) == SET) ++ x = &SET_DEST (*x); ++ scan_rtx (insn, x, NO_REGS, mark_all_read, OP_IN); ++ } + } + else if (DEBUG_INSN_P (insn) + && !VAR_LOC_UNKNOWN_P (INSN_VAR_LOCATION_LOC (insn))) +Index: gcc/shrink-wrap.c +=================================================================== +--- a/src/gcc/shrink-wrap.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/shrink-wrap.c (.../branches/gcc-7-branch) +@@ -157,7 +157,7 @@ + struct dead_debug_local *debug) + { + rtx set, src, dest; +- bitmap live_out, live_in, bb_uses, bb_defs; ++ bitmap live_out, live_in, bb_uses = NULL, bb_defs = NULL; + unsigned int i, dregno, end_dregno; + unsigned int sregno = FIRST_PSEUDO_REGISTER; + unsigned int end_sregno = FIRST_PSEUDO_REGISTER; +@@ -330,8 +330,11 @@ + /* Check whether BB uses DEST or clobbers DEST. We need to add + INSN to BB if so. Either way, DEST is no longer live on entry, + except for any part that overlaps SRC (next loop). */ +- bb_uses = &DF_LR_BB_INFO (bb)->use; +- bb_defs = &DF_LR_BB_INFO (bb)->def; ++ if (!*split_p) ++ { ++ bb_uses = &DF_LR_BB_INFO (bb)->use; ++ bb_defs = &DF_LR_BB_INFO (bb)->def; ++ } + if (df_live) + { + for (i = dregno; i < end_dregno; i++) +@@ -1374,6 +1377,8 @@ + bitmap_clear_bit (seen, bb->index); + } + ++ todo.release (); ++ + /* Finally, mark everything not not needed both forwards and backwards. */ + + FOR_EACH_BB_FN (bb, cfun) +Index: gcc/dwarf2asm.c +=================================================================== +--- a/src/gcc/dwarf2asm.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/dwarf2asm.c (.../branches/gcc-7-branch) +@@ -33,6 +33,7 @@ + #include "dwarf2.h" + #include "function.h" + #include "emit-rtl.h" ++#include "fold-const.h" + + #ifndef XCOFF_DEBUGGING_INFO + #define XCOFF_DEBUGGING_INFO 0 +@@ -925,7 +926,7 @@ + SET_DECL_ASSEMBLER_NAME (decl, id); + DECL_ARTIFICIAL (decl) = 1; + DECL_IGNORED_P (decl) = 1; +- DECL_INITIAL (decl) = decl; ++ DECL_INITIAL (decl) = build_fold_addr_expr (decl); + TREE_READONLY (decl) = 1; + TREE_STATIC (decl) = 1; + +@@ -938,8 +939,23 @@ + } + + sym_ref = gen_rtx_SYMBOL_REF (Pmode, sym); ++ /* Disable ASan for decl because redzones cause ABI breakage between GCC and ++ libstdc++ for `.LDFCM*' variables. See PR 78651 for details. */ ++ unsigned int save_flag_sanitize = flag_sanitize; ++ flag_sanitize &= ~(SANITIZE_ADDRESS | SANITIZE_USER_ADDRESS ++ | SANITIZE_KERNEL_ADDRESS); ++ /* And also temporarily disable -fsection-anchors. These indirect constants ++ are never referenced from code, so it doesn't make any sense to aggregate ++ them in blocks. */ ++ int save_flag_section_anchors = flag_section_anchors; ++ flag_section_anchors = 0; + assemble_variable (decl, 1, 1, 1); ++ flag_section_anchors = save_flag_section_anchors; ++ flag_sanitize = save_flag_sanitize; + assemble_integer (sym_ref, POINTER_SIZE_UNITS, POINTER_SIZE, 1); ++ /* The following is a hack recognized by use_blocks_for_decl_p to disable ++ section anchor handling of the decl. */ ++ DECL_INITIAL (decl) = decl; + + return 0; + } +Index: gcc/tree-ssa-tail-merge.c +=================================================================== +--- a/src/gcc/tree-ssa-tail-merge.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-tail-merge.c (.../branches/gcc-7-branch) +@@ -298,7 +298,15 @@ + if (gimple_vdef (stmt) != NULL_TREE + || gimple_has_side_effects (stmt) + || gimple_could_trap_p_1 (stmt, false, false) +- || gimple_vuse (stmt) != NULL_TREE) ++ || gimple_vuse (stmt) != NULL_TREE ++ /* Copied from tree-ssa-ifcombine.c:bb_no_side_effects_p(): ++ const calls don't match any of the above, yet they could ++ still have some side-effects - they could contain ++ gimple_could_trap_p statements, like floating point ++ exceptions or integer division by zero. See PR70586. ++ FIXME: perhaps gimple_has_side_effects or gimple_could_trap_p ++ should handle this. */ ++ || is_gimple_call (stmt)) + return false; + + def_p = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_DEF); +@@ -1454,7 +1462,8 @@ + /* TODO: handle blocks with phi-nodes. We'll have to find corresponding + phi-nodes in bb1 and bb2, with the same alternatives for the same + preds. */ +- if (bb_has_non_vop_phi (bb1) || bb_has_eh_pred (bb1)) ++ if (bb_has_non_vop_phi (bb1) || bb_has_eh_pred (bb1) ++ || bb_has_abnormal_pred (bb1)) + continue; + + nr_comparisons = 0; +@@ -1462,7 +1471,8 @@ + { + bb2 = BASIC_BLOCK_FOR_FN (cfun, j); + +- if (bb_has_non_vop_phi (bb2) || bb_has_eh_pred (bb2)) ++ if (bb_has_non_vop_phi (bb2) || bb_has_eh_pred (bb2) ++ || bb_has_abnormal_pred (bb2)) + continue; + + if (BB_CLUSTER (bb1) != NULL && BB_CLUSTER (bb1) == BB_CLUSTER (bb2)) +Index: gcc/tree-ssa-loop-niter.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-niter.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-loop-niter.c (.../branches/gcc-7-branch) +@@ -2320,11 +2320,11 @@ + + tree iv0_niters = NULL_TREE; + if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt), +- op0, &iv0, &iv0_niters, false)) ++ op0, &iv0, safe ? &iv0_niters : NULL, false)) + return false; + tree iv1_niters = NULL_TREE; + if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt), +- op1, &iv1, &iv1_niters, false)) ++ op1, &iv1, safe ? &iv1_niters : NULL, false)) + return false; + /* Give up on complicated case. */ + if (iv0_niters && iv1_niters) +Index: gcc/c-family/c-cppbuiltin.c +=================================================================== +--- a/src/gcc/c-family/c-cppbuiltin.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c-family/c-cppbuiltin.c (.../branches/gcc-7-branch) +@@ -1119,7 +1119,7 @@ + floatn_nx_types[i].extended ? "X" : ""); + sprintf (csuffix, "F%d%s", floatn_nx_types[i].n, + floatn_nx_types[i].extended ? "x" : ""); +- builtin_define_float_constants (prefix, csuffix, "%s", NULL, ++ builtin_define_float_constants (prefix, ggc_strdup (csuffix), "%s", NULL, + FLOATN_NX_TYPE_NODE (i)); + } + +@@ -1566,7 +1566,14 @@ + int digits; + const char *fp_suffix; + }; +-static GTY(()) struct lazy_hex_fp_value_struct lazy_hex_fp_values[12]; ++/* Number of the expensive to compute macros we should evaluate lazily. ++ Each builtin_define_float_constants invocation calls ++ builtin_define_with_hex_fp_value 4 times and builtin_define_float_constants ++ is called for FLT, DBL, LDBL and up to NUM_FLOATN_NX_TYPES times for ++ FLTNN*. */ ++#define LAZY_HEX_FP_VALUES_CNT (4 * (3 + NUM_FLOATN_NX_TYPES)) ++static GTY(()) struct lazy_hex_fp_value_struct ++ lazy_hex_fp_values[LAZY_HEX_FP_VALUES_CNT]; + static GTY(()) int lazy_hex_fp_value_count; + + static bool +@@ -1611,7 +1618,7 @@ + char dec_str[64], buf1[256], buf2[256]; + + /* This is very expensive, so if possible expand them lazily. */ +- if (lazy_hex_fp_value_count < 12 ++ if (lazy_hex_fp_value_count < LAZY_HEX_FP_VALUES_CNT + && flag_dump_macros == 0 + && !cpp_get_options (parse_in)->traditional) + { +Index: gcc/c-family/c-gimplify.c +=================================================================== +--- a/src/gcc/c-family/c-gimplify.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c-family/c-gimplify.c (.../branches/gcc-7-branch) +@@ -244,7 +244,9 @@ + unsigned_type_node) + && !types_compatible_p (TYPE_MAIN_VARIANT (TREE_TYPE (*op1_p)), + integer_type_node)) +- *op1_p = convert (unsigned_type_node, *op1_p); ++ /* Make sure to unshare the result, tree sharing is invalid ++ during gimplification. */ ++ *op1_p = unshare_expr (convert (unsigned_type_node, *op1_p)); + break; + } + +Index: gcc/c-family/ChangeLog +=================================================================== +--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,56 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-06-20 Jakub Jelinek ++ ++ PR c++/86210 ++ * c-common.c (check_nonnull_arg): Use fold_for_warn. Adjust obsolete ++ comment. ++ ++ 2018-05-11 Jakub Jelinek ++ ++ PR c/85696 ++ * c-omp.c (c_omp_predetermined_sharing): Return ++ OMP_CLAUSE_DEFAULT_SHARED for artificial vars with integral type. ++ ++ 2018-05-10 Jakub Jelinek ++ ++ PR c++/85662 ++ * c-common.h (fold_offsetof_1): Removed. ++ (fold_offsetof): Add TYPE argument defaulted to size_type_node and ++ CTX argument defaulted to ERROR_MARK. ++ * c-common.c (fold_offsetof_1): Renamed to ... ++ (fold_offsetof): ... this. Remove wrapper function. Add TYPE ++ argument, convert the pointer constant to TYPE and use size_binop ++ with PLUS_EXPR instead of fold_build_pointer_plus if type is not ++ a pointer type. Adjust recursive calls. ++ ++2018-04-26 Richard Biener ++ ++ Backport from mainline ++ 2018-03-16 Richard Biener ++ ++ PR c/84873 ++ * c-gimplify.c (c_gimplify_expr): Revert previous change. Instead ++ unshare the possibly folded expression. ++ ++ 2018-03-15 Richard Biener ++ ++ PR c/84873 ++ * c-gimplify.c (c_gimplify_expr): Do not fold expressions. ++ ++2018-03-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-01-27 Jakub Jelinek ++ ++ * c-cppbuiltin.c (c_cpp_builtins): Use ggc_strdup for the fp_suffix ++ argument. ++ (LAZY_HEX_FP_VALUES_CNT): Define. ++ (lazy_hex_fp_values): Allow up to LAZY_HEX_FP_VALUES_CNT lazy hex fp ++ values rather than just 12. ++ (builtin_define_with_hex_fp_value): Likewise. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/c-family/c-common.c +=================================================================== +--- a/src/gcc/c-family/c-common.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c-family/c-common.c (.../branches/gcc-7-branch) +@@ -5434,10 +5434,8 @@ + if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE) + return; + +- /* When not optimizing diagnose the simple cases of null arguments. +- When optimization is enabled defer the checking until expansion +- when more cases can be detected. */ +- if (integer_zerop (param)) ++ /* Diagnose the simple cases of null arguments. */ ++ if (integer_zerop (fold_for_warn (param))) + { + warning_at (pctx->loc, OPT_Wnonnull, "null argument where non-null " + "required (argument %lu)", (unsigned long) param_num); +@@ -6253,10 +6251,11 @@ + + /* Fold an offsetof-like expression. EXPR is a nested sequence of component + references with an INDIRECT_REF of a constant at the bottom; much like the +- traditional rendering of offsetof as a macro. Return the folded result. */ ++ traditional rendering of offsetof as a macro. TYPE is the desired type of ++ the whole expression. Return the folded result. */ + + tree +-fold_offsetof_1 (tree expr, enum tree_code ctx) ++fold_offsetof (tree expr, tree type, enum tree_code ctx) + { + tree base, off, t; + tree_code code = TREE_CODE (expr); +@@ -6281,10 +6280,10 @@ + error ("cannot apply % to a non constant address"); + return error_mark_node; + } +- return TREE_OPERAND (expr, 0); ++ return convert (type, TREE_OPERAND (expr, 0)); + + case COMPONENT_REF: +- base = fold_offsetof_1 (TREE_OPERAND (expr, 0), code); ++ base = fold_offsetof (TREE_OPERAND (expr, 0), type, code); + if (base == error_mark_node) + return base; + +@@ -6301,7 +6300,7 @@ + break; + + case ARRAY_REF: +- base = fold_offsetof_1 (TREE_OPERAND (expr, 0), code); ++ base = fold_offsetof (TREE_OPERAND (expr, 0), type, code); + if (base == error_mark_node) + return base; + +@@ -6358,23 +6357,16 @@ + /* Handle static members of volatile structs. */ + t = TREE_OPERAND (expr, 1); + gcc_assert (VAR_P (t)); +- return fold_offsetof_1 (t); ++ return fold_offsetof (t, type); + + default: + gcc_unreachable (); + } + ++ if (!POINTER_TYPE_P (type)) ++ return size_binop (PLUS_EXPR, base, convert (type, off)); + return fold_build_pointer_plus (base, off); + } +- +-/* Likewise, but convert it to the return type of offsetof. */ +- +-tree +-fold_offsetof (tree expr) +-{ +- return convert (size_type_node, fold_offsetof_1 (expr)); +-} +- + + /* *PTYPE is an incomplete array. Complete it with a domain based on + INITIAL_VALUE. If INITIAL_VALUE is not present, use 1 if DO_DEFAULT +Index: gcc/c-family/c-omp.c +=================================================================== +--- a/src/gcc/c-family/c-omp.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c-family/c-omp.c (.../branches/gcc-7-branch) +@@ -1540,5 +1540,13 @@ + if (TREE_READONLY (decl)) + return OMP_CLAUSE_DEFAULT_SHARED; + ++ /* Predetermine artificial variables holding integral values, those ++ are usually result of gimplify_one_sizepos or SAVE_EXPR ++ gimplification. */ ++ if (VAR_P (decl) ++ && DECL_ARTIFICIAL (decl) ++ && INTEGRAL_TYPE_P (TREE_TYPE (decl))) ++ return OMP_CLAUSE_DEFAULT_SHARED; ++ + return OMP_CLAUSE_DEFAULT_UNSPECIFIED; + } +Index: gcc/c-family/c-common.h +=================================================================== +--- a/src/gcc/c-family/c-common.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c-family/c-common.h (.../branches/gcc-7-branch) +@@ -1053,8 +1053,8 @@ + + extern void verify_sequence_points (tree); + +-extern tree fold_offsetof_1 (tree, tree_code ctx = ERROR_MARK); +-extern tree fold_offsetof (tree); ++extern tree fold_offsetof (tree, tree = size_type_node, ++ tree_code ctx = ERROR_MARK); + + extern int complete_array_type (tree *, tree, bool); + +Index: gcc/c/c-fold.c +=================================================================== +--- a/src/gcc/c/c-fold.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c/c-fold.c (.../branches/gcc-7-branch) +@@ -403,7 +403,7 @@ + && (op1 = get_base_address (op0)) != NULL_TREE + && INDIRECT_REF_P (op1) + && TREE_CONSTANT (TREE_OPERAND (op1, 0))) +- ret = fold_convert_loc (loc, TREE_TYPE (expr), fold_offsetof_1 (op0)); ++ ret = fold_offsetof (op0, TREE_TYPE (expr)); + else if (op0 != orig_op0 || in_init) + ret = in_init + ? fold_build1_initializer_loc (loc, code, TREE_TYPE (expr), op0) +Index: gcc/c/ChangeLog +=================================================================== +--- a/src/gcc/c/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,35 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-05-11 Jakub Jelinek ++ ++ PR c/85696 ++ * c-typeck.c (c_finish_omp_clauses): Don't use ++ c_omp_predetermined_sharing, instead just check TREE_READONLY. ++ ++ 2018-05-10 Jakub Jelinek ++ ++ PR c++/85662 ++ * c-fold.c (c_fully_fold_internal): Use fold_offsetof rather than ++ fold_offsetof_1, pass TREE_TYPE (expr) as TYPE to it and drop the ++ fold_convert_loc. ++ * c-typeck.c (build_unary_op): Use fold_offsetof rather than ++ fold_offsetof_1, pass argtype as TYPE to it and drop the ++ fold_convert_loc. ++ ++ 2018-03-21 Jakub Jelinek ++ ++ PR c/84999 ++ * c-typeck.c (build_binary_op): If c_common_type_for_size fails when ++ building vector comparison, diagnose it and return error_mark_node. ++ ++ 2018-03-15 Jakub Jelinek ++ ++ PR c/84853 ++ * c-typeck.c (build_binary_op) : ++ If code1 is INTEGER_TYPE, only allow code0 VECTOR_TYPE if it has ++ INTEGER_TYPE element type. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/c/c-typeck.c +=================================================================== +--- a/src/gcc/c/c-typeck.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c/c-typeck.c (.../branches/gcc-7-branch) +@@ -4638,7 +4638,7 @@ + if (val && INDIRECT_REF_P (val) + && TREE_CONSTANT (TREE_OPERAND (val, 0))) + { +- ret = fold_convert_loc (location, argtype, fold_offsetof_1 (arg)); ++ ret = fold_offsetof (arg, argtype); + goto return_build_unary_op; + } + +@@ -11150,7 +11150,8 @@ + converted = 1; + } + else if ((code0 == INTEGER_TYPE || code0 == FIXED_POINT_TYPE +- || code0 == VECTOR_TYPE) ++ || (code0 == VECTOR_TYPE ++ && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE)) + && code1 == INTEGER_TYPE) + { + doing_shift = true; +@@ -11207,7 +11208,8 @@ + converted = 1; + } + else if ((code0 == INTEGER_TYPE || code0 == FIXED_POINT_TYPE +- || code0 == VECTOR_TYPE) ++ || (code0 == VECTOR_TYPE ++ && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE)) + && code1 == INTEGER_TYPE) + { + doing_shift = true; +@@ -11299,6 +11301,13 @@ + /* Always construct signed integer vector type. */ + intt = c_common_type_for_size (GET_MODE_BITSIZE + (TYPE_MODE (TREE_TYPE (type0))), 0); ++ if (!intt) ++ { ++ error_at (location, "could not find an integer type " ++ "of the same size as %qT", ++ TREE_TYPE (type0)); ++ return error_mark_node; ++ } + result_type = build_opaque_vector_type (intt, + TYPE_VECTOR_SUBPARTS (type0)); + converted = 1; +@@ -11458,6 +11467,13 @@ + /* Always construct signed integer vector type. */ + intt = c_common_type_for_size (GET_MODE_BITSIZE + (TYPE_MODE (TREE_TYPE (type0))), 0); ++ if (!intt) ++ { ++ error_at (location, "could not find an integer type " ++ "of the same size as %qT", ++ TREE_TYPE (type0)); ++ return error_mark_node; ++ } + result_type = build_opaque_vector_type (intt, + TYPE_VECTOR_SUBPARTS (type0)); + converted = 1; +@@ -13744,22 +13760,11 @@ + + if (VAR_P (t) && DECL_THREAD_LOCAL_P (t)) + share_name = "threadprivate"; +- else switch (c_omp_predetermined_sharing (t)) ++ else if (TREE_READONLY (t)) + { +- case OMP_CLAUSE_DEFAULT_UNSPECIFIED: +- break; +- case OMP_CLAUSE_DEFAULT_SHARED: + /* const vars may be specified in firstprivate clause. */ +- if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE +- && TREE_READONLY (t)) +- break; +- share_name = "shared"; +- break; +- case OMP_CLAUSE_DEFAULT_PRIVATE: +- share_name = "private"; +- break; +- default: +- gcc_unreachable (); ++ if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_FIRSTPRIVATE) ++ share_name = "shared"; + } + if (share_name) + { +Index: gcc/cgraph.h +=================================================================== +--- a/src/gcc/cgraph.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cgraph.h (.../branches/gcc-7-branch) +@@ -321,6 +321,9 @@ + or abstract function kept for debug info purposes only. */ + bool real_symbol_p (void); + ++ /* Return true when the symbol needs to be output to the LTO symbol table. */ ++ bool output_to_lto_symbol_table_p (void); ++ + /* Determine if symbol declaration is needed. That is, visible to something + either outside this translation unit, something magic in the system + configury. This function is used just during symbol creation. */ +Index: gcc/lra-int.h +=================================================================== +--- a/src/gcc/lra-int.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lra-int.h (.../branches/gcc-7-branch) +@@ -202,6 +202,10 @@ + const struct operand_alternative *operand_alternative; + }; + ++/* Negative insn alternative numbers used for special cases. */ ++#define LRA_UNKNOWN_ALT -1 ++#define LRA_NON_CLOBBERED_ALT -2 ++ + /* LRA internal info about an insn (LRA internal insn + representation). */ + struct lra_insn_recog_data +@@ -208,9 +212,10 @@ + { + /* The insn code. */ + int icode; +- /* The alternative should be used for the insn, -1 if invalid, or we +- should try to use any alternative, or the insn is a debug +- insn. */ ++ /* The alternative should be used for the insn, LRA_UNKNOWN_ALT if ++ unknown, or we should assume any alternative, or the insn is a ++ debug insn. LRA_NON_CLOBBERED_ALT means ignoring any earlier ++ clobbers for the insn. */ + int used_insn_alternative; + /* SP offset before the insn relative to one at the func start. */ + HOST_WIDE_INT sp_offset; +Index: gcc/optabs.c +=================================================================== +--- a/src/gcc/optabs.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/optabs.c (.../branches/gcc-7-branch) +@@ -4294,9 +4294,10 @@ + save_pending_stack_adjust (&save); + last = get_last_insn (); + do_pending_stack_adjust (); ++ machine_mode cmpmode = cmode; + prepare_cmp_insn (XEXP (comparison, 0), XEXP (comparison, 1), + GET_CODE (comparison), NULL_RTX, unsignedp, +- OPTAB_WIDEN, &comparison, &cmode); ++ OPTAB_WIDEN, &comparison, &cmpmode); + if (comparison) + { + struct expand_operand ops[4]; +Index: gcc/DATESTAMP +=================================================================== +--- a/src/gcc/DATESTAMP (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/DATESTAMP (.../branches/gcc-7-branch) +@@ -1 +1 @@ +-20180125 ++20181129 +Index: gcc/postreload.c +=================================================================== +--- a/src/gcc/postreload.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/postreload.c (.../branches/gcc-7-branch) +@@ -1160,11 +1160,13 @@ + value in PREV, the constant loading instruction. */ + validate_change (prev, &SET_DEST (prev_set), index_reg, 1); + if (reg_state[regno].offset != const0_rtx) +- validate_change (prev, +- &SET_SRC (prev_set), +- GEN_INT (INTVAL (SET_SRC (prev_set)) +- + INTVAL (reg_state[regno].offset)), +- 1); ++ { ++ HOST_WIDE_INT c ++ = trunc_int_for_mode (UINTVAL (SET_SRC (prev_set)) ++ + UINTVAL (reg_state[regno].offset), ++ GET_MODE (index_reg)); ++ validate_change (prev, &SET_SRC (prev_set), GEN_INT (c), 1); ++ } + + /* Now for every use of REG that we have recorded, replace REG + with REG_SUM. */ +Index: gcc/lra.c +=================================================================== +--- a/src/gcc/lra.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lra.c (.../branches/gcc-7-branch) +@@ -946,7 +946,7 @@ + data = XNEW (struct lra_insn_recog_data); + lra_insn_recog_data[uid] = data; + data->insn = insn; +- data->used_insn_alternative = -1; ++ data->used_insn_alternative = LRA_UNKNOWN_ALT; + data->icode = icode; + data->regs = NULL; + if (DEBUG_INSN_P (insn)) +@@ -1187,7 +1187,7 @@ + return data; + } + insn_static_data = data->insn_static_data; +- data->used_insn_alternative = -1; ++ data->used_insn_alternative = LRA_UNKNOWN_ALT; + if (DEBUG_INSN_P (insn)) + return data; + if (data->icode < 0) +Index: gcc/tree-ssa-loop-ch.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-ch.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-loop-ch.c (.../branches/gcc-7-branch) +@@ -57,7 +57,8 @@ + be true, since quite often it is possible to verify that the condition is + satisfied in the first iteration and therefore to eliminate it. Jump + threading handles these cases now. */ +- if (optimize_loop_for_size_p (loop)) ++ if (optimize_loop_for_size_p (loop) ++ && !loop->force_vectorize) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, +Index: gcc/tree-tailcall.c +=================================================================== +--- a/src/gcc/tree-tailcall.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-tailcall.c (.../branches/gcc-7-branch) +@@ -473,7 +473,7 @@ + { + tree arg; + +- for (param = DECL_ARGUMENTS (func), idx = 0; ++ for (param = DECL_ARGUMENTS (current_function_decl), idx = 0; + param && idx < gimple_call_num_args (call); + param = DECL_CHAIN (param), idx ++) + { +Index: gcc/tree.c +=================================================================== +--- a/src/gcc/tree.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree.c (.../branches/gcc-7-branch) +@@ -5454,9 +5454,10 @@ + At this point, it is not needed anymore. */ + DECL_SAVED_TREE (decl) = NULL_TREE; + +- /* Clear the abstract origin if it refers to a method. Otherwise +- dwarf2out.c will ICE as we clear TYPE_METHODS and thus the +- origin will not be output correctly. */ ++ /* Clear the abstract origin if it refers to a method. ++ Otherwise dwarf2out.c will ICE as we splice functions out of ++ TYPE_FIELDS and thus the origin will not be output ++ correctly. */ + if (DECL_ABSTRACT_ORIGIN (decl) + && DECL_CONTEXT (DECL_ABSTRACT_ORIGIN (decl)) + && RECORD_OR_UNION_TYPE_P +@@ -7887,6 +7888,9 @@ + for (i = 0; i < TREE_VEC_LENGTH (t); ++i) + inchash::add_expr (TREE_VEC_ELT (t, i), hstate, flags); + return; ++ case IDENTIFIER_NODE: ++ hstate.add_object (IDENTIFIER_HASH_VALUE (t)); ++ return; + case FUNCTION_DECL: + /* When referring to a built-in FUNCTION_DECL, use the __builtin__ form. + Otherwise nodes that compare equal according to operand_equal_p might +@@ -10305,8 +10309,7 @@ + TYPE_SIZE (int_n_trees[i].signed_type) = bitsize_int (int_n_data[i].bitsize); + TYPE_SIZE (int_n_trees[i].unsigned_type) = bitsize_int (int_n_data[i].bitsize); + +- if (int_n_data[i].bitsize > LONG_LONG_TYPE_SIZE +- && int_n_enabled_p[i]) ++ if (int_n_enabled_p[i]) + { + integer_types[itk_intN_0 + i * 2] = int_n_trees[i].signed_type; + integer_types[itk_unsigned_intN_0 + i * 2] = int_n_trees[i].unsigned_type; +Index: gcc/ipa-cp.c +=================================================================== +--- a/src/gcc/ipa-cp.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-cp.c (.../branches/gcc-7-branch) +@@ -621,6 +621,24 @@ + reason = "calls comdat-local function"; + } + ++ /* Functions calling BUILT_IN_VA_ARG_PACK and BUILT_IN_VA_ARG_PACK_LEN ++ works only when inlined. Cloning them may still lead to better code ++ becuase ipa-cp will not give up on cloning further. If the function is ++ external this however leads to wrong code becuase we may end up producing ++ offline copy of the function. */ ++ if (DECL_EXTERNAL (node->decl)) ++ for (cgraph_edge *edge = node->callees; !reason && edge; ++ edge = edge->next_callee) ++ if (DECL_BUILT_IN (edge->callee->decl) ++ && DECL_BUILT_IN_CLASS (edge->callee->decl) == BUILT_IN_NORMAL) ++ { ++ if (DECL_FUNCTION_CODE (edge->callee->decl) == BUILT_IN_VA_ARG_PACK) ++ reason = "external function which calls va_arg_pack"; ++ if (DECL_FUNCTION_CODE (edge->callee->decl) ++ == BUILT_IN_VA_ARG_PACK_LEN) ++ reason = "external function which calls va_arg_pack_len"; ++ } ++ + if (reason && dump_file && !node->alias && !node->thunk.thunk_p) + fprintf (dump_file, "Function %s/%i is not versionable, reason: %s.\n", + node->name (), node->order, reason); +@@ -4009,7 +4027,9 @@ + if (aglat->offset - offset == item->offset) + { + gcc_checking_assert (item->value); +- if (values_equal_for_ipcp_p (item->value, aglat->values->value)) ++ if (aglat->is_single_const () ++ && values_equal_for_ipcp_p (item->value, ++ aglat->values->value)) + found = true; + break; + } +Index: gcc/rtlanal.c +=================================================================== +--- a/src/gcc/rtlanal.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/rtlanal.c (.../branches/gcc-7-branch) +@@ -4339,14 +4339,14 @@ + might be nonzero in its own mode, taking into account the fact that, on + CISC machines, accessing an object in a wider mode generally causes the + high-order bits to become undefined, so they are not known to be zero. +- We extend this reasoning to RISC machines for rotate operations since the +- semantics of the operations in the larger mode is not well defined. */ ++ We extend this reasoning to RISC machines for operations that might not ++ operate on the full registers. */ + if (GET_MODE (x) != VOIDmode + && GET_MODE (x) != mode + && GET_MODE_PRECISION (GET_MODE (x)) <= BITS_PER_WORD + && GET_MODE_PRECISION (GET_MODE (x)) <= HOST_BITS_PER_WIDE_INT + && GET_MODE_PRECISION (mode) > GET_MODE_PRECISION (GET_MODE (x)) +- && (!WORD_REGISTER_OPERATIONS || code == ROTATE)) ++ && !(WORD_REGISTER_OPERATIONS && word_register_operation_p (x))) + { + nonzero &= cached_nonzero_bits (x, GET_MODE (x), + known_x, known_mode, known_ret); +@@ -4623,13 +4623,16 @@ + nonzero &= cached_nonzero_bits (SUBREG_REG (x), mode, + known_x, known_mode, known_ret); + +- /* On many CISC machines, accessing an object in a wider mode ++ /* On a typical CISC machine, accessing an object in a wider mode + causes the high-order bits to become undefined. So they are +- not known to be zero. */ ++ not known to be zero. ++ ++ On a typical RISC machine, we only have to worry about the way ++ loads are extended. Otherwise, if we get a reload for the inner ++ part, it may be loaded from the stack, and then we may lose all ++ the zero bits that existed before the store to the stack. */ + rtx_code extend_op; + if ((!WORD_REGISTER_OPERATIONS +- /* If this is a typical RISC machine, we only have to worry +- about the way loads are extended. */ + || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND + ? val_signbit_known_set_p (inner_mode, nonzero) + : extend_op != ZERO_EXTEND) +@@ -4872,10 +4875,9 @@ + { + /* If this machine does not do all register operations on the entire + register and MODE is wider than the mode of X, we can say nothing +- at all about the high-order bits. We extend this reasoning to every +- machine for rotate operations since the semantics of the operations +- in the larger mode is not well defined. */ +- if (!WORD_REGISTER_OPERATIONS || code == ROTATE || code == ROTATERT) ++ at all about the high-order bits. We extend this reasoning to RISC ++ machines for operations that might not operate on full registers. */ ++ if (!(WORD_REGISTER_OPERATIONS && word_register_operation_p (x))) + return 1; + + /* Likewise on machines that do, if the mode of the object is smaller +@@ -4965,10 +4967,10 @@ + + /* For paradoxical SUBREGs on machines where all register operations + affect the entire register, just look inside. Note that we are +- passing MODE to the recursive call, so the number of sign bit copies +- will remain relative to that mode, not the inner mode. */ ++ passing MODE to the recursive call, so the number of sign bit ++ copies will remain relative to that mode, not the inner mode. + +- /* This works only if loads sign extend. Otherwise, if we get a ++ This works only if loads sign extend. Otherwise, if we get a + reload for the inner part, it may be loaded from the stack, and + then we lose all sign bit copies that existed before the store + to the stack. */ +Index: gcc/ddg.c +=================================================================== +--- a/src/gcc/ddg.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ddg.c (.../branches/gcc-7-branch) +@@ -295,11 +295,14 @@ + /* Create inter-loop true dependences and anti dependences. */ + for (r_use = DF_REF_CHAIN (last_def); r_use != NULL; r_use = r_use->next) + { ++ if (DF_REF_BB (r_use->ref) != g->bb) ++ continue; ++ ++ gcc_assert (!DF_REF_IS_ARTIFICIAL (r_use->ref) ++ && DF_REF_INSN_INFO (r_use->ref) != NULL); ++ + rtx_insn *use_insn = DF_REF_INSN (r_use->ref); + +- if (BLOCK_FOR_INSN (use_insn) != g->bb) +- continue; +- + /* ??? Do not handle uses with DF_REF_IN_NOTE notes. */ + use_node = get_node_of_insn (g, use_insn); + gcc_assert (use_node); +Index: gcc/configure +=================================================================== +--- a/src/gcc/configure (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/configure (.../branches/gcc-7-branch) +@@ -11871,7 +11871,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +@@ -23571,6 +23571,14 @@ + + + fi ++case "$target" in ++ i?86-*-solaris2.10* | x86_64-*-solaris2.10*) ++ # SHF_MERGE support in Solaris 10/x86 ld is broken. ++ if test x"$gnu_ld" = xno; then ++ gcc_cv_as_shf_merge=no ++ fi ++ ;; ++esac + + cat >>confdefs.h <<_ACEOF + #define HAVE_GAS_SHF_MERGE `if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi` +@@ -25217,6 +25225,7 @@ + + fi + ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for SPARC6 instructions" >&5 + $as_echo_n "checking assembler for SPARC6 instructions... " >&6; } + if test "${gcc_cv_as_sparc_sparc6+set}" = set; then : +@@ -25253,6 +25262,7 @@ + + fi + ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for LEON instructions" >&5 + $as_echo_n "checking assembler for LEON instructions... " >&6; } + if test "${gcc_cv_as_sparc_leon+set}" = set; then : +@@ -29777,8 +29787,10 @@ + + # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit + # of jit/jit-playback.c. ++gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"` ++echo "gcc_driver_version: ${gcc_driver_version}" + cat > gcc-driver-name.h <= 0;) ++ for (i = MAX_CODE_ALIGN + 1; --i >= 0;) + align_tab[i] = NULL_RTX; + seq = get_last_insn (); + for (; seq; seq = PREV_INSN (seq)) +@@ -2232,6 +2232,9 @@ + ASM_OUTPUT_LABEL (asm_out_file, + IDENTIFIER_POINTER (cold_function_name)); + #endif ++ if (dwarf2out_do_frame () ++ && cfun->fde->dw_fde_second_begin != NULL) ++ ASM_OUTPUT_LABEL (asm_out_file, cfun->fde->dw_fde_second_begin); + } + break; + +Index: gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/gcc.c (.../branches/gcc-7-branch) +@@ -677,7 +677,7 @@ + + #ifndef LIBASAN_SPEC + #define STATIC_LIBASAN_LIBS \ +- " %{static-libasan:%:include(libsanitizer.spec)%(link_libasan)}" ++ " %{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)}" + #ifdef LIBASAN_EARLY_SPEC + #define LIBASAN_SPEC STATIC_LIBASAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +@@ -695,7 +695,7 @@ + + #ifndef LIBTSAN_SPEC + #define STATIC_LIBTSAN_LIBS \ +- " %{static-libtsan:%:include(libsanitizer.spec)%(link_libtsan)}" ++ " %{static-libtsan|static:%:include(libsanitizer.spec)%(link_libtsan)}" + #ifdef LIBTSAN_EARLY_SPEC + #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +@@ -713,7 +713,7 @@ + + #ifndef LIBLSAN_SPEC + #define STATIC_LIBLSAN_LIBS \ +- " %{static-liblsan:%:include(libsanitizer.spec)%(link_liblsan)}" ++ " %{static-liblsan|static:%:include(libsanitizer.spec)%(link_liblsan)}" + #ifdef LIBLSAN_EARLY_SPEC + #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +@@ -731,7 +731,7 @@ + + #ifndef LIBUBSAN_SPEC + #define STATIC_LIBUBSAN_LIBS \ +- " %{static-libubsan:%:include(libsanitizer.spec)%(link_libubsan)}" ++ " %{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 "}" \ +@@ -6970,8 +6970,8 @@ + + /* In final attempt we append compiler options and preprocesssed code to last + generated .out file with configuration and backtrace. */ +- char **output = &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1]; +- do_report_bug (new_argv, nargs, stderr_commented, output); ++ char **err = &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1]; ++ do_report_bug (new_argv, nargs, stderr_commented, err); + } + + out: +Index: gcc/tree-emutls.c +=================================================================== +--- a/src/gcc/tree-emutls.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-emutls.c (.../branches/gcc-7-branch) +@@ -34,6 +34,7 @@ + #include "gimple-walk.h" + #include "langhooks.h" + #include "tree-iterator.h" ++#include "gimplify.h" + + /* Whenever a target does not support thread-local storage (TLS) natively, + we can emulate it with some run-time support in libgcc. This will in +@@ -430,6 +431,20 @@ + return addr; + } + ++/* Callback for lower_emutls_1, return non-NULL if there is any TLS ++ VAR_DECL in the subexpressions. */ ++ ++static tree ++lower_emutls_2 (tree *ptr, int *walk_subtrees, void *) ++{ ++ tree t = *ptr; ++ if (TREE_CODE (t) == VAR_DECL) ++ return DECL_THREAD_LOCAL_P (t) ? t : NULL_TREE; ++ else if (!EXPR_P (t)) ++ *walk_subtrees = 0; ++ return NULL_TREE; ++} ++ + /* Callback for walk_gimple_op. D = WI->INFO is a struct lower_emutls_data. + Given an operand *PTR within D->STMT, if the operand references a TLS + variable, then lower the reference to a call to the runtime. Insert +@@ -456,6 +471,13 @@ + { + bool save_changed; + ++ /* Gimple invariants are shareable trees, so before changing ++ anything in them if we will need to change anything, unshare ++ them. */ ++ if (is_gimple_min_invariant (t) ++ && walk_tree (&TREE_OPERAND (t, 0), lower_emutls_2, NULL, NULL)) ++ *ptr = t = unshare_expr (t); ++ + /* If we're allowed more than just is_gimple_val, continue. */ + if (!wi->val_only) + { +Index: gcc/fold-const.c +=================================================================== +--- a/src/gcc/fold-const.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fold-const.c (.../branches/gcc-7-branch) +@@ -473,12 +473,15 @@ + case EXACT_DIV_EXPR: + if (TYPE_UNSIGNED (type)) + break; +- if (negate_expr_p (TREE_OPERAND (t, 0))) ++ /* In general we can't negate A in A / B, because if A is INT_MIN and ++ B is not 1 we change the sign of the result. */ ++ if (TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST ++ && negate_expr_p (TREE_OPERAND (t, 0))) + return true; + /* In general we can't negate B in A / B, because if A is INT_MIN and + B is 1, we may turn this into INT_MIN / -1 which is undefined + and actually traps on some architectures. */ +- if (! INTEGRAL_TYPE_P (TREE_TYPE (t)) ++ if (! ANY_INTEGRAL_TYPE_P (TREE_TYPE (t)) + || TYPE_OVERFLOW_WRAPS (TREE_TYPE (t)) + || (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST + && ! integer_onep (TREE_OPERAND (t, 1)))) +@@ -652,7 +655,10 @@ + case EXACT_DIV_EXPR: + if (TYPE_UNSIGNED (type)) + break; +- if (negate_expr_p (TREE_OPERAND (t, 0))) ++ /* In general we can't negate A in A / B, because if A is INT_MIN and ++ B is not 1 we change the sign of the result. */ ++ if (TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST ++ && negate_expr_p (TREE_OPERAND (t, 0))) + return fold_build2_loc (loc, TREE_CODE (t), type, + negate_expr (TREE_OPERAND (t, 0)), + TREE_OPERAND (t, 1)); +@@ -659,7 +665,7 @@ + /* In general we can't negate B in A / B, because if A is INT_MIN and + B is 1, we may turn this into INT_MIN / -1 which is undefined + and actually traps on some architectures. */ +- if ((! INTEGRAL_TYPE_P (TREE_TYPE (t)) ++ if ((! ANY_INTEGRAL_TYPE_P (TREE_TYPE (t)) + || TYPE_OVERFLOW_WRAPS (TREE_TYPE (t)) + || (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST + && ! integer_onep (TREE_OPERAND (t, 1)))) +@@ -5816,12 +5822,13 @@ + } + + /* If the right sides are not constant, do the same for it. Also, +- disallow this optimization if a size or signedness mismatch occurs +- between the left and right sides. */ ++ disallow this optimization if a size, signedness or storage order ++ mismatch occurs between the left and right sides. */ + if (l_const == 0) + { + if (ll_bitsize != lr_bitsize || rl_bitsize != rr_bitsize + || ll_unsignedp != lr_unsignedp || rl_unsignedp != rr_unsignedp ++ || ll_reversep != lr_reversep + /* Make sure the two fields on the right + correspond to the left without being swapped. */ + || ll_bitpos - rl_bitpos != lr_bitpos - rr_bitpos) +@@ -7199,7 +7206,7 @@ + return 0; + offset += res; + if (offset >= len) +- return offset; ++ return (off == -1 && i < count - 1) ? 0 : offset; + if (off != -1) + off = 0; + } +@@ -11583,10 +11590,16 @@ + && integer_pow2p (arg1) + && TREE_CODE (TREE_OPERAND (arg0, 0)) == BIT_AND_EXPR + && operand_equal_p (TREE_OPERAND (TREE_OPERAND (arg0, 0), 1), +- arg1, OEP_ONLY_CONST)) ++ arg1, OEP_ONLY_CONST) ++ /* operand_equal_p compares just value, not precision, so e.g. ++ arg1 could be 8-bit -128 and be power of two, but BIT_AND_EXPR ++ second operand 32-bit -128, which is not a power of two (or vice ++ versa. */ ++ && integer_pow2p (TREE_OPERAND (TREE_OPERAND (arg0, 0), 1))) + return pedantic_non_lvalue_loc (loc, +- fold_convert_loc (loc, type, +- TREE_OPERAND (arg0, 0))); ++ fold_convert_loc (loc, type, ++ TREE_OPERAND (arg0, ++ 0))); + + /* Disable the transformations below for vectors, since + fold_binary_op_with_conditional_arg may undo them immediately, +@@ -14082,6 +14095,7 @@ + { + tree op = TREE_OPERAND (sub, 0); + tree optype = TREE_TYPE (op); ++ + /* *&CONST_DECL -> to the value of the const decl. */ + if (TREE_CODE (op) == CONST_DECL) + return DECL_INITIAL (op); +@@ -14115,12 +14129,13 @@ + && type == TREE_TYPE (optype)) + return fold_build1_loc (loc, REALPART_EXPR, type, op); + /* *(foo *)&vectorfoo => BIT_FIELD_REF */ +- else if (TREE_CODE (optype) == VECTOR_TYPE ++ else if (VECTOR_TYPE_P (optype) + && type == TREE_TYPE (optype)) + { + tree part_width = TYPE_SIZE (type); + tree index = bitsize_int (0); +- return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width, index); ++ return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width, ++ index); + } + } + +@@ -14138,8 +14153,17 @@ + op00type = TREE_TYPE (op00); + + /* ((foo*)&vectorfoo)[1] => BIT_FIELD_REF */ +- if (TREE_CODE (op00type) == VECTOR_TYPE +- && type == TREE_TYPE (op00type)) ++ if (VECTOR_TYPE_P (op00type) ++ && type == TREE_TYPE (op00type) ++ /* POINTER_PLUS_EXPR second operand is sizetype, unsigned, ++ but we want to treat offsets with MSB set as negative. ++ For the code below negative offsets are invalid and ++ TYPE_SIZE of the element is something unsigned, so ++ check whether op01 fits into HOST_WIDE_INT, which ++ implies it is from 0 to INTTYPE_MAXIMUM (HOST_WIDE_INT), and ++ then just use unsigned HOST_WIDE_INT because we want to treat ++ the value as unsigned. */ ++ && tree_fits_shwi_p (op01)) + { + tree part_width = TYPE_SIZE (type); + unsigned HOST_WIDE_INT max_offset +Index: gcc/lra-spills.c +=================================================================== +--- a/src/gcc/lra-spills.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lra-spills.c (.../branches/gcc-7-branch) +@@ -503,7 +503,7 @@ + INSN_UID (insn)); + lra_push_insn (insn); + if (lra_reg_spill_p || targetm.different_addr_displacement_p ()) +- lra_set_used_insn_alternative (insn, -1); ++ lra_set_used_insn_alternative (insn, LRA_UNKNOWN_ALT); + } + else if (CALL_P (insn) + /* Presence of any pseudo in CALL_INSN_FUNCTION_USAGE +Index: gcc/omp-low.c +=================================================================== +--- a/src/gcc/omp-low.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/omp-low.c (.../branches/gcc-7-branch) +@@ -1197,7 +1197,7 @@ + /* Global variables with "omp declare target" attribute + don't need to be copied, the receiver side will use them + directly. However, global variables with "omp declare target link" +- attribute need to be copied. */ ++ attribute need to be copied. Or when ALWAYS modifier is used. */ + if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP + && DECL_P (decl) + && ((OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_FIRSTPRIVATE_POINTER +@@ -1204,6 +1204,9 @@ + && (OMP_CLAUSE_MAP_KIND (c) + != GOMP_MAP_FIRSTPRIVATE_REFERENCE)) + || TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE) ++ && OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_ALWAYS_TO ++ && OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_ALWAYS_FROM ++ && OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_ALWAYS_TOFROM + && is_global_var (maybe_lookup_decl_in_outer_ctx (decl, ctx)) + && varpool_node::get_create (decl)->offloadable + && !lookup_attribute ("omp declare target link", +@@ -3261,6 +3264,43 @@ + + /* Re-gimplification and code generation routines. */ + ++/* Remove omp_member_access_dummy_var variables from gimple_bind_vars ++ of BIND if in a method. */ ++ ++static void ++maybe_remove_omp_member_access_dummy_vars (gbind *bind) ++{ ++ if (DECL_ARGUMENTS (current_function_decl) ++ && DECL_ARTIFICIAL (DECL_ARGUMENTS (current_function_decl)) ++ && (TREE_CODE (TREE_TYPE (DECL_ARGUMENTS (current_function_decl))) ++ == POINTER_TYPE)) ++ { ++ tree vars = gimple_bind_vars (bind); ++ for (tree *pvar = &vars; *pvar; ) ++ if (omp_member_access_dummy_var (*pvar)) ++ *pvar = DECL_CHAIN (*pvar); ++ else ++ pvar = &DECL_CHAIN (*pvar); ++ gimple_bind_set_vars (bind, vars); ++ } ++} ++ ++/* Remove omp_member_access_dummy_var variables from BLOCK_VARS of ++ block and its subblocks. */ ++ ++static void ++remove_member_access_dummy_vars (tree block) ++{ ++ for (tree *pvar = &BLOCK_VARS (block); *pvar; ) ++ if (omp_member_access_dummy_var (*pvar)) ++ *pvar = DECL_CHAIN (*pvar); ++ else ++ pvar = &DECL_CHAIN (*pvar); ++ ++ for (block = BLOCK_SUBBLOCKS (block); block; block = BLOCK_CHAIN (block)) ++ remove_member_access_dummy_vars (block); ++} ++ + /* If a context was created for STMT when it was scanned, return it. */ + + static omp_context * +@@ -7002,6 +7042,7 @@ + pop_gimplify_context (new_stmt); + + gimple_bind_append_vars (new_stmt, ctx->block_vars); ++ maybe_remove_omp_member_access_dummy_vars (new_stmt); + BLOCK_VARS (block) = gimple_bind_vars (new_stmt); + if (BLOCK_VARS (block)) + TREE_USED (block) = 1; +@@ -7100,6 +7141,7 @@ + splay_tree_node n; + struct omp_taskcopy_context tcctx; + location_t loc = gimple_location (task_stmt); ++ size_t looptempno = 0; + + child_fn = gimple_omp_task_copy_fn (task_stmt); + child_cfun = DECL_STRUCT_FUNCTION (child_fn); +@@ -7213,6 +7255,15 @@ + t = build2 (MODIFY_EXPR, TREE_TYPE (dst), dst, src); + append_to_statement_list (t, &list); + break; ++ case OMP_CLAUSE__LOOPTEMP_: ++ /* Fields for first two _looptemp_ clauses are initialized by ++ GOMP_taskloop*, the rest are handled like firstprivate. */ ++ if (looptempno < 2) ++ { ++ looptempno++; ++ break; ++ } ++ /* FALLTHRU */ + case OMP_CLAUSE_FIRSTPRIVATE: + decl = OMP_CLAUSE_DECL (c); + if (is_variable_sized (decl)) +@@ -7238,7 +7289,10 @@ + src = decl; + dst = build_simple_mem_ref_loc (loc, arg); + dst = omp_build_component_ref (dst, f); +- t = lang_hooks.decls.omp_clause_copy_ctor (c, dst, src); ++ if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE__LOOPTEMP_) ++ t = build2 (MODIFY_EXPR, TREE_TYPE (dst), dst, src); ++ else ++ t = lang_hooks.decls.omp_clause_copy_ctor (c, dst, src); + append_to_statement_list (t, &list); + break; + case OMP_CLAUSE_PRIVATE: +@@ -7452,6 +7506,7 @@ + /* Declare all the variables created by mapping and the variables + declared in the scope of the parallel body. */ + record_vars_into (ctx->block_vars, child_fn); ++ maybe_remove_omp_member_access_dummy_vars (par_bind); + record_vars_into (gimple_bind_vars (par_bind), child_fn); + + if (ctx->record_type) +@@ -7820,6 +7875,7 @@ + /* Declare all the variables created by mapping and the variables + declared in the scope of the target body. */ + record_vars_into (ctx->block_vars, child_fn); ++ maybe_remove_omp_member_access_dummy_vars (tgt_bind); + record_vars_into (gimple_bind_vars (tgt_bind), child_fn); + } + +@@ -8811,6 +8867,7 @@ + break; + case GIMPLE_BIND: + lower_omp (gimple_bind_body_ptr (as_a (stmt)), ctx); ++ maybe_remove_omp_member_access_dummy_vars (as_a (stmt)); + break; + case GIMPLE_OMP_PARALLEL: + case GIMPLE_OMP_TASK: +@@ -9015,6 +9072,16 @@ + all_contexts = NULL; + } + BITMAP_FREE (task_shared_vars); ++ ++ /* If current function is a method, remove artificial dummy VAR_DECL created ++ for non-static data member privatization, they aren't needed for ++ debuginfo nor anything else, have been already replaced everywhere in the ++ IL and cause problems with LTO. */ ++ if (DECL_ARGUMENTS (current_function_decl) ++ && DECL_ARTIFICIAL (DECL_ARGUMENTS (current_function_decl)) ++ && (TREE_CODE (TREE_TYPE (DECL_ARGUMENTS (current_function_decl))) ++ == POINTER_TYPE)) ++ remove_member_access_dummy_vars (DECL_INITIAL (current_function_decl)); + return 0; + } + +Index: gcc/vmsdbgout.c +=================================================================== +--- a/src/gcc/vmsdbgout.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/vmsdbgout.c (.../branches/gcc-7-branch) +@@ -147,6 +147,7 @@ + + static void vmsdbgout_init (const char *); + static void vmsdbgout_finish (const char *); ++static void vmsdbgout_early_finish (const char *); + static void vmsdbgout_assembly_start (void); + static void vmsdbgout_define (unsigned int, const char *); + static void vmsdbgout_undef (unsigned int, const char *); +@@ -176,7 +177,7 @@ + const struct gcc_debug_hooks vmsdbg_debug_hooks + = {vmsdbgout_init, + vmsdbgout_finish, +- debug_nothing_charstar, ++ vmsdbgout_early_finish, + vmsdbgout_assembly_start, + vmsdbgout_define, + vmsdbgout_undef, +@@ -1554,6 +1555,13 @@ + (*dwarf2_debug_hooks.outlining_inline_function) (decl); + } + ++static void ++vmsdbgout_early_finish (const char *filename) ++{ ++ if (write_symbols == VMS_AND_DWARF2_DEBUG) ++ (*dwarf2_debug_hooks.early_finish) (filename); ++} ++ + /* Output stuff that Debug requires at the end of every file and generate the + VMS Debug debugging info. */ + +Index: gcc/reorg.c +=================================================================== +--- a/src/gcc/reorg.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/reorg.c (.../branches/gcc-7-branch) +@@ -1035,7 +1035,8 @@ + + static void + steal_delay_list_from_target (rtx_insn *insn, rtx condition, rtx_sequence *seq, +- vec *delay_list, resources *sets, ++ vec *delay_list, ++ struct resources *sets, + struct resources *needed, + struct resources *other_needed, + int slots_to_fill, int *pslots_filled, +@@ -1048,7 +1049,7 @@ + int used_annul = 0; + int i; + struct resources cc_set; +- bool *redundant; ++ rtx_insn **redundant; + + /* We can't do anything if there are more delay slots in SEQ than we + can handle, or if we don't know that it will be a taken branch. +@@ -1087,7 +1088,7 @@ + if (! targetm.can_follow_jump (insn, seq->insn (0))) + return; + +- redundant = XALLOCAVEC (bool, XVECLEN (seq, 0)); ++ redundant = XALLOCAVEC (rtx_insn *, XVECLEN (seq, 0)); + for (i = 1; i < seq->len (); i++) + { + rtx_insn *trial = seq->insn (i); +@@ -1151,7 +1152,10 @@ + we therefore decided not to copy. */ + for (i = 1; i < seq->len (); i++) + if (redundant[i]) +- update_block (seq->insn (i), insn); ++ { ++ fix_reg_dead_note (redundant[i], insn); ++ update_block (seq->insn (i), insn); ++ } + + /* Show the place to which we will be branching. */ + *pnew_thread = first_active_target_insn (JUMP_LABEL (seq->insn (0))); +@@ -1198,6 +1202,7 @@ + for (i = 1; i < seq->len (); i++) + { + rtx_insn *trial = seq->insn (i); ++ rtx_insn *prior_insn; + + /* If TRIAL sets CC0, stealing it will move it too far from the use + of CC0. */ +@@ -1209,8 +1214,9 @@ + break; + + /* If this insn was already done, we don't need it. */ +- if (redundant_insn (trial, insn, *delay_list)) ++ if ((prior_insn = redundant_insn (trial, insn, *delay_list))) + { ++ fix_reg_dead_note (prior_insn, insn); + update_block (trial, insn); + delete_from_delay_slot (trial); + continue; +@@ -1790,15 +1796,14 @@ + } + } + +-/* Delete any REG_UNUSED notes that exist on INSN but not on REDUNDANT_INSN. ++/* Delete any REG_UNUSED notes that exist on INSN but not on OTHER_INSN. + + This handles the case of udivmodXi4 instructions which optimize their +- output depending on whether any REG_UNUSED notes are present. +- we must make sure that INSN calculates as many results as REDUNDANT_INSN +- does. */ ++ output depending on whether any REG_UNUSED notes are present. We must ++ make sure that INSN calculates as many results as OTHER_INSN does. */ + + static void +-update_reg_unused_notes (rtx_insn *insn, rtx redundant_insn) ++update_reg_unused_notes (rtx_insn *insn, rtx other_insn) + { + rtx link, next; + +@@ -1810,8 +1815,7 @@ + || !REG_P (XEXP (link, 0))) + continue; + +- if (! find_regno_note (redundant_insn, REG_UNUSED, +- REGNO (XEXP (link, 0)))) ++ if (!find_regno_note (other_insn, REG_UNUSED, REGNO (XEXP (link, 0)))) + remove_note (insn, link); + } + } +@@ -2324,9 +2328,8 @@ + taken and THREAD_IF_TRUE is set. This is used for the branch at the + end of a loop back up to the top. + +- OWN_THREAD and OWN_OPPOSITE_THREAD are true if we are the only user of the +- thread. I.e., it is the fallthrough code of our jump or the target of the +- jump when we are the only jump going there. ++ OWN_THREAD is true if we are the only user of the thread, i.e. it is ++ the target of the jump when we are the only jump going there. + + If OWN_THREAD is false, it must be the "true" thread of a jump. In that + case, we can only take insns from the head of the thread for our delay +@@ -3117,7 +3120,7 @@ + /* Look at every JUMP_INSN and see if we can improve it. */ + for (insn = first; insn; insn = next) + { +- rtx_insn *other; ++ rtx_insn *other, *prior_insn; + bool crossing; + + next = next_active_insn (insn); +@@ -3223,8 +3226,9 @@ + /* See if the first insn in the delay slot is redundant with some + previous insn. Remove it from the delay slot if so; then set up + to reprocess this insn. */ +- if (redundant_insn (pat->insn (1), delay_insn, vNULL)) ++ if ((prior_insn = redundant_insn (pat->insn (1), delay_insn, vNULL))) + { ++ fix_reg_dead_note (prior_insn, insn); + update_block (pat->insn (1), insn); + delete_from_delay_slot (pat->insn (1)); + next = prev_active_insn (next); +Index: gcc/tree-ssa-sccvn.c +=================================================================== +--- a/src/gcc/tree-ssa-sccvn.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-sccvn.c (.../branches/gcc-7-branch) +@@ -1245,7 +1245,9 @@ + return true; + } + if (!addr_base +- || TREE_CODE (addr_base) != MEM_REF) ++ || TREE_CODE (addr_base) != MEM_REF ++ || (TREE_CODE (TREE_OPERAND (addr_base, 0)) == SSA_NAME ++ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (TREE_OPERAND (addr_base, 0)))) + return false; + + off += addr_offset; +@@ -1258,6 +1260,7 @@ + ptr = gimple_assign_rhs1 (def_stmt); + ptroff = gimple_assign_rhs2 (def_stmt); + if (TREE_CODE (ptr) != SSA_NAME ++ || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ptr) + || TREE_CODE (ptroff) != INTEGER_CST) + return false; + +@@ -1933,6 +1936,7 @@ + base2 = get_ref_base_and_extent (gimple_assign_lhs (def_stmt), + &offset2, &size2, &maxsize2, &reverse); + if (maxsize2 != -1 ++ && maxsize2 == size2 + && operand_equal_p (base, base2, 0) + && offset2 <= offset + && offset2 + size2 >= offset + maxsize) +@@ -1978,8 +1982,9 @@ + if (TREE_CODE (rhs) == SSA_NAME) + rhs = SSA_VAL (rhs); + len = native_encode_expr (gimple_assign_rhs1 (def_stmt), +- buffer, sizeof (buffer)); +- if (len > 0) ++ buffer, sizeof (buffer), ++ (offset - offset2) / BITS_PER_UNIT); ++ if (len > 0 && len * BITS_PER_UNIT >= ref->size) + { + tree type = vr->type; + /* Make sure to interpret in a type that has a range +@@ -1988,10 +1993,7 @@ + && ref->size != TYPE_PRECISION (vr->type)) + type = build_nonstandard_integer_type (ref->size, + TYPE_UNSIGNED (type)); +- tree val = native_interpret_expr (type, +- buffer +- + ((offset - offset2) +- / BITS_PER_UNIT), ++ tree val = native_interpret_expr (type, buffer, + ref->size / BITS_PER_UNIT); + /* If we chop off bits because the types precision doesn't + match the memory access size this is ok when optimizing +Index: gcc/ChangeLog +=================================================================== +--- a/src/gcc/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,2240 @@ ++2018-11-28 Richard Biener ++ ++ PR tree-optimization/79351 ++ * tree-ssa-sccvn.c (vn_reference_lookup_3): For assignments from ++ empty CONSTRUCTORs ensure the store is at a constant position. ++ ++2018-11-26 Iain Sandoe ++ ++ Backport from mainline ++ 2018-08-22 Iain Sandoe ++ ++ PR bootstrap/81033 ++ PR target/81733 ++ PR target/52795 ++ * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New. ++ (dwarf2out_switch_text_section): Generate a local label for the second ++ function sub-section and apply it as the second FDE start label. ++ * gcc/final.c (final_scan_insn_1): Emit second FDE label after the second ++ sub-section start. ++ ++2018-11-26 Iain Sandoe ++ ++ 2018-08-15 Iain Sandoe ++ ++ * config/darwin.c ++ (darwin_function_switched_text_sections): Delete. ++ * gcc/config/darwin.h ++ (TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS): Likewise. ++ ++2018-11-26 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-11-20 Andreas Krebbel ++ ++ * config/s390/s390.md ("clztidi2"): Swap the RTX's written to the ++ DImode parts of the target operand. ++ ++2018-11-26 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-11-26 Andreas Krebbel ++ ++ * doc/invoke.texi: Document z14/arch12 -march option. ++ ++2018-10-19 Richard Biener ++ ++ PR middle-end/87645 ++ Backport from mainline ++ 2018-07-12 Richard Biener ++ ++ * gimple-match-head.c (gimple_resimplify1): Apply recursion ++ limit. ++ (gimple_resimplify2): Likewise. ++ (gimple_resimplify3): Likewise. ++ (gimple_resimplify4): Likewise. ++ ++2018-11-26 Richard Biener ++ ++ Backport from mainline ++ 2018-10-15 Richard Biener ++ ++ PR middle-end/87610 ++ * tree-ssa-structalias.c (struct vls_data): Add escaped_p member. ++ (visit_loadstore): When a used restrict tag escaped verify that ++ the points-to solution of "other" pointers do not include ++ escaped. ++ (compute_dependence_clique): If a used restrict tag escaped ++ communicated that down to visit_loadstore. ++ ++ 2018-10-25 Richard Biener ++ ++ PR tree-optimization/87665 ++ PR tree-optimization/87745 ++ * tree-vectorizer.h (get_earlier_stmt): Remove. ++ (get_later_stmt): Pick up UID from the original non-pattern stmt. ++ ++ 2018-10-24 Richard Biener ++ ++ PR tree-optimization/87665 ++ * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust ++ to reflect reality. ++ ++2018-11-26 Richard Biener ++ ++ Backport from mainline ++ 2018-06-14 Richard Biener ++ ++ PR middle-end/86139 ++ * tree-vect-generic.c (build_word_mode_vector_type): Remove ++ duplicate and harmful type_hash_canon. ++ ++ 2018-06-15 Richard Biener ++ ++ PR middle-end/86076 ++ * tree-cfg.c (move_stmt_op): unshare invariant addresses ++ before adjusting their block. ++ ++2018-11-22 Uros Bizjak ++ ++ Backport from mainline ++ 2018-11-16 Uros Bizjak ++ ++ PR target/88051 ++ * config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC. ++ (movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec. ++ ++2018-11-22 Tom de Vries ++ ++ backport from trunk: ++ 2017-11-19 Tom de Vries ++ ++ PR target/82961 ++ * vmsdbgout.c (vmsdbgout_early_finish): New function. ++ (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish. ++ ++2018-11-21 Mihail Ionescu ++ ++ PR target/87867 ++ Backport from mainiline ++ 2018-09-26 Eric Botcazou ++ ++ * config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks. ++ (arm32_output_mi_thunk): Deal with long calls. ++ ++2018-11-20 Richard Biener ++ ++ Backport from mainline ++ 2018-03-12 Richard Biener ++ ++ PR tree-optimization/84777 ++ * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For ++ force-vectorize loops ignore whether we are optimizing for size. ++ ++ 2018-01-26 Richard Biener ++ ++ PR rtl-optimization/84003 ++ * dse.c (record_store): Only record redundant stores when ++ the earlier store aliases at least all accesses the later one does. ++ ++2018-11-20 Xuepeng Guo ++ ++ Backport from mainline ++ 2018-11-05 Xuepeng Guo ++ ++ PR target/87853 ++ * config/i386/emmintrin.h (__v16qs): New to cope with option ++ -funsigned-char. ++ (_mm_cmpeq_epi8): Replace __v16qi with __v16qs. ++ (_mm_cmplt_epi8): Likewise. ++ (_mm_cmpgt_epi8): Likewise. ++ ++2018-11-20 Eric Botcazou ++ ++ PR rtl-optimization/85925 ++ * rtl.h (word_register_operation_p): New predicate. ++ * combine.c (record_dead_and_set_regs_1): Only apply specific handling ++ for WORD_REGISTER_OPERATIONS targets to word_register_operation_p RTX. ++ * rtlanal.c (nonzero_bits1): Likewise. Adjust couple of comments. ++ (num_sign_bit_copies1): Likewise. ++ ++2018-11-18 Uros Bizjak ++ ++ Backport from mainline ++ 2018-11-11 Uros Bizjak ++ ++ PR target/87928 ++ * config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI ++ instead of (TARGET_64BIT && ix86_abi == MS_ABI). ++ * config/i386/darwin.h (STACK_BOUNDARY): Ditto. ++ * config/i386/cygming.h (STACK_BOUNDARY): Remove. ++ ++2018-11-15 Nathan Sidwell ++ ++ PR debug/88006 ++ PR debug/87462 ++ * dwarf2out.c (dwarf2out_finish): Apply resolve_addr to comdat ++ type list. ++ ++2018-11-11 Uros Bizjak ++ ++ Backport from mainline ++ 2018-11-04 Uros Bizjak ++ ++ PR middle-end/58372 ++ * cfgexpand.c (pass_expand::execute): Move the call to ++ finish_eh_generation in front of the call to expand_stack_alignment. ++ ++2018-11-07 Max Filippov ++ ++ Backport from mainline ++ 2018-11-05 Max Filippov ++ ++ * config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0. ++ ++2018-10-26 Bill Schmidt ++ ++ Backport from mainline ++ 2018-10-19 Bill Schmidt ++ ++ PR tree-optimization/87473 ++ * gimple-ssa-strength-reduction.c (record_phi_increments): For ++ phi arguments identical to the base expression of the phi ++ candidate, record a phi-adjust increment of zero minus the index ++ expression of the hidden basis. ++ (phi_incr_cost): For phi arguments identical to the base ++ expression of the phi candidate, the difference to compare against ++ the increment is zero minus the index expression of the hidden ++ basis, and there is no potential savings from replacing the (phi) ++ statement. ++ (ncd_with_phi): For phi arguments identical to the base expression ++ of the phi candidate, the difference to compare against the ++ increment is zero minus the index expression of the hidden basis. ++ (all_phi_incrs_profitable): For phi arguments identical to the ++ base expression of the phi candidate, the increment to be checked ++ for profitability is zero minus the index expression of the hidden ++ basis. ++ ++2018-10-19 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-10-15 Andreas Krebbel ++ ++ * config/s390/s390.c (s390_expand_vec_init): Force vector element ++ into reg if it isn't a general operand. ++ ++2018-10-17 Eric Botcazou ++ ++ PR middle-end/87623 ++ * fold-const.c (fold_truth_andor_1): If the right side is not constant, ++ bail out if both sides do not have the same storage order. ++ ++2018-10-16 Wilco Dijkstra ++ ++ Backported from mainline ++ PR target/87511 ++ * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p): ++ Use HOST_WIDE_INT_1U for shift. ++ ++2018-10-12 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-10-10 Jakub Jelinek ++ ++ PR target/87550 ++ * config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set ++ to special_args set. ++ ++ 2018-09-12 Jakub Jelinek ++ ++ PR middle-end/87248 ++ * fold-const.c (fold_ternary_loc) : Verify also that ++ BIT_AND_EXPR's second operand is a power of two. Formatting fix. ++ ++ 2018-08-27 Jakub Jelinek ++ ++ PR rtl-optimization/87065 ++ * combine.c (simplify_if_then_else): Formatting fix. ++ (if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P ++ check. ++ (known_cond): Don't return const_true_rtx for vector modes. Use ++ CONST0_RTX instead of const0_rtx. Formatting fixes. ++ ++ 2018-07-24 Jakub Jelinek ++ ++ PR middle-end/86627 ++ * expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN ++ and size > HOST_BITS_PER_WIDE_INT. For size > HOST_BITS_PER_WIDE_INT ++ and abs_d == d, do the power of two handling if profitable. ++ ++ 2018-07-17 Jakub Jelinek ++ ++ PR middle-end/86542 ++ * omp-low.c (create_task_copyfn): Copy over also fields corresponding ++ to _looptemp_ clauses, other than the first two. ++ ++ PR middle-end/86539 ++ * gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init ++ and cond temporaries don't have reference type if iterator has ++ pointer type. For init use &for_pre_body instead of pre_p if ++ for_pre_body is non-empty. ++ ++ 2018-07-26 Jakub Jelinek ++ ++ PR middle-end/86660 ++ * omp-low.c (scan_sharing_clauses): Don't ignore map clauses for ++ declare target to variables if they have always,{to,from,tofrom} map ++ kinds. ++ ++2018-10-12 Richard Biener ++ ++ Backport from mainline ++ 2018-08-23 Richard Biener ++ ++ PR middle-end/87024 ++ * tree-inline.c (copy_bb): Drop unused __builtin_va_arg_pack_len ++ calls. ++ ++ 2018-08-17 Richard Biener ++ ++ PR middle-end/86505 ++ * tree-inline.c (copy_bb): When inlining __builtin_va_arg_pack_len () ++ across a va-arg-pack using call adjust its return value accordingly. ++ ++2018-10-09 H.J. Lu ++ ++ Backport from mainline ++ 2018-09-29 H.J. Lu ++ ++ PR target/87370 ++ * config/i386/i386.c (construct_container): Use TImode for ++ BLKmode values in 2 integer registers. ++ ++2018-10-08 H.J. Lu ++ ++ Backport from mainline ++ 2018-10-08 H.J. Lu ++ ++ PR target/87517 ++ * config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd): ++ Defined with __builtin_ia32_vfmaddsubpd512_mask. ++ ++2018-10-05 H.J. Lu ++ ++ Backport from mainline ++ 2018-10-05 H.J. Lu ++ ++ PR target/87522 ++ * config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to ++ assembler for -mavx. ++ * config/i386/gnu-user64.h (ASM_SPEC): Likewise. ++ ++2018-10-03 Uros Bizjak ++ ++ Backport from mainline ++ 2018-09-28 Uros Bizjak ++ ++ * config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG. ++ (GET_SSE_REGNO): Rename from SSE_REGNO. Update all uses for rename. ++ ++2018-10-03 Jonathan Wakely ++ ++ PR other/87353 ++ * doc/invoke.texi (Link Options): Fix formatting and grammar. ++ ++2018-10-01 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-06-29 Kyrylo Tkachov ++ ++ * config/arm/arm.c (output_move_double): Don't allow STRD instructions ++ if starting source register is not even. ++ ++2018-09-29 Jakub Jelinek ++ ++ PR target/87467 ++ * config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use ++ __m512d type for __A argument rather than __m512. ++ ++2018-09-27 Michael Meissner ++ ++ Backport from mainline ++ 2018-08-20 Michael Meissner ++ ++ PR target/87033 ++ * config/rs6000/rs6000.md (extendsi2): Change constraints ++ from 'Y' to 'YZ' to enable the LWAX instruction to be generated ++ for indexed loads. ++ ++2018-09-21 Eric Botcazou ++ ++ * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false ++ if the call takes a static chain. ++ ++2018-09-19 John David Anglin ++ ++ * config/pa/pa.md (atomic_storeqi): Restore deleted expander. ++ (atomic_storehi): Likewise. ++ (atomic_storesi): Likewise. ++ (atomic_loaddi): Restore compare and swap exchange loop code. ++ ++2018-09-12 Segher Boessenkool ++ ++ Backport from trunk ++ 2018-08-24 Segher Boessenkool ++ ++ PR target/86989 ++ * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is ++ the TOC register. ++ ++2018-09-12 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-09-12 Andreas Krebbel ++ ++ * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New ++ constants. ++ ("trunc2") ++ ("trunc2") ++ ("extend2") ++ ("extend2"): Set proper rounding mode ++ according to the target operand type. ++ ++2018-09-04 Max Filippov ++ ++ Backport from mainline ++ 2018-09-04 Max Filippov ++ ++ * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and ++ XOR operations in NAND case. ++ ++2018-09-04 Jonathan Wakely ++ ++ * doc/invoke.texi (Option Summary): Add -Waligned-new. ++ ++2018-09-03 Tom de Vries ++ ++ backport from trunk: ++ 2018-06-21 Tom de Vries ++ ++ PR tree-optimization/85859 ++ * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call ++ test with comment from bb_no_side_effects_p. ++ ++2018-08-25 Jozef Lawrynowicz ++ ++ Backport from mainline ++ PR target/86662 ++ * gcc/tree.c (build_common_tree_nodes): Initialize integer_types array ++ with all enabled __intN types. ++ ++ * gcc/testsuite/gcc.target/msp430/pr86662.c: New test. ++ ++2018-08-21 H.J. Lu ++ ++ Backport from mainline ++ 2018-08-20 H.J. Lu ++ ++ PR target/87014 ++ * config/i386/i386.md (eh_return): Always update EH return ++ address in word_mode. ++ ++2018-08-17 John David Anglin ++ ++ Backport from mainline ++ 2018-08-11 John David Anglin ++ ++ * config/pa/pa.md (UNSPEC_MEMORY_BARRIER): New unspec enum. ++ Update comment for atomic instructions. ++ (atomic_storeqi, atomic_storehi, atomic_storesi, atomic_storesf, ++ atomic_loaddf, atomic_loaddf_1, atomic_storedf, atomic_storedf_1): ++ Remove. ++ (atomic_loaddi): Revise fence expansion to only emit fence prior to ++ load for __ATOMIC_SEQ_CST model. ++ (atomic_loaddi_1): Remove float register target. ++ (atomic_storedi): Handle CONST_INT values. ++ (atomic_storedi_1): Remove float register source. Add special case ++ for zero value. ++ (memory_barrier): New expander and insn. ++ ++2018-08-13 Segher Boessenkool ++ ++ Backport from mainline ++ 2018-05-09 Segher Boessenkool ++ ++ PR rtl-optimization/85645 ++ * regrename.c (build_def_use): Also kill the chains that include the ++ destination of a REG_CFA_REGISTER note. ++ ++ PR rtl-optimization/85645 ++ * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an ++ insn that has a REG_CFA_REGISTER note. ++ ++2018-08-10 Segher Boessenkool ++ ++ Backport from mainline ++ 2018-06-19 Segher Boessenkool ++ ++ PR target/86197 ++ * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An ++ ieee128 argument takes up only one (vector) register, not two (floating ++ point) registers. ++ ++2018-08-02 Jozef Lawrynowicz ++ ++ Backport from mainline ++ 2018-07-31 Jozef Lawrynowicz ++ ++ PR middle-end/86705 ++ * gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when ++ MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the ++ requested variable alignment. ++ (expand_one_ssa_partition): Likewise. ++ (expand_one_var): Likewise. ++ ++2018-08-01 Richard Biener ++ ++ PR bootstrap/86724 ++ * graphite.h: Include isl/id.h and isl/space.h to allow build ++ with ISL 0.20. ++ ++2018-07-29 John David Anglin ++ ++ * config/pa/pa.c (pa_output_addr_vec): Align address table. ++ * config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment. ++ * config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define. ++ ++2018-07-17 Kyrylo Tkachov ++ ++ Backport from mainline ++ PR target/84168 ++ 2017-09-28 Joseph Myers ++ ++ * config/aarch64/aarch64.c (aarch64_elf_asm_constructor) ++ (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section ++ when creating .init_array and .fini_array sections with priority ++ specified. ++ ++2018-07-12 Richard Biener ++ ++ PR target/84829 ++ * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC): ++ Remove -mieee-fp handling. ++ ++2018-07-10 Carl Love ++ ++ Backport from mainline ++ 2017-09-07 Carl Love ++ ++ * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to ++ the sldi instruction. ++ ++2018-06-29 Martin Liska ++ ++ Backport from mainline ++ 2018-01-10 Kelvin Nilsen ++ ++ * lex.c (search_line_fast): Remove illegal coercion of an ++ unaligned pointer value to vector pointer type and replace with ++ use of __builtin_vec_vsx_ld () built-in function, which operates ++ on unaligned pointer values. ++ ++2018-06-27 David Edelsohn ++ ++ 2018-06-19 Tony Reix ++ Damien Bergamini ++ David Edelsohn ++ ++ * collect2.c (static_obj): New variable. ++ (static_libs): New variable. ++ (is_in_list): Uncomment declaration. ++ (main): Track AIX libraries linked statically. ++ (is_in_list): Uncomment definition. ++ (scan_prog_file): Don't add AIX shared libraries initializer ++ to constructor list if linking statically. ++ ++2018-06-26 Kelvin Nilsen ++ ++ Backported from mainline ++ 2018-06-20 Kelvin Nilsen ++ ++ * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change ++ behavior of vec_packsu (vector unsigned long long, vector unsigned ++ long long) to match behavior of vec_packs with same signature. ++ ++2018-06-26 Robin Dapp ++ ++ * config/s390/s390.h (enum processor_flags): Do not use ++ default tune parameter when -march was specified. ++ ++2018-06-26 Jakub Jelinek ++ ++ PR target/86314 ++ * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s): ++ Check reg_overlap_mentioned_p in addition to reg_set_p with the same ++ operands. ++ ++2018-06-25 Michael Meissner ++ ++ Back port from trunk ++ 2018-04-17 Michael Meissner ++ ++ PR target/85424 ++ * config/rs6000/rs6000.md (pack): Do not try handle a pack ++ where the inputs overlap with the output. ++ ++2018-06-25 Jakub Jelinek ++ ++ PR target/84786 ++ * config/i386/sse.md (vshift_count): New mode attr. ++ (3): Use N instead of vN ++ as last operand's constraint for VI2_AVX2_AVX512BW shifts. Use YvN ++ instead of vN as last operand's constraint for VI48_AVX2 shifts. ++ ++2018-06-23 Richard Sandiford ++ ++ PR tree-optimization/85989 ++ * gimple-ssa-backprop.c (backprop::m_visited_phis): New member ++ variable. ++ (backprop::intersect_uses): Check it when deciding whether this ++ is a backedge reference. ++ (backprop::process_block): Add each phi to m_visited_phis ++ after visiting it, then clear it at the end. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-06-20 Jakub Jelinek ++ ++ PR tree-optimization/86231 ++ * tree-vrp.c (union_ranges): For ( [ ) ] or ( )[ ] range and ++ anti-range don't overwrite *vr0min before using it to compute *vr0max. ++ ++ 2018-06-15 Jakub Jelinek ++ ++ PR middle-end/85878 ++ * expr.c (expand_assignment): Only call store_expr for halves if the ++ mode is the same. ++ ++ 2018-06-14 Jakub Jelinek ++ ++ PR target/85945 ++ * lower-subreg.c (find_decomposable_subregs): Don't decompose float ++ subregs of multi-word pseudos unless the float mode has word size. ++ ++ 2018-06-04 Jakub Jelinek ++ ++ PR c++/86025 ++ * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. ++ ++ 2018-05-06 Jakub Jelinek ++ ++ PR c++/85659 ++ * cfgexpand.c (expand_asm_stmt): Don't create a temporary if ++ the type is addressable. Don't force op into register if it has ++ BLKmode. ++ ++ 2018-05-01 Jakub Jelinek ++ ++ PR web/85578 ++ * doc/install.texi2html: Replace _002d with - and _002a with * in ++ generated html files using sed. ++ ++ 2018-04-27 Jakub Jelinek ++ ++ PR tree-optimization/85529 ++ * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB ++ argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE, ++ rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious ++ zero extension or masking of the MSB bit. ++ (optimize_range_tests): Add FIRST_BB argument, pass it through ++ to optimize_range_tests_var_bound. ++ (maybe_optimize_range_tests, reassociate_bb): Adjust ++ optimize_range_tests callers. ++ ++ 2018-04-19 Jakub Jelinek ++ ++ PR tree-optimization/85446 ++ * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require ++ the integral and pointer types to have the same precision. ++ ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version ++ by using gcc_base_ver to generate a gcc_driver_version, and use ++ it when generating GCC_DRIVER_NAME. ++ * configure: Regenerate. ++ ++ 2018-04-17 Jakub Jelinek ++ ++ PR rtl-optimization/85431 ++ * dse.c (record_store): Ignore zero width stores. ++ ++ PR target/85430 ++ * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu. ++ ++ 2018-04-10 Jakub Jelinek ++ ++ PR rtl-optimization/85300 ++ * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also ++ into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if ++ simplify_unary_operation fails. ++ ++ 2018-04-07 Jakub Jelinek ++ ++ PR tree-optimization/85257 ++ * fold-const.c (native_encode_vector): If not all elts could fit ++ and off is -1, return 0 rather than offset. ++ * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass ++ (offset - offset2) / BITS_PER_UNIT as 4th argument to ++ native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't ++ adjust buffer in native_interpret_expr call. ++ ++ 2018-04-06 Jakub Jelinek ++ ++ PR debug/85252 ++ * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only ++ build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST. ++ ++ 2018-04-03 Jakub Jelinek ++ ++ PR rtl-optimization/85167 ++ * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and ++ bb_defs if *split_p, instead preinitialize it to NULL. ++ ++ 2018-03-28 Jakub Jelinek ++ ++ PR target/85095 ++ * config/i386/i386.md (*add3_carry_0, *addsi3_carry_zext_0, ++ *sub3_carry_0, *subsi3_carry_zext_0): New patterns. ++ ++ 2018-03-23 Jakub Jelinek ++ ++ PR inline-asm/85022 ++ * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have ++ known size by default. ++ ++ PR inline-asm/85034 ++ * function.c (match_asm_constraints_1): Don't optimize if input ++ doesn't satisfy general_operand predicate for output's mode. ++ ++ PR inline-asm/85022 ++ * alias.c (write_dependence_p): Don't require for x_canonicalized ++ non-VOIDmode if x has VOIDmode. ++ ++ 2018-03-22 Jakub Jelinek ++ ++ PR inline-asm/84941 ++ * function.c (match_asm_constraints_1): Don't do the optimization ++ if input isn't a REG, SUBREG, MEM or constant. ++ ++ PR sanitizer/85018 ++ * dwarf2asm.c (dw2_output_indirect_constant_1): Set ++ DECL_INITIAL (decl) to decl at the end. ++ * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change, ++ adjust the comment. ++ ++ 2018-03-20 Jakub Jelinek ++ ++ PR debug/84875 ++ * dce.c (delete_unmarked_insns): Don't remove frame related noop moves ++ holding REG_CFA_RESTORE notes, instead turn them into a USE. ++ ++ PR c/84953 ++ * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type ++ instead of TREE_TYPE (s1) for the return value. ++ ++ PR target/84990 ++ * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off ++ flag_section_anchors. ++ * varasm.c (use_blocks_for_decl_p): Remove hack for ++ dw2_force_const_mem. ++ ++ 2018-03-19 Jakub Jelinek ++ ++ PR sanitizer/78651 ++ * dwarf2asm.c: Include fold-const.c. ++ (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR ++ of decl rather than decl itself. ++ ++ 2018-03-19 Maxim Ostapenko ++ ++ PR sanitizer/78651 ++ * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before ++ calling assemble_variable. ++ ++ 2018-03-16 Jakub Jelinek ++ ++ PR target/84899 ++ * postreload.c (reload_combine_recognize_pattern): Perform ++ INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and ++ truncate_int_for_mode the result for the destination's mode. ++ ++ PR tree-optimization/84841 ++ * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from ++ 1 << 3. ++ (FLOAT_ONE_CONST_TYPE): Define. ++ (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0. ++ (sort_by_operand_rank): Put entries with higher constant_type last ++ rather than first to match comments. ++ ++ 2018-03-15 Jakub Jelinek ++ ++ PR c++/79085 ++ * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment ++ check and use address of target always. ++ ++ PR target/84860 ++ * optabs.c (emit_conditional_move): Pass address of cmode's copy ++ rather than address of cmode as last argument to prepare_cmp_insn. ++ ++ 2018-03-13 Jakub Jelinek ++ ++ PR middle-end/84834 ++ * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of ++ integer_pow2p@2 and test integer_pow2p in condition. ++ (A < 0 ? C : 0): Similarly for @1. ++ ++ PR target/84827 ++ * config/i386/i386.md (round2): For 387 fancy math, disable ++ pattern if -ftrapping-math -fno-fp-int-builtin-inexact. ++ ++ PR target/84786 ++ * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v ++ on the last operand. ++ ++ 2018-03-09 Jakub Jelinek ++ ++ PR target/84772 ++ * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp ++ temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY. ++ ++ PR c++/84767 ++ * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped ++ decl, use remap_type if we want to use the type. ++ ++ 2018-03-08 Jakub Jelinek ++ ++ PR tree-optimization/84739 ++ * tree-tailcall.c (find_tail_calls): Check call arguments against ++ DECL_ARGUMENTS (current_function_decl) rather than ++ DECL_ARGUMENTS (func) when checking for tail recursion. ++ ++ 2018-03-05 Jakub Jelinek ++ ++ PR target/84700 ++ * combine.c (combine_simplify_rtx): Don't try to simplify if ++ if_then_else_cond returned non-NULL, but either true_rtx or false_rtx ++ are equal to x. ++ ++2018-06-22 Andre Vieira ++ ++ Backport from mainline ++ 2018-06-05 Andre Vieira ++ ++ * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to ++ __typeof__. ++ (cmse_check_pointed_object): Likewise. ++ ++2018-06-22 Andre Vieira ++ ++ Backport from mainline ++ 2018-05-17 Jerome Lambourg ++ ++ * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove ++ #include . Replace intptr_t with __INTPTR_TYPE__. ++ ++2018-06-21 Sebastian Huber ++ ++ Backport from mainline ++ 2018-06-15 Sebastian Huber ++ ++ * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom ++ multilibs for *-*-rtems*. ++ * config/riscv/t-rtems: New file. ++ ++2018-06-19 Max Filippov ++ ++ Backport from mainline ++ 2018-06-19 Max Filippov ++ ++ * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec ++ constant. ++ (allocate_stack, frame_blockage, *frame_blockage): New patterns. ++ ++2018-06-19 Eric Botcazou ++ ++ * gimplify.c (gimplify_init_constructor): Really never clear for an ++ incomplete constructor if CONSTRUCTOR_NO_CLEARING is set. ++ ++2018-06-18 Martin Sebor ++ ++ PR middle-end/82063 ++ * calls.c (alloc_max_size): Correct a logic error/typo. ++ Treat excessive arguments as infinite. Warn for invalid arguments. ++ * doc/invoke.texi (-Walloc-size-larger-than): Update. ++ ++2018-06-14 Sebastian Huber ++ ++ Backport from mainline ++ 2018-06-14 Sebastian Huber ++ ++ * config/rtems.h (STDINT_LONG32): Define. ++ ++2018-06-11 Peter Bergner ++ ++ Backport from mainline ++ 2018-06-08 Peter Bergner ++ ++ PR target/85755 ++ * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC ++ addresses. ++ ++2018-06-07 Peter Bergner ++ ++ Backport from mainline ++ 2018-06-06 Peter Bergner ++ ++ PR target/63177 ++ * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9. ++ Don't handle -mcpu=power8 if -mpower9-vector is also used. ++ ++2018-06-07 Richard Biener ++ ++ Backport from mainline ++ 2018-05-04 Richard Biener ++ ++ PR middle-end/85588 ++ * fold-const.c (negate_expr_p): Restrict negation of operand ++ zero of a division to when we know that can happen without ++ overflow. ++ (fold_negate_expr_1): Likewise. ++ ++ 2018-05-02 Richard Biener ++ ++ PR middle-end/85567 ++ * gimplify.c (gimplify_save_expr): When in SSA form allow ++ SAVE_EXPRs to compute to SSA vars. ++ ++ 2018-05-02 Richard Biener ++ ++ PR tree-optimization/85597 ++ * tree-vect-stmts.c (vectorizable_operation): For ternary SLP ++ do not use split vect_get_vec_defs call but call vect_get_slp_defs ++ directly. ++ ++2018-06-05 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-06-05 Andreas Krebbel ++ ++ * config/s390/s390-builtin-types.def: Add void function type. ++ * config/s390/s390-builtins.def: Use the function type for the ++ tbeginc builtin. ++ ++2018-06-01 Bill Schmidt ++ ++ PR tree-optimization/85712 ++ Backport from mainline: ++ 2018-05-23 Bill Schmidt ++ ++ PR tree-optimization/85712 ++ * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add ++ first_interp field. ++ (alloc_cand_and_find_basis): Initialize first_interp field. ++ (slsr_process_mul): Modify first_interp field. ++ (slsr_process_add): Likewise. ++ (slsr_process_cast): Modify first_interp field for each new ++ interpretation. ++ (slsr_process_copy): Likewise. ++ (dump_candidate): Dump first_interp field. ++ (replace_mult_candidate): Process all interpretations, not just ++ subsequent ones. ++ (replace_rhs_if_not_dup): Likewise. ++ (replace_one_candidate): Likewise. ++ ++ Backport from mainline: ++ 2018-05-25 Bill Schmidt ++ ++ PR tree-optimization/85712 ++ * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if ++ this candidate has already been replaced in-situ by a copy. ++ ++2018-05-24 Uros Bizjak ++ ++ * config/i386/sse.md (cvtusi264): ++ Add {q} suffix to insn mnemonic. ++ ++2018-05-24 Uros Bizjak ++ ++ PR target/85903 ++ * config/i386/sse.md (movdi_to_sse): Do not generate pseudo ++ when memory input operand is handled. ++ ++2018-05-21 Pat Haugen ++ ++ Backport from mainline ++ 2018-05-17 Pat Haugen ++ Segher Boessenkool ++ ++ PR target/85698 ++ * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check ++ dest operand. ++ ++2018-05-17 Martin Jambor ++ ++ Backport from mainline ++ 2018-05-11 Martin Jambor ++ ++ PR ipa/85655 ++ * ipa-cp.c (intersect_with_plats): Check that the lattice contains ++ single const. ++ ++2018-05-01 Tom de Vries ++ ++ backport from trunk: ++ 2018-04-16 Cesar Philippidis ++ Tom de Vries ++ ++ PR middle-end/84955 ++ * omp-expand.c (expand_oacc_for): Add dummy false branch for ++ tiled basic blocks without omp continue statements. ++ ++2018-04-26 Richard Biener ++ ++ Backport from mainline ++ 2018-04-09 Richard Biener ++ ++ PR tree-optimization/85284 ++ * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions): ++ Only use the niter constraining form of simple_iv when the exit ++ is always executed. ++ ++ 2018-04-06 Richard Biener ++ ++ PR middle-end/85244 ++ * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref ++ after seeing a component reference with an adjacent field. Treat ++ refs to arrays at struct end of external decls similar to ++ refs to unconstrained commons. ++ ++ 2018-04-04 Richard Biener ++ ++ PR tree-optimization/85168 ++ * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid ++ propagating abnormals. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-17 Martin Liska ++ ++ PR lto/85405 ++ * ipa-devirt.c (odr_types_equivalent_p): Remove trailing ++ in message, remote space in between '_G' and '('. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-17 Jan Hubicka ++ ++ PR lto/85405 ++ * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-28 Jakub Jelinek ++ Martin Liska ++ ++ PR sanitizer/85081 ++ * gimplify.c (asan_poison_variable): Don't do the check for ++ gimplify_omp_ctxp here. ++ (gimplify_decl_expr): Do it here. ++ (gimplify_target_expr): Likewise. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-21 Martin Liska ++ ++ PR ipa/84963 ++ * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove ++ not intended return statement. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-13 Martin Liska ++ ++ PR ipa/84658. ++ * (sem_item_optimizer::sem_item_optimizer): Initialize new ++ vector. ++ (sem_item_optimizer::~sem_item_optimizer): Release it. ++ (sem_item_optimizer::merge_classes): Register variable aliases. ++ (sem_item_optimizer::fixup_pt_set): New function. ++ (sem_item_optimizer::fixup_points_to_sets): Likewise. ++ * ipa-icf.h: Declare new variables and functions. ++ ++2018-04-23 Aaron Sawdey ++ ++ Backport from mainline ++ 2018-04-16 Aaron Sawdey ++ ++ PR target/83660 ++ * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark ++ vec_extract expression as having side effects to make sure it gets ++ a cleanup point. ++ ++2018-04-23 Eric Botcazou ++ ++ PR middle-end/85496 ++ * expr.c (store_field): In the bitfield case, if the value comes from ++ a function call and is returned in registers by means of a PARALLEL, ++ do not change the mode of the temporary unless BLKmode and VOIDmode. ++ ++2018-04-20 Peter Bergner ++ ++ Backport from mainline ++ 2018-03-09 Peter Bergner ++ ++ PR target/83969 ++ * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype. ++ Add strict argument and use it. ++ (rs6000_split_multireg_move): Update for new strict argument. ++ (mem_operand_gpr): Disallow all non-offsettable addresses. ++ * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint. ++ ++2018-04-18 Thomas Preud'homme ++ ++ Backport from mainline ++ 2018-04-11 Thomas Preud'homme ++ ++ PR target/85261 ++ * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand ++ into register. ++ ++2018-04-12 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-04-12 Andreas Krebbel ++ ++ * config/s390/s390.c (s390_output_indirect_thunk_function): Check ++ also for flag_dwarf2_cfi_asm. ++ ++2018-04-11 Uros Bizjak ++ ++ * config/alpha/alpha.md (stack_probe_internal): Rename ++ from "probe_stack". Update all callers. ++ ++2018-04-11 Thomas Preud'homme ++ ++ Backport from mainline ++ 2018-04-04 Thomas Preud'homme ++ ++ PR target/85203 ++ * config/arm/arm-builtins.c (arm_expand_builtin): Change ++ expansion to perform a bitwise AND of the argument followed by a ++ boolean negation of the result. ++ ++2018-04-10 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-03-08 Kyrylo Tkachov ++ ++ PR target/84748 ++ * config/aarch64/aarch64.md (*compare_cstore_insn): Mark pattern ++ as clobbering CC_REGNUM. ++ ++2018-04-06 Eric Botcazou ++ ++ PR target/85196 ++ * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands ++ based on LABEL_REF. Remove useless assertion. ++ (pic_address_needs_scratch): Fix formatting. ++ (sparc_legitimize_pic_address): Minor tweaks. ++ (sparc_delegitimize_address): Adjust assertion accordingly. ++ * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand ++ into symbolic_operand. ++ (movsi_high_pic_label_ref): Likewise. ++ (movsi_lo_sum_pic_label_ref): Likewise. ++ (movdi_pic_label_ref): Likewise. ++ (movdi_high_pic_label_ref): Likewise. ++ (movdi_lo_sum_pic_label_ref): Likewise. ++ ++2018-04-06 Amaan Cheval ++ ++ * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for ++ custom LIB_SPEC setup. ++ ++2018-04-05 Uros Bizjak ++ ++ PR target/85193 ++ * config/i386/i386.md (define_attr "memory"): Handle rotate1 type. ++ ++2018-04-04 Peter Bergner ++ ++ Backport from mainline ++ 2018-04-04 Peter Bergner ++ ++ PR rtl-optimization/84878 ++ * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine ++ the basic block. Assert the use reference is not artificial and that ++ it has an associated insn. ++ ++2018-04-03 Uros Bizjak ++ ++ * config/i386/i386.c (emit_i387_cw_initialization): Always use logic ++ instructions when changing rounding bits to preserve precision bits ++ in the x87 control word. ++ ++2018-04-03 Cesar Philippidis ++ ++ Backport from mainline ++ 2018-03-27 Cesar Philippidis ++ ++ PR target/85056 ++ * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to ++ extern array declarations. ++ ++2018-04-02 Peter Bergner ++ ++ Backport from mainline ++ 2018-03-28 Peter Bergner ++ ++ PR target/84912 ++ * config/rs6000/rs6000.h: Update copyright date. ++ (RS6000_BTM_POWERPC64): New define. ++ (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64. ++ * config/rs6000/rs6000.c: Update copyright date. ++ (rs6000_builtin_mask_calculate): Add support for RS6000_BTM_POWERPC64. ++ (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64 ++ (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64. ++ * config/rs6000/rs6000-builtin.def: Update copyright date. ++ (BU_P7_POWERPC64_MISC_2): New macro definition. ++ (DIVDE): Use it. ++ (DIVDEU): Likewise. ++ ++ Backport from mainline ++ 2018-03-28 Peter Bergner ++ ++ PR target/84912 ++ * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion. ++ (DIVWEUO): Likewise. ++ (DIVDEO): Likewise. ++ (DIVDEUO): Likewise. ++ * config/rs6000/rs6000.c (builtin_function_type): Remove support for ++ DIVWEUO and DIVDEUO. ++ * config/rs6000/rs6000.md: Update copyright date. ++ (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs. ++ (UNSPEC_DIV_EXTEND): Remove deleted unspecs. ++ (div_extend): Likewise. ++ * doc/extend.texi: Update copyright date. ++ (__builtin_divweo): Remove documentation for deleted builtin function. ++ (__builtin_divweuo): Likewise. ++ (__builtin_divdeo): Likewise. ++ (__builtin_divdeuo): Likewise. ++ ++2018-04-02 Peter Bergner ++ ++ Backport from mainline ++ 2018-03-30 Peter Bergner ++ ++ PR target/80546 ++ * config/rs6000/vsx.md (??r): New mode attribute. ++ (*vsx_mov_64bit): Use it. ++ (*vsx_mov_32bit): Likewise. ++ ++2018-03-29 Sebastian Peryt ++ ++ PR c++/84783 ++ * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64) ++ (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics. ++ ++2018-03-29 Sudakshina Das ++ ++ Backport from mainline ++ 2018-03-22 Sudakshina Das ++ ++ PR target/84826 ++ * config/arm/arm.h (machine_function): Add static_chain_stack_bytes. ++ * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid ++ re-computing once computed. ++ (arm_expand_prologue): Compute machine->static_chain_stack_bytes. ++ (arm_init_machine_status): Initialize ++ machine->static_chain_stack_bytes. ++ ++2018-03-28 Sudakshina Das ++ ++ 2018-03-19 Sudakshina Das ++ PR target/81647 ++ ++ * config/aarch64/aarch64-simd.md (vec_cmp): Modify ++ instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED. ++ ++2018-03-28 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-03-23 Kyrylo Tkachov ++ ++ PR target/85026 ++ * config/arm/arm.md (unaligned_loadhis): Remove first alternative. ++ Clean up attributes. ++ ++2018-03-28 Segher Boessenkool ++ ++ Backport from mainline ++ 2018-03-08 Segher Boessenkool ++ ++ PR target/82411 ++ * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put ++ readonly data in sdata, if that is disabled. ++ * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option. ++ * doc/invoke.texi (RS/6000 and PowerPC Options): Document ++ -mreadonly-in-sdata option. ++ ++2018-03-27 Sudakshina Das ++ ++ Backport from mainline: ++ 2018-03-20 Sudakshina Das ++ ++ PR target/82989 ++ * config/arm/neon.md (ashldi3_neon): Update ?s for constraints ++ to favor GPR over NEON registers. ++ (di3_neon): Likewise. ++ ++2018-03-27 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-03-20 Kyrylo Tkachov ++ ++ PR target/82518 ++ * config/arm/arm.c (arm_array_mode_supported_p): Return false for ++ BYTES_BIG_ENDIAN. ++ ++2018-03-23 Peter Bergner ++ ++ Backport from mainline ++ 2018-03-20 Peter Bergner ++ ++ PR target/83789 ++ * config/rs6000/altivec.md (altivec_lvx__2op): Delete define_insn. ++ (altivec_lvx__1op): Likewise. ++ (altivec_stvx__2op): Likewise. ++ (altivec_stvx__1op): Likewise. ++ (altivec_lvx_): New define_expand. ++ (altivec_stvx_): Likewise. ++ (altivec_lvx__2op_): New define_insn. ++ (altivec_lvx__1op_): Likewise. ++ (altivec_stvx__2op_): Likewise. ++ (altivec_stvx__1op_): Likewise. ++ * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise. ++ (altivec_expand_stv_builtin): Likewise. ++ (altivec_expand_builtin): Likewise. ++ * config/rs6000/vector.md: Likewise. ++ ++2018-03-23 Carl Love ++ ++ Backport from mainline: ++ 2018-03-14 Carl Love ++ ++ * config/rs6000/r6000.c (rtx_is_swappable_p): Add case UNSPEC_VPERMXOR. ++ ++2018-03-22 Tom de Vries ++ ++ backport from trunk: ++ 2018-03-22 Tom de Vries ++ ++ PR tree-optimization/84956 ++ * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with ++ bb_has_abnormal_pred. ++ ++2018-03-19 H.J. Lu ++ ++ Backport from mainline ++ 2018-03-15 H.J. Lu ++ ++ PR target/84574 ++ * config/i386/i386.c (indirect_thunk_needed): Update comments. ++ (indirect_thunk_bnd_needed): Likewise. ++ (indirect_thunks_used): Likewise. ++ (indirect_thunks_bnd_used): Likewise. ++ (indirect_return_needed): New. ++ (indirect_return_bnd_needed): Likewise. ++ (output_indirect_thunk_function): Add a bool argument for ++ function return. ++ (output_indirect_thunk_function): Don't generate alias for ++ function return thunk. ++ (ix86_code_end): Call output_indirect_thunk_function to generate ++ function return thunks. ++ (ix86_output_function_return): Set indirect_return_bnd_needed ++ and indirect_return_needed instead of indirect_thunk_bnd_needed ++ and indirect_thunk_needed. ++ ++2018-03-14 John David Anglin ++ ++ PR target/83451 ++ * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload ++ insn for floating-point loads and stores. ++ ++2018-03-12 Jonathan Wakely ++ ++ * doc/invoke.texi (-mclflushopt): Fix spelling of option. ++ ++2018-03-12 Richard Sandiford ++ ++ PR tree-optimization/84485 ++ * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Return ++ true for zero dependence distances if the step might be zero, ++ and if there is no metadata that guarantees correctness. ++ (vect_analyze_data_ref_access): Check safelen as well as ++ force_vectorize. ++ ++2018-03-11 John David Anglin ++ ++ Backport from mainline ++ 2018-02-14 John David Anglin ++ ++ PR target/83984 ++ * config/pa/pa.md: Load address of PIC label using the linkage table ++ if the label is nonlocal. ++ ++ Backport from mainline ++ 2018-03-06 John David Anglin ++ ++ * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use ++ sprint_ul. ++ (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change. ++ (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. ++ * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above. ++ ++2018-03-09 Kugan Vivekanandarajah ++ ++ Backport from mainline ++ 2017-09-13 Kugan Vivekanandarajah ++ ++ * config/aarch64/aarch64.c (aarch64_override_options_after_change_1): ++ Disable pc relative literal load irrespective of ++ TARGET_FIX_ERR_A53_84341 for default. ++ ++2018-03-06 Denis Chertykov ++ ++ Backport from mainline ++ 2018-02-07 Georg-Johann Lay ++ ++ PR target/84209 ++ * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros. ++ * config/avr/avr.md: Only post-reload split REG-REG moves if ++ either register is GENERAL_REG_P. ++ ++2018-03-06 Carl Love ++ ++ Backport from mainline ++ 2/16/18 commit 257748 Carl Love ++ ++ * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b. ++ * config/rs6000/rs6000-builtin.def: Remove macro expansion for ++ VINSERT4B_DI and VINSERT4B. ++ * config/rs6000/rs6000.c: Remove case statements for ++ P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, ++ and P9V_BUILTIN_VEC_VINSERT4B. ++ * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for ++ P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B. ++ * config/rs6000/vsx.md: Remove define_expand vinsert4b, ++ define_insn *vinsert4b_internal, define_insn "*vinsert4b_di_internal. ++ * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for ++ vec_insert4b. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-20 Martin Liska ++ ++ PR c/84310 ++ PR target/79747 ++ * final.c (shorten_branches): Build align_tab array with one ++ more element. ++ * opts.c (finish_options): Add alignment option limit check. ++ (MAX_CODE_ALIGN): Likewise. ++ (MAX_CODE_ALIGN_VALUE): Likewise. ++ * doc/invoke.texi: Document maximum allowed option value for ++ all -falign-* options. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-19 Martin Liska ++ ++ PR other/80589 ++ * doc/invoke.texi: Fix typo. ++ * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-05 Martin Liska ++ ++ PR gcov-profile/84137 ++ * doc/gcov.texi: Fix typo in documentation. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-05 Martin Liska ++ ++ PR gcov-profile/83879 ++ * doc/gcov.texi: Document necessity of --dynamic-list-data when ++ using dlopen functionality. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2017-12-19 Martin Liska ++ ++ PR rtl-optimization/82675 ++ * loop-unroll.c (unroll_loop_constant_iterations): Allocate one ++ more element in sbitmap. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-03-05 Martin Liska ++ ++ * ipa-utils.c (ipa_merge_profiles): Do not merge alias or ++ a function without profile. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-21 Jan Hubicka ++ ++ PR c/84229 ++ * ipa-cp.c (determine_versionability): Do not version functions caling ++ va_arg_pack. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-08 Jan Hubicka ++ ++ PR ipa/81360 ++ * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare ++ * symtab.c: Include builtins.h ++ (symtab_node::output_to_lto_symbol_table_p): Move here ++ from lto-streamer-out.c:output_symbol_p. ++ * lto-streamer-out.c (write_symbol): Turn early exit to assert. ++ (output_symbol_p): Move all logic to symtab.c ++ (produce_symtab): Update. ++ ++2018-03-06 Peter Bergner ++ ++ Backport from mainline ++ 2018-02-22 Vladimir Makarov ++ ++ PR target/81572 ++ * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros. ++ * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use ++ LRA_UNKNOWN_ALT. ++ * lra-constraints.c (curr_insn_transform): Set up ++ LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use ++ LRA_UNKNOWN_ALT. ++ (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT. ++ * lra-eliminations.c (spill_pseudos): Ditto. ++ (process_insn_for_elimination): Ditto. ++ * lra-lives.c (reg_early_clobber_p): Use the new macros. ++ * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and ++ LRA_NON_CLOBBERED_ALT. ++ ++2018-03-06 Richard Biener ++ ++ Backport from mainline ++ 2018-03-05 Richard Biener ++ ++ PR tree-optimization/84486 ++ * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code. ++ When inserting a __builtin_assume_aligned call set the LHS ++ SSA name alignment info accordingly. ++ ++ 2018-02-28 Richard Biener ++ ++ PR middle-end/84607 ++ * genmatch.c (capture_info::walk_match): Do not mark ++ captured expressions without operands as expr_p given ++ they act more like predicates and should be subject to ++ "lost tail" side-effect preserving. ++ ++2018-03-05 Jakub Jelinek ++ ++ PR target/84524 ++ * config/i386/sse.md (*3): Replace with ++ orig,vex. ++ (*3): Likewise. Remove uses. ++ ++2018-03-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-03-02 Jakub Jelinek ++ Richard Biener ++ ++ PR ipa/84628 ++ * expr.c (expand_expr_real_1) : Don't emit diagnostics ++ for error or warning attributes if CALL_FROM_THUNK_P is set. ++ Formatting fixes. ++ ++ 2018-03-02 Jakub Jelinek ++ ++ PR inline-asm/84625 ++ * config/i386/i386.c (ix86_print_operand): Use conditional ++ output_operand_lossage instead of gcc_assert if CONST_VECTOR is not ++ zero vector. ++ ++ 2018-02-23 Jakub Jelinek ++ ++ * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and ++ p->max as pointers rather than using iterative_hash_expr. ++ ++ 2017-11-10 Jakub Jelinek ++ ++ PR bootstrap/82916 ++ * gimple-ssa-store-merging.c ++ (pass_store_merging::terminate_all_aliasing_chains): For ++ gimple_store_p stmts also call refs_output_dependent_p. ++ ++ 2018-02-19 Jakub Jelinek ++ ++ PR c++/84444 ++ * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t) ++ is ADDR_EXPR. ++ ++ 2018-02-16 Jakub Jelinek ++ ++ PR ipa/84425 ++ * ipa-inline.c (inline_small_functions): Fix a typo. ++ ++ 2018-02-13 Jakub Jelinek ++ ++ PR c/82210 ++ * stor-layout.c (place_field): For variable length fields, adjust ++ offset_align afterwards not just based on the field's alignment, ++ but also on the size. ++ ++ 2018-02-10 Jakub Jelinek ++ ++ PR sanitizer/83987 ++ * omp-low.c (maybe_remove_omp_member_access_dummy_vars, ++ remove_member_access_dummy_vars): New functions. ++ (lower_omp_for, lower_omp_taskreg, lower_omp_target, ++ lower_omp_1, execute_lower_omp): Use them. ++ ++ PR rtl-optimization/84308 ++ * shrink-wrap.c (spread_components): Release todo vector. ++ ++ 2018-02-09 Jakub Jelinek ++ ++ PR sanitizer/84285 ++ * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS, ++ STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like ++ -static-lib*san. ++ ++ 2018-02-09 Marek Polacek ++ Jakub Jelinek ++ ++ PR c++/83659 ++ * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro. ++ Formatting fixes. Verify first that tree_fits_shwi_p (op01). ++ Sync some changes from cxx_fold_indirect_ref. ++ ++ 2018-02-07 Jakub Jelinek ++ ++ * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for ++ *DIV_EXPR and *MOD_EXPR. ++ ++ 2018-02-01 Jakub Jelinek ++ ++ PR tree-optimization/81661 ++ PR tree-optimization/84117 ++ * tree-eh.h (rewrite_to_non_trapping_overflow): Declare. ++ * tree-eh.c: Include gimplify.h. ++ (find_trapping_overflow, replace_trapping_overflow, ++ rewrite_to_non_trapping_overflow): New functions. ++ * tree-vect-loop.c: Include tree-eh.h. ++ (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow. ++ ++ 2018-01-30 Jakub Jelinek ++ ++ PR rtl-optimization/83986 ++ * sched-deps.c (sched_analyze_insn): For frame related insns, add anti ++ dependence against last_pending_memory_flush in addition to ++ pending_jump_insns. ++ ++ 2018-01-27 Jakub Jelinek ++ ++ PR middle-end/84040 ++ * sched-deps.c (sched_macro_fuse_insns): Return immediately if ++ !insn_set. ++ ++ 2018-01-24 Jakub Jelinek ++ ++ PR middle-end/83977 ++ * tree-inline.c (tree_function_versioning): Remove "omp declare simd" ++ attributes from DECL_ATTRIBUTES (new_decl) without affecting ++ DECL_ATTRIBUTES (old_decl). ++ ++ 2018-01-20 Jakub Jelinek ++ ++ PR middle-end/83945 ++ * tree-emutls.c: Include gimplify.h. ++ (lower_emutls_2): New function. ++ (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree ++ with lower_emutls_2 callback finds some TLS decl in it, unshare_expr ++ it before further processing. ++ ++ PR target/83930 ++ * simplify-rtx.c (simplify_binary_operation_1) : Use ++ UINTVAL (trueop1) instead of INTVAL (op1). ++ ++ 2018-01-09 Jakub Jelinek ++ ++ PR preprocessor/83722 ++ * gcc.c (try_generate_repro): Pass ++ &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than ++ &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to ++ do_report_bug. ++ ++ 2018-01-05 Jakub Jelinek ++ ++ PR tree-optimization/83605 ++ * gimple-ssa-strength-reduction.c: Include tree-eh.h. ++ (find_candidates_dom_walker::before_dom_children): Ignore stmts that ++ can throw. ++ ++2018-03-01 H.J. Lu ++ ++ Backport from mainline ++ 2018-02-26 H.J. Lu ++ ++ PR target/84039 ++ * config/i386/constraints.md (Bs): Replace ++ ix86_indirect_branch_register with ++ TARGET_INDIRECT_BRANCH_REGISTER. ++ (Bw): Likewise. ++ * config/i386/i386.md (indirect_jump): Likewise. ++ (tablejump): Likewise. ++ (*sibcall_memory): Likewise. ++ (*sibcall_value_memory): Likewise. ++ Peepholes of indirect call and jump via memory: Likewise. ++ (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER. ++ (*sibcall_value_GOT_32): Likewise. ++ * config/i386/predicates.md (indirect_branch_operand): Likewise. ++ (GOT_memory_operand): Likewise. ++ (call_insn_operand): Likewise. ++ (sibcall_insn_operand): Likewise. ++ (GOT32_symbol_operand): Likewise. ++ * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New. ++ ++2018-03-01 H.J. Lu ++ ++ Backport from mainline ++ 2018-02-26 H.J. Lu ++ ++ * config/i386/i386.c (ix86_output_indirect_jmp): Update comments. ++ ++ 2018-02-26 H.J. Lu ++ ++ PR target/84530 ++ * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove ++ the bool argument. ++ (ix86_output_indirect_function_return): New prototype. ++ (ix86_split_simple_return_pop_internal): Likewise. ++ * config/i386/i386.c (indirect_return_via_cx): New. ++ (indirect_return_via_cx_bnd): Likewise. ++ (indirect_thunk_name): Handle return va CX_REG. ++ (output_indirect_thunk_function): Create alias for ++ __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd. ++ (ix86_output_indirect_jmp): Remove the bool argument. ++ (ix86_output_indirect_function_return): New function. ++ (ix86_split_simple_return_pop_internal): Likewise. ++ * config/i386/i386.md (*indirect_jump): Don't pass false ++ to ix86_output_indirect_jmp. ++ (*tablejump_1): Likewise. ++ (simple_return_pop_internal): Change it to define_insn_and_split. ++ Call ix86_split_simple_return_pop_internal to split it for ++ -mfunction-return=. ++ (simple_return_indirect_internal): Call ++ ix86_output_indirect_function_return instead of ++ ix86_output_indirect_jmp. ++ ++2017-03-02 Thomas Schwinge ++ ++ Backport from trunk r256891: ++ 2018-01-19 Cesar Philippidis ++ ++ PR target/83790 ++ * config/nvptx/nvptx.c (output_init_frag): Don't use generic address ++ spaces for function labels. ++ ++2018-02-26 Carl Love ++ ++ Backport from mainline: commit 257747 on 2018-02-16. ++ ++ * config/rs6000/altivec.h: Add builtin names vec_extract4b ++ vec_insert4b. ++ * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B ++ definitions. ++ * config/rs6000/rs6000-c.c: Add the definitions for ++ P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B. ++ * config/rs6000/rs6000.c (altivec_expand_builtin): Add ++ P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements. ++ * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand ++ definition for insert4b and define insn *insert3b_internal. ++ * doc/extend.texi: Add documentation for vec_extract4b. ++ ++2018-02-26 Eric Botcazou ++ ++ PR rtl-optimization/83496 ++ * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from ++ booleans to RTXes. Call fix_reg_dead_note on every non-null element. ++ (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a ++ redundant insn, if any. ++ (relax_delay_slots): Likewise. ++ (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN. ++ ++2018-02-22 Sudakshina Das ++ Bin Cheng ++ ++ Backport from mainline: ++ 2017-12-14 Sudakshina Das ++ Bin Cheng ++ ++ PR target/81228 ++ * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT to ++ CCFPEmode. ++ * config/aarch64/aarch64-simd.md (vec_cmp): Add ++ LTGT. ++ ++2018-02-16 Jozef Lawrynowicz ++ ++ PR target/79242 ++ * machmode.def: Define a complex mode for PARTIAL_INT. ++ * genmodes.c (complex_class): Return MODE_COMPLEX_INT for ++ MODE_PARTIAL_INT. ++ * doc/rtl.texi: Document CSPImode. ++ * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode ++ handling. ++ (msp430_hard_regno_nregs_with_padding): Likewise. ++ ++2018-02-16 Sudakshina Das ++ ++ Backport from trunk ++ 2018-01-10 Sudakshina Das ++ ++ PR target/82096 ++ * expmed.c (emit_store_flag_force): Swap if const op0 ++ and change VOIDmode to mode of op0. ++ ++2018-02-16 Richard Biener ++ ++ PR tree-optimization/84190 ++ * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch ++ volatile accesses if the decl isn't volatile. ++ ++2018-02-15 Michael Meissner ++ ++ Back port from trunk ++ 2018-02-07 Michael Meissner ++ ++ PR target/84154 ++ * config/rs6000/rs6000.md (fix_trunc2): ++ Convert from define_expand to be define_insn_and_split. Rework ++ float/double/_Float128 conversions to QI/HI/SImode to work with ++ both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where ++ conversions to QI/HImode types did a store and then a load to ++ truncate the value. For conversions to VSX registers, don't split ++ the insn, instead emit the code directly. Use the code iterator ++ any_fix to combine signed and unsigned conversions. ++ (fix_truncsi2_p8): Likewise. ++ (fixuns_trunc2): Likewise. ++ (fix_trunc2): Likewise. ++ (fix_trunc2): Likewise. ++ (fix_di2_hw): Likewise. ++ (fixuns_di2_hw): Likewise. ++ (fix_si2_hw): Likewise. ++ (fixuns_si2_hw): Likewise. ++ (fix_2_hw): Likewise. ++ (fix_trunc2): Likewise. ++ (fctiwz__smallint): Rename fctiwz__smallint to ++ fix_truncsi2_p8. ++ (fix_trunc2_internal): Delete, no longer ++ used. ++ (fixuns_trunc2_internal): Likewise. ++ (fix__mem): Likewise. ++ (fctiwz__mem): Likewise. ++ (fix__mem): Likewise. ++ (fix_trunc2_mem): On ISA 3.0, prevent ++ the register allocator from doing a direct move to the GPRs to do ++ a store, and instead use the ISA 3.0 store byte/half-word from ++ vector register instruction. For IEEE 128-bit floating point, ++ also optimize stores of 32-bit ints. ++ (fix_trunc2_mem): Likewise. ++ ++2018-02-15 Aaron Sawdey ++ ++ Back port from mainline ++ 2018-01-30 Aaron Sawdey ++ ++ PR target/83758 ++ * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return ++ a reg rtx. ++ ++2018-02-14 Peter Bergner ++ ++ Back port from mainline ++ 2018-02-13 Peter Bergner ++ ++ PR target/84279 ++ * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses. ++ ++2018-02-14 Martin Jambor ++ ++ PR c++/83990 ++ * ipa-prop.c (ipa_modify_call_arguments): Use location of call ++ statements, also set location of a load to a temporary. ++ ++2018-02-10 John David Anglin ++ ++ * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as ++ function label. ++ ++ Backport from mainline ++ 2018-02-01 Aldy Hernandez ++ ++ PR target/84089 ++ * config/pa/predicates.md (base14_operand): Handle VOIDmode. ++ ++2018-02-09 Martin Jambor ++ ++ Backport from mainline ++ 2018-02-08 Martin Jambor ++ ++ * hsa-gen.c (get_symbol_for_decl): Set program allocation for ++ static local variables. ++ ++2018-02-09 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-02-09 Andreas Krebbel ++ ++ PR target/PR84295 ++ * config/s390/s390.c (s390_set_current_function): Invoke ++ s390_indirect_branch_settings also if fndecl didn't change. ++ ++2018-02-08 Iain Sandoe ++ ++ PR target/84113 ++ * config/rs6000/altivec.md (*restore_world): Remove LR use. ++ * config/rs6000/predicates.md (restore_world_operation): Adjust op ++ count, remove one USE. ++ ++2018-02-08 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-02-08 Andreas Krebbel ++ ++ * config/s390/s390-opts.h (enum indirect_branch): Define. ++ * config/s390/s390-protos.h (s390_return_addr_from_memory) ++ (s390_indirect_branch_via_thunk) ++ (s390_indirect_branch_via_inline_thunk): Add function prototypes. ++ (enum s390_indirect_branch_type): Define. ++ * config/s390/s390.c (struct s390_frame_layout, struct ++ machine_function): Remove. ++ (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask) ++ (indirect_branch_table_label_no, indirect_branch_table_name): ++ Define variables. ++ (INDIRECT_BRANCH_NUM_OPTIONS): Define macro. ++ (enum s390_indirect_branch_option): Define. ++ (s390_return_addr_from_memory): New function. ++ (s390_handle_string_attribute): New function. ++ (s390_attribute_table): Add new attribute handler. ++ (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns. ++ (s390_indirect_branch_via_thunk): New function. ++ (s390_indirect_branch_via_inline_thunk): New function. ++ (s390_function_ok_for_sibcall): When jumping via thunk disallow ++ sibling call optimization for non z10 compiles. ++ (s390_emit_call): Force indirect branch target to be a single ++ register. Add r1 clobber for non-z10 compiles. ++ (s390_emit_epilogue): Emit return jump via return_use expander. ++ (s390_reorg): Handle JUMP_INSNs as execute targets. ++ (s390_option_override_internal): Perform validity checks for the ++ new command line options. ++ (s390_indirect_branch_attrvalue): New function. ++ (s390_indirect_branch_settings): New function. ++ (s390_set_current_function): Invoke s390_indirect_branch_settings. ++ (s390_output_indirect_thunk_function): New function. ++ (s390_code_end): Implement target hook. ++ (s390_case_values_threshold): Implement target hook. ++ (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target ++ macros. ++ * config/s390/s390.h (struct s390_frame_layout) ++ (struct machine_function): Move here from s390.c. ++ (TARGET_INDIRECT_BRANCH_NOBP_RET) ++ (TARGET_INDIRECT_BRANCH_NOBP_JUMP) ++ (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK) ++ (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK) ++ (TARGET_INDIRECT_BRANCH_NOBP_CALL) ++ (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE) ++ (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL) ++ (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX) ++ (TARGET_INDIRECT_BRANCH_TABLE): Define macros. ++ * config/s390/s390.md (UNSPEC_EXECUTE_JUMP) ++ (INDIRECT_BRANCH_THUNK_REGNUM): Define constants. ++ (mnemonic attribute): Add values which aren't recognized ++ automatically. ++ ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable ++ pattern for branch conversion. Fix mnemonic attribute. ++ ("*c", "*sibcall_br", "*sibcall_value_br", "*return"): Emit ++ indirect branch via thunk if requested. ++ ("indirect_jump", ""): Expand patterns for branch conversion. ++ ("*indirect_jump"): Disable for branch conversion using out of ++ line thunks. ++ ("indirect_jump_via_thunk_z10") ++ ("indirect_jump_via_thunk") ++ ("indirect_jump_via_inlinethunk_z10") ++ ("indirect_jump_via_inlinethunk", "*casesi_jump") ++ ("casesi_jump_via_thunk_z10", "casesi_jump_via_thunk") ++ ("casesi_jump_via_inlinethunk_z10") ++ ("casesi_jump_via_inlinethunk", "*basr_via_thunk_z10") ++ ("*basr_via_thunk", "*basr_r_via_thunk_z10") ++ ("*basr_r_via_thunk", "return_prez10"): New pattern. ++ ("*indirect2_jump"): Disable for branch conversion. ++ ("casesi_jump"): Turn into expander and expand patterns for branch ++ conversion. ++ ("return_use"): New expander. ++ ("*return"): Emit return via thunk and rename it to ... ++ ("*return"): ... this one. ++ * config/s390/s390.opt: Add new options and and enum for the ++ option values. ++ ++2018-02-08 Richard Biener ++ ++ PR tree-optimization/84233 ++ * tree-ssa-phiprop.c (propagate_with_phi): Use separate ++ changed flag instead of boguously re-using phi_inserted. ++ ++2018-02-07 Bill Schmidt ++ ++ Backport from mainline ++ 2018-02-06 Bill Schmidt ++ ++ * config/rs6000/rs6000.c (rs6000_option_override_internal): ++ Display warning message for -mno-speculate-indirect-jumps. ++ ++2018-02-05 Rainer Orth ++ ++ Backport from mainline ++ 2018-01-30 Rainer Orth ++ ++ PR bootstrap/84017 ++ * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86. ++ * configure: Regenerate. ++ ++2018-02-05 Peter Bergner ++ ++ Back port from mainline ++ 2018-02-01 Peter Bergner ++ ++ PR target/56010 ++ PR target/83743 ++ * config/rs6000/driver-rs6000.c: #include "diagnostic.h". ++ #include "opts.h". ++ (rs6000_supported_cpu_names): New static variable. ++ (linux_cpu_translation_table): Likewise. ++ (elf_platform) : Define new static variable and use it. ++ Translate kernel AT_PLATFORM name to canonical name if needed. ++ Error if platform name is unknown. ++ ++2018-02-02 H.J. Lu ++ ++ Backport from mainline ++ 2018-02-02 H.J. Lu ++ ++ * config/i386/i386.c (ix86_output_function_return): Pass ++ INVALID_REGNUM, instead of -1, as invalid register number to ++ indirect_thunk_name and output_indirect_thunk. ++ ++2018-02-01 Uros Bizjak ++ ++ Backport from mainline ++ 2018-01-31 Uros Bizjak ++ ++ PR rtl-optimization/84123 ++ * combine.c (change_zero_ext): Check if hard register satisfies ++ can_change_dest_mode before calling gen_lowpart_SUBREG. ++ ++2018-02-01 Renlin Li ++ ++ Backport from mainline ++ 2018-02-01 Renlin Li ++ ++ PR target/83370 ++ * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle ++ TAILCALL_ADDR_REGS. ++ (aarch64_register_move_cost): Likewise. ++ * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to ++ TAILCALL_ADDR_REGS. ++ (REG_CLASS_NAMES): Likewise. ++ (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to ++ TAILCALL_ADDR_REGS. Remove IP registers. ++ * config/aarch64/aarch64.md (Ucs): Update register constraint. ++ ++2018-02-01 Richard Biener ++ ++ Backport from mainline ++ 2017-11-02 Richard Biener ++ ++ PR tree-optimization/82795 ++ * tree-if-conv.c (predicate_mem_writes): Remove bogus assert. ++ ++2018-01-31 Richard Biener ++ Kelvin Nilsen ++ ++ Backport from mainline ++ 2018-01-29 Richard Biener ++ Kelvin Nilsen ++ ++ PR bootstrap/80867 ++ * tree-vect-stmts.c (vectorizable_call): Don't call ++ targetm.vectorize_builtin_md_vectorized_function if callee is ++ NULL. ++ ++2018-01-31 Eric Botcazou ++ ++ PR rtl-optimization/84071 ++ * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case. ++ * doc/tm.texi: Regenerate. ++ ++2018-01-31 Eric Botcazou ++ ++ PR rtl-optimization/84071 ++ * combine.c (record_dead_and_set_regs_1): Record the source unmodified ++ for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target. ++ ++2018-01-29 Joseph Myers ++ ++ Backport from mainline ++ 2018-01-24 Joseph Myers ++ ++ PR target/68467 ++ * config/m68k/m68k.c (m68k_promote_function_mode): New function. ++ (TARGET_PROMOTE_FUNCTION_MODE): New macro. ++ ++2018-01-29 Uros Bizjak ++ ++ Backport from mainline ++ 2018-01-26 Uros Bizjak ++ ++ PR target/81763 ++ * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber ++ to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives. ++ ++2018-01-29 Alan Modra ++ ++ Backport from mainline ++ 2018-01-26 Alan Modra ++ PR target/84033 ++ * config/rs6000/rs6000.c (rtx_is_swappable_p): Exclude ++ UNSPEC_VBPERMQ. ++ ++2018-01-27 H.J. Lu ++ ++ Backport from mainline ++ 2018-01-27 H.J. Lu ++ ++ * doc/invoke.texi: Replace -mfunction-return==@var{choice} with ++ -mfunction-return=@var{choice}. ++ ++2018-01-27 H.J. Lu ++ ++ Backport from mainline ++ 2018-01-23 H.J. Lu ++ ++ PR target/83905 ++ * config/i386/i386.c (ix86_expand_prologue): Use cost reference ++ of struct ix86_frame. ++ (ix86_expand_epilogue): Likewise. Add a local variable for ++ the reg_save_offset field in struct ix86_frame. ++ ++2018-01-26 Jakub Jelinek ++ ++ PR rtl-optimization/83985 ++ * dce.c (deletable_insn_p): Return false for separate shrink wrapping ++ REG_CFA_RESTORE insns. ++ (delete_unmarked_insns): Don't ignore separate shrink wrapping ++ REG_CFA_RESTORE insns here. ++ ++2018-01-25 Uros Bizjak ++ ++ Backport from mainline ++ 2018-01-17 Uros Bizjak ++ ++ * config/i386/i386.c (indirect_thunk_name): Declare regno ++ as unsigned int. Compare regno with INVALID_REGNUM. ++ (output_indirect_thunk): Ditto. ++ (output_indirect_thunk_function): Ditto. ++ (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM ++ in the call to output_indirect_thunk_function. ++ ++2018-01-25 Michael Meissner ++ ++ Back port from trunk ++ 2018-01-22 Michael Meissner ++ ++ PR target/83862 ++ * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete, ++ no longer used. ++ * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise. ++ * config/rs6000/rs6000.md (signbit2): Change code for IEEE ++ 128-bit to produce an UNSPEC move to get the double word with the ++ signbit and then a shift directly to do signbit. ++ (signbit2_dm): Replace old IEEE 128-bit signbit ++ implementation with a new version that just does either a direct ++ move or a regular move. Move memory interface to separate insns. ++ Move insns so they are next to the expander. ++ (signbit2_dm_mem_be): New combiner insns to combine load ++ with signbit move. Split big and little endian case. ++ (signbit2_dm_mem_le): Likewise. ++ (signbit2_dm_ext): Delete, no longer used. ++ (signbit2_dm2): Likewise. ++ ++2018-01-25 Peter Bergner ++ ++ Back port from mainline ++ 2018-01-10 Peter Bergner ++ ++ PR target/83399 ++ * config/rs6000/rs6000.c (print_operand) <'y'>: Use ++ VECTOR_MEM_ALTIVEC_OR_VSX_P. ++ * config/rs6000/vsx.md (*vsx_le_perm_load_ for VSX_D): Use ++ indexed_or_indirect_operand predicate. ++ (*vsx_le_perm_load_ for VSX_W): Likewise. ++ (*vsx_le_perm_load_v8hi): Likewise. ++ (*vsx_le_perm_load_v16qi): Likewise. ++ (*vsx_le_perm_store_ for VSX_D): Likewise. ++ (*vsx_le_perm_store_ for VSX_W): Likewise. ++ (*vsx_le_perm_store_v8hi): Likewise. ++ (*vsx_le_perm_store_v16qi): Likewise. ++ (eight unnamed splitters): Likewise. ++ ++2018-01-25 Bill Schmidt ++ ++ Backport from mainline ++ 2018-01-02 Bill Schmidt ++ ++ * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store): ++ New function. ++ (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a ++ swap associated with both a load and a store. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/testsuite/jit.dg/test-long-names.c +=================================================================== +--- a/src/gcc/testsuite/jit.dg/test-long-names.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/jit.dg/test-long-names.c (.../branches/gcc-7-branch) +@@ -24,7 +24,7 @@ + int i; + + /* Begin with the given prefix: */ +- sprintf (buffer, prefix); ++ sprintf (buffer, "%s", prefix); + + /* Populate the rest of the buffer with 0123456789 repeatedly: */ + for (i = strlen (prefix); i < NAME_LENGTH - 1; i++) +Index: gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c (.../branches/gcc-7-branch) +@@ -1,39 +0,0 @@ +-/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */ +-/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ +-/* { dg-require-effective-target powerpc_p9vector_ok } */ +-/* { dg-options "-mcpu=power9 -O2" } */ +- +-#include +- +-vector signed char +-vins_v4si (vector int *vi, vector signed char *vc) +-{ +- return vec_vinsert4b (*vi, *vc, 1); +-} +- +-vector unsigned char +-vins_di (long di, vector unsigned char *vc) +-{ +- return vec_vinsert4b (di, *vc, 2); +-} +- +-vector char +-vins_di2 (long *p_di, vector char *vc) +-{ +- return vec_vinsert4b (*p_di, *vc, 3); +-} +- +-vector unsigned char +-vins_di0 (vector unsigned char *vc) +-{ +- return vec_vinsert4b (0, *vc, 4); +-} +- +-long +-vext (vector signed char *vc) +-{ +- return vec_vextract4b (*vc, 5); +-} +- +-/* { dg-final { scan-assembler "xxextractuw\|vextuw\[lr\]x" } } */ +-/* { dg-final { scan-assembler "xxinsertw" } } */ +Index: gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c (.../branches/gcc-7-branch) +@@ -1,30 +0,0 @@ +-/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */ +-/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ +-/* { dg-require-effective-target powerpc_p9vector_ok } */ +-/* { dg-options "-mcpu=power9 -O2" } */ +- +-#include +- +-vector signed char +-ins_v4si (vector int vi, vector signed char vc) +-{ +- return vec_vinsert4b (vi, vc, 13); /* { dg-error "vec_vinsert4b" } */ +-} +- +-vector unsigned char +-ins_di (long di, vector unsigned char vc, long n) +-{ +- return vec_vinsert4b (di, vc, n); /* { dg-error "vec_vinsert4b" } */ +-} +- +-long +-vext1 (vector signed char vc) +-{ +- return vec_vextract4b (vc, 13); /* { dg-error "vec_vextract4b" } */ +-} +- +-long +-vextn (vector unsigned char vc, long n) +-{ +- return vec_vextract4b (vc, n); /* { dg-error "vec_vextract4b" } */ +-} +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c (.../branches/gcc-7-branch) +@@ -1,15 +0,0 @@ +-/* { dg-do compile { target { ilp32 } } } */ +-/* { dg-additional-options "-O2 -mno-speculate-indirect-jumps" } */ +- +-/* Test for deliberate misprediction of -m32 sibcalls. */ +- +-extern int (*f)(); +- +-int bar () +-{ +- return (*f) (); +-} +- +-/* { dg-final { scan-assembler "crset 2" } } */ +-/* { dg-final { scan-assembler "beqctr-" } } */ +-/* { dg-final { scan-assembler {b \$} } } */ +Index: gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c (.../branches/gcc-7-branch) +@@ -5,6 +5,7 @@ + /* { dg-final { scan-assembler-not "\\.section\[ \t\]\\.sdata2," } } */ + /* { dg-final { scan-assembler "sdat@sdarel\\(13\\)" } } */ + /* { dg-final { scan-assembler "sdat2@sdarel\\(13\\)" } } */ ++/* { dg-skip-if "" { *-*-* } { "-mno-readonly-in-sdata" } { "" } } */ + + + int sdat = 2; +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mno-speculate-indirect-jumps" } */ ++/* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + + /* Test for deliberate misprediction of computed goto. */ + +Index: gcc/testsuite/gcc.target/powerpc/pr87033.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr87033.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr87033.c (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ ++/* { dg-options "-O2" } */ ++ ++/* Insure that a LWAX is generated instead of ADD + LWA. LP64 is needed ++ because the LWA and LWAX instructions are only available in 64-bit mode. */ ++long func (int *p, unsigned long n) ++{ ++ return p[n]; ++} ++ ++/* { dg-final { scan-assembler {\mlwax\M} } } */ ++/* { dg-final { scan-assembler-not {\mlwa\M} } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr81572.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr81572.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr81572.c (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile { target powerpc64*-*-* } } */ ++/* { dg-options "-O2 -mcpu=power7" } */ ++/* { dg-final { scan-assembler-not "xxlor" } } */ ++ ++#include ++ ++typedef __vector unsigned char nvec_t; ++ ++long testz_and(nvec_t a, nvec_t b) ++{ ++ nvec_t c = vec_andc(a, b); ++ return vec_all_eq(a, c); ++} +Index: gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ + /* { dg-do compile } */ + /* { dg-require-effective-target powerpc_p8vector_ok } */ + /* { dg-options "-mcpu=power8" } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mno-speculate-indirect-jumps" } */ ++/* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + + /* Test for deliberate misprediction of jump tables. */ + +Index: gcc/testsuite/gcc.target/powerpc/pr79799-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr79799-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr79799-2.c (.../branches/gcc-7-branch) +@@ -8,7 +8,7 @@ + /* Optimize x = vec_insert (vec_extract (v2, N), v1, M) for SFmode if N is the default + scalar position. */ + +-#if __ORDER_LITTLE_ENDIAN__ ++#if __LITTLE_ENDIAN__ + #define ELE 2 + #else + #define ELE 1 +Index: gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c (.../branches/gcc-7-branch) +@@ -4,7 +4,9 @@ + /* { dg-do compile } */ + /* { dg-require-effective-target powerpc_p8vector_ok } */ + /* { dg-require-effective-target int128 } */ +-/* { dg-options "-maltivec -mvsx -mpower8-vector" } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mpower8-vector -mcpu=power8 -O2" } */ + /* { dg-additional-options "-maix64" { target powerpc-ibm-aix* } } */ + + #include "altivec.h" +@@ -21,5 +23,5 @@ + return vec_mul (x, y); + } + +-/* { dg-final { scan-assembler-times "\[ \t\]mulld " 6 } } */ +-/* { dg-final { scan-assembler-times "\[ \t\]mulhdu" 2 } } */ ++/* { dg-final { scan-assembler-times {\mmulld\M} 6 } } */ ++/* { dg-final { scan-assembler-times {\mmulhdu\M} 2 } } */ +Index: gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ + /* { dg-do compile } */ + /* { dg-require-effective-target powerpc_p9vector_ok } */ + /* { dg-options "-mcpu=power9" } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + + #include + +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do run } */ + /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ ++/* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + + /* Test for deliberate misprediction of indirect calls for ELFv2. */ + +Index: gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c (.../branches/gcc-7-branch) +@@ -2,10 +2,10 @@ + inputs produce the right results. */ + + /* { dg-do compile } */ +-/* { dg-require-effective-target powerpc_float128_hw_ok } */ ++/* { dg-require-effective-target powerpc_p9vector_ok } */ + /* { dg-require-effective-target int128 } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ +-/* { dg-options "-maltivec -mvsx -mcpu=power9 -O2" } */ ++/* { dg-options "-mpower9-vector -mcpu=power9 -O2" } */ + /* { dg-additional-options "-maix64" { target powerpc-ibm-aix* } } */ + + #include "altivec.h" +@@ -22,4 +22,5 @@ + return vec_mul (x, y); + } + +-/* { dg-final { scan-assembler-times "\[ \t\]xsmulqp" 2 } } */ ++/* { dg-final { scan-assembler-times {\mmulld\M} 4 } } */ ++/* { dg-final { scan-assembler-times {\mmulhdu\M} 2 } } */ +Index: gcc/testsuite/gcc.target/powerpc/builtins-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-1.c (.../branches/gcc-7-branch) +@@ -165,3 +165,6 @@ + + return 0; + } ++ ++/* Translation of vec_packsu (unsigned long long, unsigned long long) */ ++/* { dg-final { scan-assembler-times {\mvpkudus\M} 1 } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr83969.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr83969.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr83969.c (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=G5" } } */ ++/* { dg-options "-O1 -mcpu=G5 -fno-split-wide-types -ftree-loop-vectorize" } */ ++ ++long long int ++n7 (int po, long long int r4) ++{ ++ while (po < 1) ++ { ++ r4 |= 1; ++ ++po; ++ } ++ return r4; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr83660.C +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr83660.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr83660.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* PR target/83660 */ ++/* { dg-do compile } */ ++/* { dg-options "-mcpu=power7" } */ ++ ++#include ++ ++typedef __vector unsigned int uvec32_t __attribute__((__aligned__(16))); ++ ++unsigned get_word(uvec32_t v) ++{ ++ return ({const unsigned _B1 = 32; ++ vec_extract((uvec32_t)v, 2);}); ++} ++ +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do run } */ + /* { dg-additional-options "-mno-speculate-indirect-jumps -Wno-pedantic" } */ ++/* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + + /* Test for deliberate misprediction of computed goto. */ + +Index: gcc/testsuite/gcc.target/powerpc/pr84878.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr84878.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr84878.c (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++/* PR rtl-optimization/84878 */ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-O2 -maltivec -mno-vsx -fmodulo-sched -ftree-vectorize -funroll-loops -fassociative-math -fno-signed-zeros -fno-trapping-math" } */ ++ ++int ek; ++float zu; ++ ++int ++k5 (int ks) ++{ ++ while (ek < 1) ++ { ++ ks += (int)(0x1000000 + zu + !ek); ++ ++ek; ++ } ++ return ks; ++} +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do run } */ + /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ ++/* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + + /* Test for deliberate misprediction of jump tables. */ + +Index: gcc/testsuite/gcc.target/powerpc/builtins-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-3.c (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ + /* { dg-do compile } */ + /* { dg-require-effective-target powerpc_vsx_ok } */ +-/* { dg-options "-maltivec -mvsx" } */ ++/* { dg-options "-O2 -mvsx -mcpu=power6" } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power6" } } */ + + #include + +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ ++/* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + + /* Test for deliberate misprediction of indirect calls. */ + +Index: gcc/testsuite/gcc.target/powerpc/pr85698.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr85698.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr85698.c (.../branches/gcc-7-branch) +@@ -0,0 +1,79 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ ++/* { dg-options "-O3 -mcpu=power7" } */ ++ ++/* PR85698: Incorrect code generated on LE due to use of stxvw4x. */ ++ ++typedef unsigned char uint8_t; ++typedef short int16_t; ++extern void abort (void); ++extern int memcmp(const void *, const void *, __SIZE_TYPE__); ++ ++uint8_t expected[128] = ++{14, 0, 4, 2, 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, 28, 35, 33, 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, 66, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, ++ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 96, ++ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, ++ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127}; ++ ++static uint8_t x264_clip_uint8( int x ) ++{ ++ return x&(~255) ? (-x)>>31 : x; ++} ++void add4x4_idct( uint8_t *p_dst, int16_t dct[16]) ++{ ++ int16_t d[16]; ++ int16_t tmp[16]; ++ int i, y, x; ++ for( i = 0; i < 4; i++ ) ++ { ++ int s02 = dct[0*4+i] + dct[2*4+i]; ++ int d02 = dct[0*4+i] - dct[2*4+i]; ++ int s13 = dct[1*4+i] + (dct[3*4+i]>>1); ++ int d13 = (dct[1*4+i]>>1) - dct[3*4+i]; ++ tmp[i*4+0] = s02 + s13; ++ tmp[i*4+1] = d02 + d13; ++ tmp[i*4+2] = d02 - d13; ++ tmp[i*4+3] = s02 - s13; ++ } ++ for( i = 0; i < 4; i++ ) ++ { ++ int s02 = tmp[0*4+i] + tmp[2*4+i]; ++ int d02 = tmp[0*4+i] - tmp[2*4+i]; ++ int s13 = tmp[1*4+i] + (tmp[3*4+i]>>1); ++ int d13 = (tmp[1*4+i]>>1) - tmp[3*4+i]; ++ d[0*4+i] = ( s02 + s13 + 32 ) >> 6; ++ d[1*4+i] = ( d02 + d13 + 32 ) >> 6; ++ d[2*4+i] = ( d02 - d13 + 32 ) >> 6; ++ d[3*4+i] = ( s02 - s13 + 32 ) >> 6; ++ } ++ for( y = 0; y < 4; y++ ) ++ { ++ for( x = 0; x < 4; x++ ) ++ p_dst[x] = x264_clip_uint8( p_dst[x] + d[y*4+x] ); ++ p_dst += 32; ++ } ++} ++ ++int main() ++{ ++ uint8_t dst[128]; ++ int16_t dct[16]; ++ int i; ++ ++ for (i = 0; i < 16; i++) ++ dct[i] = i*10 + i; ++ for (i = 0; i < 128; i++) ++ dst[i] = i; ++ ++ add4x4_idct(dst, dct); ++ ++ if (memcmp (dst, expected, 128)) ++ abort(); ++ ++ return 0; ++} ++ +Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c (.../branches/gcc-7-branch) +@@ -0,0 +1,34 @@ ++/* { dg-do run { target { powerpc64le-*-* } } } */ ++/* { dg-require-effective-target powerpc_p8vector_ok } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O2 " } */ ++ ++typedef __attribute__ ((__aligned__ (8))) unsigned long long __m64; ++typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__)); ++ ++/* PR84033. Extracted from xmmintrin.h but with a pointer param to ++ allow swaps to happen when not inline. */ ++int __attribute__ ((__noinline__)) ++_mm_movemask_ps (__m128 *__A) ++{ ++ __vector __m64 result; ++ static const __vector unsigned int perm_mask = ++ { ++ 0x00204060, 0x80808080, 0x80808080, 0x80808080 ++ }; ++ ++ result = (__vector __m64) ++ __builtin_vec_vbpermq ((__vector unsigned char) (*__A), ++ (__vector unsigned char) perm_mask); ++ return result[1]; ++} ++ ++int ++main (void) ++{ ++ union { unsigned int i[4]; __m128 m; } x ++ = { 0x80000000, 0x80000000, 0x7fffffff, 0x7fffffff }; ++ if (_mm_movemask_ps (&x.m) != 3) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/extend-divide-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c (.../branches/gcc-7-branch) +@@ -5,9 +5,7 @@ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ + /* { dg-options "-mcpu=power7 -O2" } */ + /* { dg-final { scan-assembler-times "divwe " 1 } } */ +-/* { dg-final { scan-assembler-times "divweo " 1 } } */ + /* { dg-final { scan-assembler-times "divweu " 1 } } */ +-/* { dg-final { scan-assembler-times "divweuo " 1 } } */ + /* { dg-final { scan-assembler-not "bl __builtin" } } */ + + int +@@ -16,20 +14,8 @@ + return __builtin_divwe (a, b); + } + +-int +-div_weo (int a, int b) +-{ +- return __builtin_divweo (a, b); +-} +- + unsigned int + div_weu (unsigned int a, unsigned int b) + { + return __builtin_divweu (a, b); + } +- +-unsigned int +-div_weuo (unsigned int a, unsigned int b) +-{ +- return __builtin_divweuo (a, b); +-} +Index: gcc/testsuite/gcc.target/powerpc/extend-divide-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c (.../branches/gcc-7-branch) +@@ -5,9 +5,7 @@ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ + /* { dg-options "-mcpu=power7 -O2" } */ + /* { dg-final { scan-assembler-times "divde " 1 } } */ +-/* { dg-final { scan-assembler-times "divdeo " 1 } } */ + /* { dg-final { scan-assembler-times "divdeu " 1 } } */ +-/* { dg-final { scan-assembler-times "divdeuo " 1 } } */ + /* { dg-final { scan-assembler-not "bl __builtin" } } */ + + long +@@ -16,20 +14,8 @@ + return __builtin_divde (a, b); + } + +-long +-div_deo (long a, long b) +-{ +- return __builtin_divdeo (a, b); +-} +- + unsigned long + div_deu (unsigned long a, unsigned long b) + { + return __builtin_divdeu (a, b); + } +- +-unsigned long +-div_deuo (unsigned long a, unsigned long b) +-{ +- return __builtin_divdeuo (a, b); +-} +Index: gcc/testsuite/gcc.target/powerpc/pr83862.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr83862.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr83862.c (.../branches/gcc-7-branch) +@@ -0,0 +1,34 @@ ++/* PR target/83862.c */ ++/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ ++/* { dg-require-effective-target ppc_float128_sw } */ ++/* { dg-require-effective-target powerpc_p9vector_ok } */ ++/* { dg-options "-mpower9-vector -O2 -mfloat128" } */ ++ ++/* On little endian systems, optimizing signbit of IEEE 128-bit values from ++ memory could abort if the memory address was indexed (reg+reg). The ++ optimization is only on 64-bit machines with direct move. ++ ++ Compile with -g -O2 -mabi=ieeelongdouble -Wno-psabi. */ ++ ++#ifndef TYPE ++#define TYPE __float128 ++#endif ++ ++int sbr (TYPE a) { return __builtin_signbit (a); } ++int sbm (TYPE *a) { return __builtin_signbit (*a); } ++int sbo (TYPE *a) { return __builtin_signbit (a[4]); } ++int sbi (TYPE *a, unsigned long n) { return __builtin_signbit (a[n]); } ++void sbs (int *p, TYPE a) { *p = __builtin_signbit (a); } ++ ++/* On big endian systems, this will generate 2 LDs and 1 LDX, while on ++ little endian systems, this will generate 3 LDs and an ADD. */ ++ ++/* { dg-final { scan-assembler-times {\mldx?\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mmfvsrd\M} 2 } } */ ++/* { dg-final { scan-assembler-times {\msrdi\M} 5 } } */ ++/* { dg-final { scan-assembler-not {\mmfvsrld\M} } } */ ++/* { dg-final { scan-assembler-not {\mstxvx?\M} } } */ ++/* { dg-final { scan-assembler-not {\mstxvw4x\M} } } */ ++/* { dg-final { scan-assembler-not {\mstxvd2x\M} } } */ ++/* { dg-final { scan-assembler-not {\mstvx\M} } } */ ++ +Index: gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c (.../branches/gcc-7-branch) +@@ -0,0 +1,169 @@ ++/* { dg-do run { target { powerpc*-*-* && p9vector_hw } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ ++/* { dg-require-effective-target powerpc_p9vector_ok } */ ++/* { dg-options "-mcpu=power9 -O2" } */ ++ ++#include ++#define TRUE 1 ++#define FALSE 0 ++ ++#ifdef DEBUG ++#include ++#endif ++ ++#define EXTRACT 0 ++ ++void abort (void); ++ ++int result_wrong_ull (vector unsigned long long vec_expected, ++ vector unsigned long long vec_actual) ++{ ++ int i; ++ ++ for (i = 0; i < 2; i++) ++ if (vec_expected[i] != vec_actual[i]) ++ return TRUE; ++ ++ return FALSE; ++} ++ ++int result_wrong_uc (vector unsigned char vec_expected, ++ vector unsigned char vec_actual) ++{ ++ int i; ++ ++ for (i = 0; i < 16; i++) ++ if (vec_expected[i] != vec_actual[i]) ++ return TRUE; ++ ++ return FALSE; ++} ++ ++#ifdef DEBUG ++void print_ull (vector unsigned long long vec_expected, ++ vector unsigned long long vec_actual) ++{ ++ int i; ++ ++ printf("expected unsigned long long data\n"); ++ for (i = 0; i < 2; i++) ++ printf(" %lld,", vec_expected[i]); ++ ++ printf("\nactual signed char data\n"); ++ for (i = 0; i < 2; i++) ++ printf(" %lld,", vec_actual[i]); ++ printf("\n"); ++} ++ ++void print_uc (vector unsigned char vec_expected, ++ vector unsigned char vec_actual) ++{ ++ int i; ++ ++ printf("expected unsigned char data\n"); ++ for (i = 0; i < 16; i++) ++ printf(" %d,", vec_expected[i]); ++ ++ printf("\nactual unsigned char data\n"); ++ for (i = 0; i < 16; i++) ++ printf(" %d,", vec_actual[i]); ++ printf("\n"); ++} ++#endif ++ ++#if EXTRACT ++vector unsigned long long ++vext (vector unsigned char *vc) ++{ ++ return vextract_si_vchar (*vc, 5); ++} ++#endif ++ ++int main() ++{ ++ vector signed int vsi_arg; ++ vector unsigned char vec_uc_arg, vec_uc_result, vec_uc_expected; ++ vector unsigned long long vec_ull_result, vec_ull_expected; ++ unsigned long long ull_result, ull_expected; ++ ++ vec_uc_arg = (vector unsigned char){1, 2, 3, 4, ++ 5, 6, 7, 8, ++ 9, 10, 11, 12, ++ 13, 14, 15, 16}; ++ ++ vsi_arg = (vector signed int){0xA, 0xB, 0xC, 0xD}; ++ ++ vec_uc_expected = (vector unsigned char){0xC, 0, 0, 0, ++ 5, 6, 7, 8, ++ 9, 10, 11, 12, ++ 13, 14, 15, 16}; ++ /* Test vec_insert4b() */ ++ /* Insert into char 0 location */ ++ vec_uc_result = vec_insert4b (vsi_arg, vec_uc_arg, 0); ++ ++ if (result_wrong_uc(vec_uc_expected, vec_uc_result)) ++ { ++#ifdef DEBUG ++ printf("Error: vec_insert4b pos 0, result does not match expected result\n"); ++ print_uc (vec_uc_expected, vec_uc_result); ++#else ++ abort(); ++#endif ++ } ++ ++ /* insert into char 4 location */ ++ vec_uc_expected = (vector unsigned char){1, 2, 3, 4, ++ 0xC, 0, 0, 0, ++ 9, 10, 11, 12, ++ 13, 14, 15, 16}; ++ vec_uc_result = vec_insert4b (vsi_arg, vec_uc_arg, 4); ++ ++ if (result_wrong_uc(vec_uc_expected, vec_uc_result)) ++ { ++#ifdef DEBUG ++ printf("Error: vec_insert4b pos 4, result does not match expected result\n"); ++ print_uc (vec_uc_expected, vec_uc_result); ++#else ++ abort(); ++#endif ++ } ++ ++ /* Test vec_extract4b() */ ++ /* Extract 4b, from char 0 location */ ++ vec_uc_arg = (vector unsigned char){10, 0, 0, 0, ++ 20, 0, 0, 0, ++ 30, 0, 0, 0, ++ 40, 0, 0, 0}; ++ ++ vec_ull_expected = (vector unsigned long long){0, 10}; ++ vec_ull_result = vec_extract4b(vec_uc_arg, 0); ++ ++ if (result_wrong_ull(vec_ull_expected, vec_ull_result)) ++ { ++#ifdef DEBUG ++ printf("Error: vec_extract4b pos 0, result does not match expected result\n"); ++ print_ull (vec_ull_expected, vec_ull_result); ++#else ++ abort(); ++#endif ++ } ++ ++ /* Extract 4b, from char 12 location */ ++ vec_uc_arg = (vector unsigned char){10, 0, 0, 0, ++ 20, 0, 0, 0, ++ 30, 0, 0, 0, ++ 40, 0, 0, 0}; ++ ++ vec_ull_expected = (vector unsigned long long){0, 40}; ++ vec_ull_result = vec_extract4b(vec_uc_arg, 12); ++ ++ if (result_wrong_ull(vec_ull_expected, vec_ull_result)) ++ { ++#ifdef DEBUG ++ printf("Error: vec_extract4b pos 12, result does not match expected result\n"); ++ print_ull (vec_ull_expected, vec_ull_result); ++#else ++ abort(); ++#endif ++ } ++} +Index: gcc/testsuite/gcc.target/powerpc/pr83399.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr83399.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr83399.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* PR target/83399 */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_vsx_ok } */ ++/* { dg-options "-O1 -mabi=elfv2 -mlittle -mvsx" } */ ++ ++typedef __attribute__((altivec(vector__))) int v4si_t; ++int ++foo (void) ++{ ++ v4si_t a, u, v, y; ++ u = __builtin_altivec_lvx (32, ((void *) &a) - 32); ++ v = __builtin_altivec_lvx (64, ((void *) &a) - 32); ++ y = u + v; ++ return y[0]; ++} +Index: gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c (.../branches/gcc-7-branch) +@@ -6,7 +6,7 @@ + /* { dg-options "-O0 -Wno-deprecated" } */ + /* { dg-final { scan-assembler-times "lvsl" 2 } } */ + /* { dg-final { scan-assembler-times "lvsr" 2 } } */ +-/* { dg-final { scan-assembler-times "lxvd2x" 2 } } */ ++/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 2 } } */ + /* { dg-final { scan-assembler-times "vperm" 2 } } */ + + +Index: gcc/testsuite/gcc.target/powerpc/pr84154-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr84154-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr84154-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,55 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } } */ ++/* { dg-require-effective-target powerpc_p8vector_ok } */ ++/* { dg-options "-mpower8-vector -O2" } */ ++ ++/* PR target/84154. Make sure conversion to char/short does not generate a ++ store and a load on ISA 2.07 and newer systems. */ ++ ++unsigned char ++double_to_uc (double x) ++{ ++ return x; ++} ++ ++signed char ++double_to_sc (double x) ++{ ++ return x; ++} ++ ++unsigned short ++double_to_us (double x) ++{ ++ return x; ++} ++ ++short ++double_to_ss (double x) ++{ ++ return x; ++} ++ ++unsigned int ++double_to_ui (double x) ++{ ++ return x; ++} ++ ++int ++double_to_si (double x) ++{ ++ return x; ++} ++ ++/* { dg-final { scan-assembler-times {\mextsb\M} 1 } } */ ++/* { dg-final { scan-assembler-times {\mextsh\M} 1 } } */ ++/* { dg-final { scan-assembler-times {\mfctiwuz\M|\mxscvdpuxws\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mfctiwz\M|\mxscvdpsxws\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mmfvsrwz\M} 6 } } */ ++/* { dg-final { scan-assembler-times {\mrlwinm\M} 2 } } */ ++/* { dg-final { scan-assembler-not {\mlbz\M} } } */ ++/* { dg-final { scan-assembler-not {\mlhz\M} } } */ ++/* { dg-final { scan-assembler-not {\mlha\M} } } */ ++/* { dg-final { scan-assembler-not {\mmfvsrd\M} } } */ ++/* { dg-final { scan-assembler-not {\mstw\M} } } */ +Index: gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c (.../branches/gcc-7-branch) +@@ -0,0 +1,109 @@ ++/* { dg-do run { target { powerpc*-*-* && p8vector_hw } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O2 " } */ ++ ++/* Make sure the test case compiled with -O2 generates the same expected ++ results. The expected results were generated with -O0. */ ++ ++#include ++#define TRUE 1 ++#define FALSE 0 ++ ++#define DEBUG 1 ++ ++#ifdef DEBUG ++#include ++#endif ++ ++void abort (void); ++ ++typedef vector unsigned long long crypto_t; ++typedef vector unsigned long long v2di_t; ++typedef vector unsigned int v4si_t; ++typedef vector unsigned short v8hi_t; ++typedef vector unsigned char v16qi_t; ++ ++v16qi_t crypto6a (v16qi_t a, v16qi_t b, v16qi_t c) ++{ ++ return __builtin_crypto_vpermxor (a, b, c); ++} ++ ++v8hi_t crypto6b (v8hi_t a, v8hi_t b, v8hi_t c) ++{ ++ return __builtin_crypto_vpermxor (a, b, c); ++} ++ ++v4si_t crypto6c (v4si_t a, v4si_t b, v4si_t c) ++{ ++ return __builtin_crypto_vpermxor (a, b, c); ++} ++ ++v2di_t crypto6d (v2di_t a, v2di_t b, v2di_t c) ++{ ++ return __builtin_crypto_vpermxor (a, b, c); ++} ++ ++int main() ++{ ++ int i; ++ v16qi_t expected_v16qi, result_v16qi; ++ v8hi_t expected_v8hi, result_v8hi; ++ v4si_t expected_v4si, result_v4si; ++ v2di_t expected_v2di, result_v2di; ++ v16qi_t v16qi_arg_a, v16qi_arg_b, v16qi_arg_c; ++ v8hi_t v8hi_arg_a, v8hi_arg_b, v8hi_arg_c; ++ v4si_t v4si_arg_a, v4si_arg_b, v4si_arg_c; ++ v2di_t v2di_arg_a, v2di_arg_b, v2di_arg_c; ++ ++ v16qi_arg_a = (vector unsigned char){ 7, 6, 5, 4, 3, 2, 1, 0, ++ 1, 2, 3, 4, 5, 6, 7, 8 }; ++ v16qi_arg_b = (vector unsigned char){ 1, 2, 3, 4, 5, 6, 7, 8, ++ 7, 6, 5, 4, 3, 2, 1, 0 }; ++ v16qi_arg_c = (vector unsigned char){ 7, 2, 5, 4, 3, 6, 1, 8, ++ 1, 6, 3, 4, 5, 2, 7, 0 }; ++ expected_v16qi = (vector unsigned char){ 15, 10, 13, 12, 11, 14, 9, 0, ++ 9, 14, 11, 12, 13, 10, 15, 8 }; ++ ++ result_v16qi = crypto6a (v16qi_arg_a, v16qi_arg_b, v16qi_arg_c); ++ ++ for (i = 0; i < 16; i++) ++ if (expected_v16qi[i] != result_v16qi[i]) ++ printf("crypto6a: result_v16qi[%d] = %d, expected = %d\n", ++ i, result_v16qi[i], expected_v16qi[i]); ++ ++ v8hi_arg_a = (vector unsigned short int){ 7, 6, 5, 4, 3, 2, 1, 0}; ++ v8hi_arg_b = (vector unsigned short int){ 1, 2, 3, 4, 5, 6, 7, 8}; ++ v8hi_arg_c = (vector unsigned short int){ 7, 2, 5, 4, 3, 6, 1, 8}; ++ expected_v8hi = (vector unsigned short int){ 5, 0, 6, 0, 7, 0, 8}; ++ ++ result_v8hi = crypto6b (v8hi_arg_a, v8hi_arg_b, v8hi_arg_c); ++ ++ for (i = 0; i < 8; i++) ++ if (expected_v8hi[i] != result_v8hi[i]) ++ printf("crypto6a: result_v8hi[%d] = %d, expected = %d\n", ++ i, result_v8hi[i], expected_v8hi[i]); ++ ++ v4si_arg_a = (vector unsigned int){ 7, 6, 5, 4}; ++ v4si_arg_b = (vector unsigned int){ 15, 6, 7, 8}; ++ v4si_arg_c = (vector unsigned int){ 7, 14, 3, 6}; ++ expected_v4si = (vector unsigned int){ 7, 0, 8, 0}; ++ ++ result_v4si = crypto6c (v4si_arg_a, v4si_arg_b, v4si_arg_c); ++ ++ for (i = 0; i < 4; i++) ++ if (expected_v4si[i] != result_v4si[i]) ++ printf("crypto6a: result_v4si[%d] = %d, expected = %d\n", ++ i, result_v4si[i], expected_v4si[i]); ++ ++ v2di_arg_a = (vector unsigned long long int){ 7, 6, }; ++ v2di_arg_b = (vector unsigned long long int){ 15, 6, }; ++ v2di_arg_c = (vector unsigned long long int){ 7, 14}; ++ expected_v2di = (vector unsigned long long int){ 6, 0}; ++ ++ result_v2di = crypto6d (v2di_arg_a, v2di_arg_b, v2di_arg_c); ++ ++ for (i = 0; i < 2; i++) ++ if (expected_v2di[i] != result_v2di[i]) ++ printf("crypto6a: result_v2di[%d] = %d, expected = %d\n", ++ i, result_v2di[i], expected_v2di[i]); ++} +Index: gcc/testsuite/gcc.target/powerpc/pr84154-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr84154-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr84154-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,58 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } } */ ++/* { dg-require-effective-target powerpc_p8vector_ok } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-mcpu=power8 -O2" } */ ++ ++/* PR target/84154. Make sure on ISA 2.07 (power8) that we store the result of ++ a conversion to char/short using an offsettable address does not generate ++ direct moves for storing 32-bit integers, but does do a direct move for ++ 8/16-bit integers. */ ++ ++void ++double_to_uc (double x, unsigned char *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_sc (double x, signed char *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_us (double x, unsigned short *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_ss (double x, short *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_ui (double x, unsigned int *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_si (double x, int *p) ++{ ++ p[3] = x; ++} ++ ++/* { dg-final { scan-assembler-times {\mfctiwuz\M|\mxscvdpuxws\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mfctiwz\M|\mxscvdpsxws\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mmfvsrwz\M} 4 } } */ ++/* { dg-final { scan-assembler-times {\mstfiwx\M|\mstxsiwx\M} 2 } } */ ++/* { dg-final { scan-assembler-times {\mstb\M} 2 } } */ ++/* { dg-final { scan-assembler-times {\msth\M} 2 } } */ ++/* { dg-final { scan-assembler-not {\mlbz\M} } } */ ++/* { dg-final { scan-assembler-not {\mlhz\M} } } */ ++/* { dg-final { scan-assembler-not {\mlha\M} } } */ ++/* { dg-final { scan-assembler-not {\mmfvsrd\M} } } */ ++/* { dg-final { scan-assembler-not {\mstw\M} } } */ +Index: gcc/testsuite/gcc.target/powerpc/vsxcopy.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsxcopy.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsxcopy.c (.../branches/gcc-7-branch) +@@ -1,8 +1,8 @@ + /* { dg-do compile { target { powerpc64*-*-* } } } */ + /* { dg-require-effective-target powerpc_vsx_ok } */ + /* { dg-options "-O1 -mvsx" } */ +-/* { dg-final { scan-assembler "lxvd2x" } } */ +-/* { dg-final { scan-assembler "stxvd2x" } } */ ++/* { dg-final { scan-assembler {\mlxvd2x\M|\mlxv\M} } } */ ++/* { dg-final { scan-assembler {\mstxvd2x\M|\mstxv\M} } } */ + /* { dg-final { scan-assembler-not "xxpermdi" } } */ + + typedef float vecf __attribute__ ((vector_size (16))); +Index: gcc/testsuite/gcc.target/powerpc/pr85755.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr85755.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr85755.c (.../branches/gcc-7-branch) +@@ -0,0 +1,22 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-options "-O1" } */ ++ ++void ++preinc (long *q, long n) ++{ ++ long i; ++ for (i = 0; i < n; i++) ++ q[i] = i; ++} ++ ++void ++predec (long *q, long n) ++{ ++ long i; ++ for (i = n; i >= 0; i--) ++ q[i] = i; ++} ++ ++/* { dg-final { scan-assembler-times {\mstwu\M} 2 { target ilp32 } } } */ ++/* { dg-final { scan-assembler-times {\mstdu\M} 2 { target lp64 } } } */ ++/* { dg-final { scan-assembler-not {\mstfdu\M} } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr84154-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr84154-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr84154-3.c (.../branches/gcc-7-branch) +@@ -0,0 +1,60 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } } */ ++/* { dg-require-effective-target powerpc_p9vector_ok } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ ++/* { dg-options "-mcpu=power9 -O2" } */ ++ ++/* PR target/84154. Make sure on ISA 3.0 we store the result of a conversion ++ to char/short using an offsettable address does not generate direct moves ++ for storing 8/16/32-bit integers. */ ++ ++void ++double_to_uc (double x, unsigned char *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_sc (double x, signed char *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_us (double x, unsigned short *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_ss (double x, short *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_ui (double x, unsigned int *p) ++{ ++ p[3] = x; ++} ++ ++void ++double_to_si (double x, int *p) ++{ ++ p[3] = x; ++} ++ ++/* { dg-final { scan-assembler-times {\maddi\M} 6 } } */ ++/* { dg-final { scan-assembler-times {\mfctiwuz\M|\mxscvdpuxws\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mfctiwz\M|\mxscvdpsxws\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mstfiwx\M|\mstxsiwx\M} 2 } } */ ++/* { dg-final { scan-assembler-times {\mstxsibx\M} 2 } } */ ++/* { dg-final { scan-assembler-times {\mstxsihx\M} 2 } } */ ++/* { dg-final { scan-assembler-not {\mlbz\M} } } */ ++/* { dg-final { scan-assembler-not {\mlhz\M} } } */ ++/* { dg-final { scan-assembler-not {\mlha\M} } } */ ++/* { dg-final { scan-assembler-not {\mmfvsrwz\M} } } */ ++/* { dg-final { scan-assembler-not {\mmfvsrd\M} } } */ ++/* { dg-final { scan-assembler-not {\mstw\M} } } */ ++/* { dg-final { scan-assembler-not {\mstb\M} } } */ ++/* { dg-final { scan-assembler-not {\msth\M} } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr84700.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr84700.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr84700.c (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++/* PR target/84700 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -misel" } */ ++ ++long long int ++foo (long long int x) ++{ ++ long long int a = x < 2; ++ int b = a >= 0; ++ ++ return a + ((x == 0) ? a : b); ++} +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ +-/* { dg-do compile { target { lp64 } } } */ ++/* { dg-do compile } */ + /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ ++/* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + + /* Test for deliberate misprediction of indirect calls. */ + +@@ -11,4 +12,10 @@ + } + + /* { dg-final { scan-assembler "crset 2" } } */ +-/* { dg-final { scan-assembler "beqctrl-" } } */ ++ ++/* The AIX and ELFv2 ABIs don't allow a sibcall here. */ ++/* { dg-final { scan-assembler "beqctrl-" { target { lp64 || { powerpc*-*-aix* } } } } } */ ++ ++/* The other ABIs do allow a sibcall. */ ++/* { dg-final { scan-assembler "beqctr-" { target { ilp32 && !powerpc*-*-aix* } } } } */ ++/* { dg-final { scan-assembler {b \$} { target { ilp32 && !powerpc*-*-aix* } } } } */ +Index: gcc/testsuite/gcc.target/nvptx/pr85056a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/nvptx/pr85056a.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/nvptx/pr85056a.c (.../branches/gcc-7-branch) +@@ -0,0 +1,3 @@ ++/* { dg-skip-if "" { *-*-* } } */ ++ ++int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; +Index: gcc/testsuite/gcc.target/nvptx/pr85056.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/nvptx/pr85056.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/nvptx/pr85056.c (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do run } */ ++/* { dg-additional-sources "pr85056a.c" } */ ++ ++extern void abort (); ++ ++extern int a[]; ++ ++int ++main () ++{ ++ int i, sum; ++ ++ sum = 0; ++ for (i = 0; i < 10; i++) ++ sum += a[i]; ++ ++ if (sum != 55) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/nvptx/indirect_call.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/nvptx/indirect_call.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/nvptx/indirect_call.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* { dg-options "-O2 -msoft-stack" } */ ++/* { dg-do run } */ ++ ++int ++f1 (int a) ++{ ++ return a + 1; ++} ++ ++int (*f2)(int) = f1; ++ ++int ++main () ++{ ++ if (f2 (100) != 101) ++ __builtin_abort(); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/arm/pr82518.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr82518.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr82518.c (.../branches/gcc-7-branch) +@@ -0,0 +1,29 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-additional-options "-O3 -fno-inline -std=gnu99" } */ ++/* { dg-add-options arm_neon } */ ++ ++typedef struct { int x, y; } X; ++ ++void f4(X *p, int n) ++{ ++ for (int i = 0; i < n; i++) ++ { p[i].x = i; ++ p[i].y = i + 1; ++ } ++} ++ ++__attribute ((aligned (16))) X arr[100]; ++ ++int main(void) ++{ ++ volatile int fail = 0; ++ f4 (arr, 100); ++ for (int i = 0; i < 100; i++) ++ if (arr[i].y != i+1 || arr[i].x != i) ++ fail = 1; ++ if (fail) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Os -mcmse -std=c99" } */ ++/* This is a copy of cmse-1.c to test arm_mve.h ISO C compatibility. */ ++#include "cmse-1.c" +Index: gcc/testsuite/gcc.target/arm/cmse/cmse-16.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/cmse/cmse-16.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/cmse/cmse-16.c (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++/* { dg-do run } */ ++/* { dg-options "-Os -mcmse" } */ ++ ++#include ++ ++int ++foo (void) ++{ ++ return cmse_nonsecure_caller (); ++} ++ ++int ++main (void) ++{ ++ /* Return success (0) if main is secure, ie if cmse_nonsecure_caller/foo ++ returns false (0). */ ++ return foo (); ++} +Index: gcc/testsuite/gcc.target/arm/cmse/cmse-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/cmse/cmse-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/cmse/cmse-1.c (.../branches/gcc-7-branch) +@@ -71,7 +71,21 @@ + { + return cmse_nonsecure_caller (); + } ++/* { dg-final { scan-assembler "baz:" } } */ ++/* { dg-final { scan-assembler "__acle_se_baz:" } } */ ++/* { dg-final { scan-assembler-not "\tcmse_nonsecure_caller" } } */ ++/* Look for an andsi of 1 with a register in function baz, ie. + ++;; Function baz ++ ++(insn (set (reg:SI ) ++ (and:SI (reg:SI ) ++ (const_int 1 ) ++ > ++(insn ++*/ ++/* { dg-final { scan-rtl-dump "\n;; Function baz\[^\n\]*\[^(\]+\[^;\]*\n\\(insn \[^(\]+ \\(set \\(reg\[^:\]*:SI \[^)\]+\\)\[^(\]*\\(and:SI \\(reg\[^:\]*:SI \[^)\]+\\)\[^(\]*\\((const_int 1|reg\[^:\]*:SI) \[^)\]+\\)\[^(\]+(\\(nil\\)\[^(\]+)?\\(insn" expand } } */ ++ + typedef int __attribute__ ((cmse_nonsecure_call)) (int_nsfunc_t) (void); + + int default_callback (void) +@@ -86,6 +100,11 @@ + { + fp = cmse_nsfptr_create (callback); + } ++/* { dg-final { scan-assembler "qux:" } } */ ++/* { dg-final { scan-assembler "__acle_se_qux:" } } */ ++/* { dg-final { scan-assembler "bic" } } */ ++/* { dg-final { scan-assembler "push\t\{r4, r5, r6" } } */ ++/* { dg-final { scan-assembler "msr\tAPSR_nzcvq" } } */ + + int call_callback (void) + { +@@ -94,13 +113,4 @@ + else + return default_callback (); + } +-/* { dg-final { scan-assembler "baz:" } } */ +-/* { dg-final { scan-assembler "__acle_se_baz:" } } */ +-/* { dg-final { scan-assembler "qux:" } } */ +-/* { dg-final { scan-assembler "__acle_se_qux:" } } */ +-/* { dg-final { scan-assembler-not "\tcmse_nonsecure_caller" } } */ +-/* { dg-final { scan-rtl-dump "and.*reg.*const_int 1" expand } } */ +-/* { dg-final { scan-assembler "bic" } } */ +-/* { dg-final { scan-assembler "push\t\{r4, r5, r6" } } */ +-/* { dg-final { scan-assembler "msr\tAPSR_nzcvq" } } */ + /* { dg-final { scan-assembler-times "bl\\s+__gnu_cmse_nonsecure_call" 1 } } */ +Index: gcc/testsuite/gcc.target/arm/pr82989.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr82989.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr82989.c (.../branches/gcc-7-branch) +@@ -0,0 +1,33 @@ ++/* PR target/82989. */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_neon_ok } */ ++/* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mcpu=*" } { "-mcpu=cortex-a8" } } */ ++/* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfpu=*" } { "-mfpu=neon" } } */ ++/* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=hard" } } */ ++/* { dg-options "-O2 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard" } */ ++/* { dg-add-options arm_neon } */ ++ ++typedef unsigned long long uint64_t; ++ ++void f_shr_imm (uint64_t *a) ++{ ++ *a += *a >> 32; ++} ++ ++void f_shr_reg (uint64_t *a, uint64_t b) ++{ ++ *a += *a >> b; ++} ++ ++void f_shl_imm (uint64_t *a) ++{ ++ *a += *a << 32; ++} ++ ++void f_shl_reg (uint64_t *a, uint64_t b) ++{ ++ *a += *a << b; ++} ++/* { dg-final { scan-assembler-not "vshl*" } } */ ++/* { dg-final { scan-assembler-not "vshr*" } } */ ++/* { dg-final { scan-assembler-not "vmov*" } } */ +Index: gcc/testsuite/gcc.target/arm/fpscr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/fpscr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/fpscr.c (.../branches/gcc-7-branch) +@@ -6,11 +6,14 @@ + /* { dg-add-options arm_fp } */ + + void +-test_fpscr () ++test_fpscr (void) + { +- volatile unsigned int status = __builtin_arm_get_fpscr (); ++ unsigned status; ++ ++ __builtin_arm_set_fpscr (0); ++ status = __builtin_arm_get_fpscr (); + __builtin_arm_set_fpscr (status); + } + + /* { dg-final { scan-assembler "mrc\tp10, 7, r\[0-9\]+, cr1, cr0, 0" } } */ +-/* { dg-final { scan-assembler "mcr\tp10, 7, r\[0-9\]+, cr1, cr0, 0" } } */ ++/* { dg-final { scan-assembler-times "mcr\tp10, 7, r\[0-9\]+, cr1, cr0, 0" 2 } } */ +Index: gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do assemble } */ ++/* { dg-require-effective-target arm_arm_ok } */ ++/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=soft" } } */ ++/* { dg-options "-O2 -marm -mfloat-abi=soft" } */ ++ ++/* Check that we don't try to emit STRD in ARM state with ++ odd starting register. */ ++ ++struct S { ++ double M0; ++} __attribute((aligned)) __attribute((packed)); ++ ++void bar(void *); ++ ++void foo(int x, struct S y) { ++ asm("" : : : "r1", "r8", "r7", "r4"); ++ y.M0 ?: bar(0); ++ bar(__builtin_alloca(8)); ++} +Index: gcc/testsuite/gcc.target/arm/pr84826.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr84826.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr84826.c (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb2_ok } */ ++/* { dg-options "-Ofast -fstack-check" } */ ++ ++void d (void *); ++ ++void a () ++{ ++ int b; ++ void bar (int c) ++ { ++ if (__builtin_expect (c, 0)) ++ ++b; ++ } ++ d (bar); ++} +Index: gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,77 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */ ++/* case-values-threshold will be set to 20 by the back-end when jump ++ thunk are requested. */ ++ ++int __attribute__((noinline,noclone)) foo1 (void) { return 1; } ++int __attribute__((noinline,noclone)) foo2 (void) { return 2; } ++int __attribute__((noinline,noclone)) foo3 (void) { return 3; } ++int __attribute__((noinline,noclone)) foo4 (void) { return 4; } ++int __attribute__((noinline,noclone)) foo5 (void) { return 5; } ++int __attribute__((noinline,noclone)) foo6 (void) { return 6; } ++int __attribute__((noinline,noclone)) foo7 (void) { return 7; } ++int __attribute__((noinline,noclone)) foo8 (void) { return 8; } ++int __attribute__((noinline,noclone)) foo9 (void) { return 9; } ++int __attribute__((noinline,noclone)) foo10 (void) { return 10; } ++int __attribute__((noinline,noclone)) foo11 (void) { return 11; } ++int __attribute__((noinline,noclone)) foo12 (void) { return 12; } ++int __attribute__((noinline,noclone)) foo13 (void) { return 13; } ++int __attribute__((noinline,noclone)) foo14 (void) { return 14; } ++int __attribute__((noinline,noclone)) foo15 (void) { return 15; } ++int __attribute__((noinline,noclone)) foo16 (void) { return 16; } ++int __attribute__((noinline,noclone)) foo17 (void) { return 17; } ++int __attribute__((noinline,noclone)) foo18 (void) { return 18; } ++int __attribute__((noinline,noclone)) foo19 (void) { return 19; } ++int __attribute__((noinline,noclone)) foo20 (void) { return 20; } ++ ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ int ret = 0; ++ ++ switch (a) ++ { ++ case 1: ret = foo1 (); break; ++ case 2: ret = foo2 (); break; ++ case 3: ret = foo3 (); break; ++ case 4: ret = foo4 (); break; ++ case 5: ret = foo5 (); break; ++ case 6: ret = foo6 (); break; ++ case 7: ret = foo7 (); break; ++ case 8: ret = foo8 (); break; ++ case 9: ret = foo9 (); break; ++ case 10: ret = foo10 (); break; ++ case 11: ret = foo11 (); break; ++ case 12: ret = foo12 (); break; ++ case 13: ret = foo13 (); break; ++ case 14: ret = foo14 (); break; ++ case 15: ret = foo15 (); break; ++ case 16: ret = foo16 (); break; ++ case 17: ret = foo17 (); break; ++ case 18: ret = foo18 (); break; ++ case 19: ret = foo19 (); break; ++ case 20: ret = foo20 (); break; ++ default: ++ __builtin_abort (); ++ } ++ ++ return ret; ++} ++ ++int ++main () ++{ ++ if (bar (3) != 3) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "exrl" 1 } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c (.../branches/gcc-7-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */ ++/* { dg-require-effective-target label_values } */ ++ ++/* This is a copy of the gcc.c-torture/execute/20040302-1.c ++ testcase. */ ++ ++int code[]={0,0,0,0,1}; ++ ++void ++foo(int x) { ++ volatile int b; ++ b = 0xffffffff; ++} ++ ++void ++bar(int *pc) { ++ static const void *l[] = {&&lab0, &&end}; ++ ++ foo(0); ++ goto *l[*pc]; ++ lab0: ++ foo(0); ++ pc++; ++ goto *l[*pc]; ++ end: ++ return; ++} ++ ++int ++main() { ++ bar(code); ++ return 0; ++} ++ ++/* 2 x bar ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "ex\t" } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=zEC12 -mzarch" } */ ++ ++/* A bug in the builtin definition made__builtin_tbeginc to have an ++ integer return argument. */ ++void ++must_not_compile1 (void) ++{ ++ int rc = __builtin_tbeginc (); /* { dg-error "void value not ignored as it ought to be" } */ ++} +Index: gcc/testsuite/gcc.target/s390/flogr-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/flogr-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/flogr-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,47 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -funroll-loops -march=z9-109" } */ ++/* { dg-require-effective-target stdint_types } */ ++ ++/* Folding of the FLOGR caused a wrong value to be returned by ++ __builtin_clz becuase of a problem in the RTX we emit for FLOGR. ++ The problematic folding can only be triggered with constants inputs ++ introduced on RTL level. In this case it happens with loop ++ unrolling. */ ++ ++#include ++#include ++ ++static inline uint32_t pow2_ceil_u32(uint32_t x) { ++ if (x <= 1) { ++ return x; ++ } ++ int msb_on_index; ++ msb_on_index = (31 ^ __builtin_clz(x - 1)); ++ assert(msb_on_index < 31); ++ return 1U << (msb_on_index + 1); ++} ++ ++void __attribute__((noinline,noclone)) ++die (int a) ++{ ++ if (a) ++ __builtin_abort (); ++} ++ ++void test_pow2_ceil_u32(void) { ++ unsigned i; ++ ++ for (i = 0; i < 18; i++) { ++ uint32_t a_ = (pow2_ceil_u32(((uint32_t)1) << i)); ++ if (!(a_ == (((uint32_t)1) << i))) { ++ die(1); ++ } ++ } ++} ++ ++int ++main(void) { ++ test_pow2_ceil_u32(); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table -fno-dwarf2-cfi-asm" } */ ++ ++/* Make sure that we do not emit .cfi directives when -fno-dwarf2-cfi-asm is being used. */ ++ ++int ++main () ++{ ++ return 0; ++} ++ ++/* 1 x main ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */ ++/* { dg-final { scan-assembler "ex\t" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/pr84295.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/pr84295.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/pr84295.c (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=z900 -fgnu89-inline --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */ ++ ++extern void foo (void); ++extern __inline void foo (void) {} ++void foo (void) {} ++ ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */ ++/* { dg-final { scan-assembler "ex\t" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c (.../branches/gcc-7-branch) +@@ -0,0 +1,46 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((function_return_mem("thunk"),noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* With -march=z10 -mzarch the shrink wrapped returns use compare and ++ swap relative to jump to the exit block instead of making use of ++ the conditional return pattern. ++ FIXME: Use compare and branch register for that!!!! */ ++ ++/* 2 x foo ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c (.../branches/gcc-7-branch) +@@ -0,0 +1,56 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-table" } */ ++ ++int gl; ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ gl = a + 40; ++} ++ ++int __attribute__((noinline,noclone)) ++foo_value (int a) ++{ ++ return a + 40; ++} ++ ++void* __attribute__((noinline,noclone)) ++get_fptr (int a) ++{ ++ switch (a) ++ { ++ case 0: return &foo; break; ++ case 1: return &foo_value; break; ++ default: __builtin_abort (); ++ } ++} ++ ++void (*f) (int); ++int (*g) (int); ++ ++int __attribute__((indirect_branch_call("thunk"))) ++main () ++{ ++ int res; ++ ++ f = get_fptr(0); ++ f (2); ++ if (gl != 42) ++ __builtin_abort (); ++ ++ g = get_fptr(1); ++ if (g (2) != 42) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 2 x main ++/* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c (.../branches/gcc-7-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */ ++/* { dg-require-effective-target label_values } */ ++ ++/* This is a copy of the gcc.c-torture/execute/20040302-1.c ++ testcase. */ ++ ++int code[]={0,0,0,0,1}; ++ ++void ++foo(int x) { ++ volatile int b; ++ b = 0xffffffff; ++} ++ ++void ++bar(int *pc) { ++ static const void *l[] = {&&lab0, &&end}; ++ ++ foo(0); ++ goto *l[*pc]; ++ lab0: ++ foo(0); ++ pc++; ++ goto *l[*pc]; ++ end: ++ return; ++} ++ ++int ++main() { ++ bar(code); ++ return 0; ++} ++ ++/* The two gotos in bar get merged. */ ++/* { dg-final { scan-assembler-times "\tex\t" 1 } } */ ++ ++/* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c (.../branches/gcc-7-branch) +@@ -0,0 +1,78 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 -mzarch --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */ ++ ++/* case-values-threshold will be set to 20 by the back-end when jump ++ thunk are requested. */ ++ ++int __attribute__((noinline,noclone)) foo1 (void) { return 1; } ++int __attribute__((noinline,noclone)) foo2 (void) { return 2; } ++int __attribute__((noinline,noclone)) foo3 (void) { return 3; } ++int __attribute__((noinline,noclone)) foo4 (void) { return 4; } ++int __attribute__((noinline,noclone)) foo5 (void) { return 5; } ++int __attribute__((noinline,noclone)) foo6 (void) { return 6; } ++int __attribute__((noinline,noclone)) foo7 (void) { return 7; } ++int __attribute__((noinline,noclone)) foo8 (void) { return 8; } ++int __attribute__((noinline,noclone)) foo9 (void) { return 9; } ++int __attribute__((noinline,noclone)) foo10 (void) { return 10; } ++int __attribute__((noinline,noclone)) foo11 (void) { return 11; } ++int __attribute__((noinline,noclone)) foo12 (void) { return 12; } ++int __attribute__((noinline,noclone)) foo13 (void) { return 13; } ++int __attribute__((noinline,noclone)) foo14 (void) { return 14; } ++int __attribute__((noinline,noclone)) foo15 (void) { return 15; } ++int __attribute__((noinline,noclone)) foo16 (void) { return 16; } ++int __attribute__((noinline,noclone)) foo17 (void) { return 17; } ++int __attribute__((noinline,noclone)) foo18 (void) { return 18; } ++int __attribute__((noinline,noclone)) foo19 (void) { return 19; } ++int __attribute__((noinline,noclone)) foo20 (void) { return 20; } ++ ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ int ret = 0; ++ ++ switch (a) ++ { ++ case 1: ret = foo1 (); break; ++ case 2: ret = foo2 (); break; ++ case 3: ret = foo3 (); break; ++ case 4: ret = foo4 (); break; ++ case 5: ret = foo5 (); break; ++ case 6: ret = foo6 (); break; ++ case 7: ret = foo7 (); break; ++ case 8: ret = foo8 (); break; ++ case 9: ret = foo9 (); break; ++ case 10: ret = foo10 (); break; ++ case 11: ret = foo11 (); break; ++ case 12: ret = foo12 (); break; ++ case 13: ret = foo13 (); break; ++ case 14: ret = foo14 (); break; ++ case 15: ret = foo15 (); break; ++ case 16: ret = foo16 (); break; ++ case 17: ret = foo17 (); break; ++ case 18: ret = foo18 (); break; ++ case 19: ret = foo19 (); break; ++ case 20: ret = foo20 (); break; ++ default: ++ __builtin_abort (); ++ } ++ ++ return ret; ++} ++ ++int ++main () ++{ ++ if (bar (3) != 3) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "\tex\t" 1 } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c (.../branches/gcc-7-branch) +@@ -0,0 +1,44 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mfunction-return-reg=thunk-extern -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */ ++ ++/* No thunks due to thunk-extern. */ ++/* { dg-final { scan-assembler-not "exrl" } } */ ++/* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c (.../branches/gcc-7-branch) +@@ -0,0 +1,49 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=z10 -mzarch --save-temps -mfunction-return-mem=thunk-extern -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* With -march=z10 -mzarch the shrink wrapped returns use compare and ++ swap relative to jump to the exit block instead of making use of ++ the conditional return pattern. ++ FIXME: Use compare and branch register for that!!!! */ ++ ++/* 2 x foo, 1 x main ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 3 } } */ ++ ++/* No thunks due to thunk-extern. */ ++/* { dg-final { scan-assembler-not "exrl" } } */ ++/* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c (.../branches/gcc-7-branch) +@@ -0,0 +1,59 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-call=thunk-extern -mindirect-branch-table" } */ ++ ++int gl; ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ gl = a + 40; ++} ++ ++int __attribute__((noinline,noclone)) ++foo_value (int a) ++{ ++ return a + 40; ++} ++ ++void* __attribute__((noinline,noclone)) ++get_fptr (int a) ++{ ++ switch (a) ++ { ++ case 0: return &foo; break; ++ case 1: return &foo_value; break; ++ default: __builtin_abort (); ++ } ++} ++ ++void (*f) (int); ++int (*g) (int); ++ ++int ++main () ++{ ++ int res; ++ ++ f = get_fptr(0); ++ f (2); ++ if (gl != 42) ++ __builtin_abort (); ++ ++ g = get_fptr(1); ++ if (g (2) != 42) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 2 x main ++/* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */ ++ ++/* No thunks due to thunk-extern. */ ++/* { dg-final { scan-assembler-not "exrl" } } */ ++/* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c (.../branches/gcc-7-branch) +@@ -0,0 +1,46 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-jump=thunk-extern -mindirect-branch-table" } */ ++/* { dg-require-effective-target label_values } */ ++ ++/* This is a copy of the gcc.c-torture/execute/20040302-1.c ++ testcase. */ ++ ++int code[]={0,0,0,0,1}; ++ ++void ++foo(int x) { ++ volatile int b; ++ b = 0xffffffff; ++} ++ ++void ++bar(int *pc) { ++ static const void *l[] = {&&lab0, &&end}; ++ ++ foo(0); ++ goto *l[*pc]; ++ lab0: ++ foo(0); ++ pc++; ++ goto *l[*pc]; ++ end: ++ return; ++} ++ ++int ++main() { ++ bar(code); ++ return 0; ++} ++ ++/* 2 x bar ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++ ++/* No thunks due to thunk-extern. */ ++/* { dg-final { scan-assembler-not "exrl" } } */ ++/* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,46 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 -mzarch --save-temps -mfunction-return-mem=thunk -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* With -march=z10 -mzarch the shrink wrapped returns use compare and ++ swap relative to jump to the exit block instead of making use of ++ the conditional return pattern. ++ FIXME: Use compare and branch register for that!!!! */ ++ ++/* 2 x foo, 1 x main ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 3 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,56 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-call=thunk -mindirect-branch-table" } */ ++ ++int gl; ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ gl = a + 40; ++} ++ ++int __attribute__((noinline,noclone)) ++foo_value (int a) ++{ ++ return a + 40; ++} ++ ++void* __attribute__((noinline,noclone)) ++get_fptr (int a) ++{ ++ switch (a) ++ { ++ case 0: return &foo; break; ++ case 1: return &foo_value; break; ++ default: __builtin_abort (); ++ } ++} ++ ++void (*f) (int); ++int (*g) (int); ++ ++int ++main () ++{ ++ int res; ++ ++ f = get_fptr(0); ++ f (2); ++ if (gl != 42) ++ __builtin_abort (); ++ ++ g = get_fptr(1); ++ if (g (2) != 42) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 2 x main ++/* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c (.../branches/gcc-7-branch) +@@ -0,0 +1,41 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((function_return_reg("thunk"),noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c (.../branches/gcc-7-branch) +@@ -0,0 +1,42 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-table" } */ ++/* { dg-require-effective-target label_values } */ ++ ++/* This is a copy of the gcc.c-torture/execute/20040302-1.c ++ testcase. */ ++ ++int code[]={0,0,0,0,1}; ++ ++void ++foo(int x) { ++ volatile int b; ++ b = 0xffffffff; ++} ++ ++void __attribute__((indirect_branch_jump("thunk"))) ++bar(int *pc) { ++ static const void *l[] = {&&lab0, &&end}; ++ ++ foo(0); ++ goto *l[*pc]; ++ lab0: ++ foo(0); ++ pc++; ++ goto *l[*pc]; ++ end: ++ return; ++} ++ ++int main() { ++ bar(code); ++ return 0; ++} ++ ++/* 2x bar */ ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c (.../branches/gcc-7-branch) +@@ -0,0 +1,48 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-mem=thunk -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x foo, 1 x main ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++ ++/* 1 x foo, conditional return, shrink wrapped ++/* { dg-final { scan-assembler "jge\t__s390_indirect_jump" } } */ ++ ++/* 1 x foo, conditional return, shrink wrapped ++/* { dg-final { scan-assembler "jgle\t__s390_indirect_jump" } } */ ++ ++/* { dg-final { scan-assembler "ex\t" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */ ++/* { dg-require-effective-target label_values } */ ++ ++/* This is a copy of the gcc.c-torture/execute/20040302-1.c ++ testcase. */ ++ ++int code[]={0,0,0,0,1}; ++ ++void ++foo(int x) { ++ volatile int b; ++ b = 0xffffffff; ++} ++ ++void ++bar(int *pc) { ++ static const void *l[] = {&&lab0, &&end}; ++ ++ foo(0); ++ goto *l[*pc]; ++ lab0: ++ foo(0); ++ pc++; ++ goto *l[*pc]; ++ end: ++ return; ++} ++ ++int ++main() { ++ bar(code); ++ return 0; ++} ++ ++/* The two gotos in bar get merged. */ ++/* { dg-final { scan-assembler-times "exrl" 1 } } */ ++ ++/* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c (.../branches/gcc-7-branch) +@@ -0,0 +1,40 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 -mzarch --save-temps -mfunction-return-mem=thunk -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((function_return("keep"),noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int __attribute__((function_return("keep"))) ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c (.../branches/gcc-7-branch) +@@ -0,0 +1,56 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 --save-temps -mindirect-branch-call=thunk -mindirect-branch-table" } */ ++ ++int gl; ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ gl = a + 40; ++} ++ ++int __attribute__((noinline,noclone)) ++foo_value (int a) ++{ ++ return a + 40; ++} ++ ++void* __attribute__((noinline,noclone)) ++get_fptr (int a) ++{ ++ switch (a) ++ { ++ case 0: return &foo; break; ++ case 1: return &foo_value; break; ++ default: __builtin_abort (); ++ } ++} ++ ++void (*f) (int); ++int (*g) (int); ++ ++int ++main () ++{ ++ int res; ++ ++ f = get_fptr(0); ++ f (2); ++ if (gl != 42) ++ __builtin_abort (); ++ ++ g = get_fptr(1); ++ if (g (2) != 42) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 2 x main ++/* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "ex\t" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c (.../branches/gcc-7-branch) +@@ -0,0 +1,42 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-table" } */ ++/* { dg-require-effective-target label_values } */ ++ ++/* This is a copy of the gcc.c-torture/execute/20040302-1.c ++ testcase. */ ++ ++int code[]={0,0,0,0,1}; ++ ++void foo(int x) { ++ volatile int b; ++ b = 0xffffffff; ++} ++ ++void __attribute__((indirect_branch_jump("thunk-inline"))) ++bar(int *pc) { ++ static const void *l[] = {&&lab0, &&end}; ++ ++ foo(0); ++ goto *l[*pc]; ++ lab0: ++ foo(0); ++ pc++; ++ goto *l[*pc]; ++ end: ++ return; ++} ++ ++int ++main() { ++ bar(code); ++ return 0; ++} ++ ++/* The two gotos in bar get merged. */ ++/* { dg-final { scan-assembler-times "exrl" 1 } } */ ++ ++/* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c (.../branches/gcc-7-branch) +@@ -0,0 +1,29 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -mzarch -march=z10" } */ ++ ++/* According to IEEE 754 2008 4.3 Conversion operations between ++ different radixes must use the rounding mode of the target radix. ++ On S/390 this means passing the right value in GPR0 to PFPO ++ instruction. */ ++ ++#include ++ ++double __attribute__((noclone,noinline)) ++convert (_Decimal64 in) ++{ ++ return (double)in; ++} ++ ++int ++main () ++{ ++ fesetround (FE_UPWARD); ++ ++ if (convert (1e-325DD) != __DBL_DENORM_MIN__) ++ __builtin_abort (); ++ ++ fesetround (FE_DOWNWARD); ++ ++ if (convert (-1e-325DD) != -__DBL_DENORM_MIN__) ++ __builtin_abort (); ++} +Index: gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c (.../branches/gcc-7-branch) +@@ -0,0 +1,78 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 -mzarch --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */ ++ ++/* case-values-threshold will be set to 20 by the back-end when jump ++ thunk are requested. */ ++ ++int __attribute__((noinline,noclone)) foo1 (void) { return 1; } ++int __attribute__((noinline,noclone)) foo2 (void) { return 2; } ++int __attribute__((noinline,noclone)) foo3 (void) { return 3; } ++int __attribute__((noinline,noclone)) foo4 (void) { return 4; } ++int __attribute__((noinline,noclone)) foo5 (void) { return 5; } ++int __attribute__((noinline,noclone)) foo6 (void) { return 6; } ++int __attribute__((noinline,noclone)) foo7 (void) { return 7; } ++int __attribute__((noinline,noclone)) foo8 (void) { return 8; } ++int __attribute__((noinline,noclone)) foo9 (void) { return 9; } ++int __attribute__((noinline,noclone)) foo10 (void) { return 10; } ++int __attribute__((noinline,noclone)) foo11 (void) { return 11; } ++int __attribute__((noinline,noclone)) foo12 (void) { return 12; } ++int __attribute__((noinline,noclone)) foo13 (void) { return 13; } ++int __attribute__((noinline,noclone)) foo14 (void) { return 14; } ++int __attribute__((noinline,noclone)) foo15 (void) { return 15; } ++int __attribute__((noinline,noclone)) foo16 (void) { return 16; } ++int __attribute__((noinline,noclone)) foo17 (void) { return 17; } ++int __attribute__((noinline,noclone)) foo18 (void) { return 18; } ++int __attribute__((noinline,noclone)) foo19 (void) { return 19; } ++int __attribute__((noinline,noclone)) foo20 (void) { return 20; } ++ ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ int ret = 0; ++ ++ switch (a) ++ { ++ case 1: ret = foo1 (); break; ++ case 2: ret = foo2 (); break; ++ case 3: ret = foo3 (); break; ++ case 4: ret = foo4 (); break; ++ case 5: ret = foo5 (); break; ++ case 6: ret = foo6 (); break; ++ case 7: ret = foo7 (); break; ++ case 8: ret = foo8 (); break; ++ case 9: ret = foo9 (); break; ++ case 10: ret = foo10 (); break; ++ case 11: ret = foo11 (); break; ++ case 12: ret = foo12 (); break; ++ case 13: ret = foo13 (); break; ++ case 14: ret = foo14 (); break; ++ case 15: ret = foo15 (); break; ++ case 16: ret = foo16 (); break; ++ case 17: ret = foo17 (); break; ++ case 18: ret = foo18 (); break; ++ case 19: ret = foo19 (); break; ++ case 20: ret = foo20 (); break; ++ default: ++ __builtin_abort (); ++ } ++ ++ return ret; ++} ++ ++int ++main () ++{ ++ if (bar (3) != 3) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "ex\t" 1 } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,41 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */ ++/* { dg-require-effective-target label_values } */ ++ ++/* This is a copy of the gcc.c-torture/execute/20040302-1.c ++ testcase. */ ++ ++int code[]={0,0,0,0,1}; ++ ++void ++foo(int x) { ++ volatile int b; ++ b = 0xffffffff; ++} ++ ++void ++bar(int *pc) { ++ static const void *l[] = {&&lab0, &&end}; ++ ++ foo(0); ++ goto *l[*pc]; ++ lab0: ++ foo(0); ++ pc++; ++ goto *l[*pc]; ++ end: ++ return; ++} ++ ++int ++main() { ++ bar(code); ++ return 0; ++} ++ ++/* 2x bar */ ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,78 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */ ++ ++/* case-values-threshold will be set to 20 by the back-end when jump ++ thunk are requested. */ ++ ++int __attribute__((noinline,noclone)) foo1 (void) { return 1; } ++int __attribute__((noinline,noclone)) foo2 (void) { return 2; } ++int __attribute__((noinline,noclone)) foo3 (void) { return 3; } ++int __attribute__((noinline,noclone)) foo4 (void) { return 4; } ++int __attribute__((noinline,noclone)) foo5 (void) { return 5; } ++int __attribute__((noinline,noclone)) foo6 (void) { return 6; } ++int __attribute__((noinline,noclone)) foo7 (void) { return 7; } ++int __attribute__((noinline,noclone)) foo8 (void) { return 8; } ++int __attribute__((noinline,noclone)) foo9 (void) { return 9; } ++int __attribute__((noinline,noclone)) foo10 (void) { return 10; } ++int __attribute__((noinline,noclone)) foo11 (void) { return 11; } ++int __attribute__((noinline,noclone)) foo12 (void) { return 12; } ++int __attribute__((noinline,noclone)) foo13 (void) { return 13; } ++int __attribute__((noinline,noclone)) foo14 (void) { return 14; } ++int __attribute__((noinline,noclone)) foo15 (void) { return 15; } ++int __attribute__((noinline,noclone)) foo16 (void) { return 16; } ++int __attribute__((noinline,noclone)) foo17 (void) { return 17; } ++int __attribute__((noinline,noclone)) foo18 (void) { return 18; } ++int __attribute__((noinline,noclone)) foo19 (void) { return 19; } ++int __attribute__((noinline,noclone)) foo20 (void) { return 20; } ++ ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ int ret = 0; ++ ++ switch (a) ++ { ++ case 1: ret = foo1 (); break; ++ case 2: ret = foo2 (); break; ++ case 3: ret = foo3 (); break; ++ case 4: ret = foo4 (); break; ++ case 5: ret = foo5 (); break; ++ case 6: ret = foo6 (); break; ++ case 7: ret = foo7 (); break; ++ case 8: ret = foo8 (); break; ++ case 9: ret = foo9 (); break; ++ case 10: ret = foo10 (); break; ++ case 11: ret = foo11 (); break; ++ case 12: ret = foo12 (); break; ++ case 13: ret = foo13 (); break; ++ case 14: ret = foo14 (); break; ++ case 15: ret = foo15 (); break; ++ case 16: ret = foo16 (); break; ++ case 17: ret = foo17 (); break; ++ case 18: ret = foo18 (); break; ++ case 19: ret = foo19 (); break; ++ case 20: ret = foo20 (); break; ++ default: ++ __builtin_abort (); ++ } ++ ++ return ret; ++} ++ ++int ++main () ++{ ++ if (bar (3) != 3) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "exrl" 1 } } */ ++ ++/* { dg-final { scan-assembler "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c (.../branches/gcc-7-branch) +@@ -0,0 +1,41 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */ ++/* { dg-final { scan-assembler "ex\t" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c (.../branches/gcc-7-branch) +@@ -0,0 +1,46 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-table" } */ ++ ++int gl = 0; ++ ++int __attribute__((noinline,noclone)) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++void __attribute__((function_return("thunk"),noinline,noclone)) ++foo (int a) ++{ ++ int i; ++ ++ if (a == 42) ++ return; ++ ++ for (i = 0; i < a; i++) ++ gl += bar (i); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (gl != 9) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* With -march=z10 -mzarch the shrink wrapped returns use compare and ++ swap relative to jump to the exit block instead of making use of ++ the conditional return pattern. ++ FIXME: Use compare and branch register for that!!!! */ ++ ++/* 2 x foo ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++/* { dg-final { scan-assembler "exrl" } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c (.../branches/gcc-7-branch) +@@ -0,0 +1,44 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */ ++ ++/* We have to generate different thunks for indirect branches ++ depending on whether the code is compiled for pre z10 machines or ++ later. This testcase makes sure this works within the same compile ++ unit. */ ++ ++int __attribute__((noinline,noclone,target("arch=z10"))) ++bar (int a) ++{ ++ return a + 2; ++} ++ ++int __attribute__((noinline,noclone,target("arch=z9-ec"))) ++foo (int a) ++{ ++ return a + 3; ++} ++ ++int ++main () ++{ ++ if (bar (42) != 44) ++ __builtin_abort (); ++ ++ if (foo (42) != 45) ++ __builtin_abort (); ++ ++ return 0; ++} ++ ++/* 1 x bar, 1 x foo */ ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */ ++/* 1 x foo */ ++/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump_r1use" 1 } } */ ++ ++/* { dg-final { scan-assembler-times "ex\t" 1 } } */ ++/* { dg-final { scan-assembler-times "exrl\t" 1 } } */ ++ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ ++/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ ++/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */ +Index: gcc/testsuite/gcc.target/msp430/pr79242.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/msp430/pr79242.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/msp430/pr79242.c (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { "*-*-*" } { "-mcpu=msp430" "-msmall" } { "" } } */ ++/* { dg-options "-mcpu=msp430x" } */ ++ ++typedef _Complex __int20 C; ++ ++C ++foo (C x, C y) ++{ ++ return x + y; ++} +Index: gcc/testsuite/gcc.target/msp430/pr86662.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/msp430/pr86662.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/msp430/pr86662.c (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++/* PR/86662 */ ++ ++/* { dg-do link } */ ++/* -nostdlib prevents link errors due to mismatched code models for ++ libgloss objects. */ ++/* { dg-options "-mlarge -flto -nostdlib" } */ ++/* { dg-skip-if "" { *-*-* } { "-mcpu=msp430" } } */ ++ ++int main(void) ++{ ++ __int20 n = 5; ++ return 0; ++} +Index: gcc/testsuite/gcc.target/aarch64/pr81647.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr81647.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr81647.c (.../branches/gcc-7-branch) +@@ -0,0 +1,45 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fdump-tree-ssa" } */ ++/* { dg-require-effective-target fenv_exceptions } */ ++ ++#include ++ ++double x[28], y[28]; ++int res[28]; ++ ++int ++main (void) ++{ ++ int i; ++ for (i = 0; i < 28; ++i) ++ { ++ x[i] = __builtin_nan (""); ++ y[i] = i; ++ } ++ __asm__ volatile ("" ::: "memory"); ++ feclearexcept (FE_ALL_EXCEPT); ++ for (i = 0; i < 4; ++i) ++ res[i] = __builtin_isgreater (x[i], y[i]); ++ for (i = 4; i < 8; ++i) ++ res[i] = __builtin_isgreaterequal (x[i], y[i]); ++ for (i = 8; i < 12; ++i) ++ res[i] = __builtin_isless (x[i], y[i]); ++ for (i = 12; i < 16; ++i) ++ res[i] = __builtin_islessequal (x[i], y[i]); ++ for (i = 16; i < 20; ++i) ++ res[i] = __builtin_islessgreater (x[i], y[i]); ++ for (i = 20; i < 24; ++i) ++ res[i] = __builtin_isunordered (x[i], y[i]); ++ for (i = 24; i < 28; ++i) ++ res[i] = !(__builtin_isunordered (x[i], y[i])); ++ __asm__ volatile ("" ::: "memory"); ++ return fetestexcept (FE_ALL_EXCEPT) != 0; ++} ++ ++/* { dg-final { scan-tree-dump " u> " "ssa" } } */ ++/* { dg-final { scan-tree-dump " u>= " "ssa" } } */ ++/* { dg-final { scan-tree-dump " u< " "ssa" } } */ ++/* { dg-final { scan-tree-dump " u<= " "ssa" } } */ ++/* { dg-final { scan-tree-dump " u== " "ssa" } } */ ++/* { dg-final { scan-tree-dump " unord " "ssa" } } */ ++/* { dg-final { scan-tree-dump " ord " "ssa" } } */ +Index: gcc/testsuite/gcc.target/aarch64/pr87511.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr87511.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr87511.c (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++/* { dg-do assemble } */ ++/* { dg-options "-Os" } */ ++ ++int a, d; ++struct { ++ signed f5 : 26; ++ signed f6 : 12; ++} b; ++signed char c; ++void fn1() { ++ signed char *e = &c; ++ d = a * 10; ++ *e = d; ++ b.f6 = c; ++ b.f5 = 8 <= 3; ++} +Index: gcc/testsuite/gcc.target/aarch64/pr63304_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr63304_1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr63304_1.c (.../branches/gcc-7-branch) +@@ -1,5 +1,5 @@ + /* { dg-do assemble } */ +-/* { dg-options "-O1 --save-temps -mno-fix-cortex-a53-843419" } */ ++/* { dg-options "-O1 --save-temps" } */ + #pragma GCC push_options + #pragma GCC target ("+nothing+simd, cmodel=small") + +Index: gcc/testsuite/gcc.target/aarch64/pr83370.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr83370.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr83370.c (.../branches/gcc-7-branch) +@@ -0,0 +1,22 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++typedef void (*fun) (void); ++ ++void ++f (fun x1) ++{ ++ register fun x2 asm ("x16"); ++ int arr[5000]; ++ int *volatile ptr = arr; ++ asm ("mov %0, %1" : "=r" (x2) : "r" (x1)); ++ x2 (); ++} ++ ++void g (void) {} ++ ++int ++main (void) ++{ ++ f (g); ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c (.../branches/gcc-7-branch) +@@ -12,7 +12,7 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../branches/gcc-7-branch) +@@ -11,9 +11,8 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-options "-mavx512f -O2" } */ +-/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2sdq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2sdq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + + #include + +Index: gcc/testsuite/gcc.target/i386/pr85193.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr85193.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr85193.c (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Wno-psabi -O2 -fno-tree-ccp -fno-tree-fre -mno-sse" } */ ++ ++typedef unsigned char U __attribute__((vector_size(16))); ++typedef unsigned int V __attribute__((vector_size(16))); ++typedef unsigned long long W __attribute__((vector_size(16))); ++ ++extern void bar(U, U); ++ ++V v; ++ ++void ++foo(U f) ++{ ++ f[0] = f[0] << (unsigned char)~v[0] | f[~((W)(U){0, 0, 0, 0, 0, 0, 0, 0, 5})[1] & 5] >> (-(unsigned char)~v[0] & 7); ++ bar(f, (U){}); ++} +Index: gcc/testsuite/gcc.target/i386/ret-thunk-10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c (.../branches/gcc-7-branch) +@@ -15,9 +15,6 @@ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-times {\tpause} 2 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c (.../branches/gcc-7-branch) +@@ -9,8 +9,10 @@ + bar (); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/pr85095-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr85095-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr85095-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,54 @@ ++/* PR target/85095 * ++/* { dg-do compile } */ ++/* { dg-options "-O2 -masm=att" } */ ++ ++unsigned int ++f1 (unsigned int a, unsigned int b) ++{ ++ unsigned int i = __builtin_add_overflow (a, b, &a); ++ return a + i; ++} ++ ++unsigned int ++f2 (unsigned int a, unsigned int b) ++{ ++ unsigned int i = __builtin_add_overflow (a, b, &a); ++ return a - i; ++} ++ ++#ifdef __x86_64__ ++unsigned long long ++f3 (unsigned long long a, unsigned long long b) ++{ ++ unsigned long long i = __builtin_add_overflow (a, b, &a); ++ return a + i; ++} ++ ++unsigned long long ++f4 (unsigned long long a, unsigned long long b) ++{ ++ unsigned long long i = __builtin_add_overflow (a, b, &a); ++ return a - i; ++} ++ ++unsigned long long ++f5 (unsigned int a, unsigned int b) ++{ ++ unsigned int i = __builtin_add_overflow (a, b, &a); ++ return a + i; ++} ++ ++unsigned long long ++f6 (unsigned int a, unsigned int b) ++{ ++ unsigned int i = __builtin_add_overflow (a, b, &a); ++ return a - i; ++} ++#endif ++ ++/* { dg-final { scan-assembler-times "adcl\t\\\$0," 1 { target ia32 } } } */ ++/* { dg-final { scan-assembler-times "sbbl\t\\\$0," 1 { target ia32 } } } */ ++/* { dg-final { scan-assembler-times "adcl\t\\\$0," 2 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "sbbl\t\\\$0," 2 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "adcq\t\\\$0," 1 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "sbbq\t\\\$0," 1 { target { ! ia32 } } } } */ +Index: gcc/testsuite/gcc.target/i386/pr85034.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr85034.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr85034.c (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++/* PR inline-asm/85034 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++void ++foo (void) ++{ ++ volatile float a; ++ struct S { char a; } b = { 0 }; ++ asm volatile ("" : "=r" (a) : "0ir" (b)); ++} +Index: gcc/testsuite/gcc.target/i386/pr82795.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr82795.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr82795.c (.../branches/gcc-7-branch) +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mavx2" } */ ++ ++void ++sj (int qh, int rn, int *by) ++{ ++ for (;;) ++ if (qh != 0) ++ { ++ int dc; ++ ++ for (dc = 0; dc < 17; ++dc) ++ { ++ int nn; ++ ++ nn = (rn != 0) ? qh : dc; ++ if (nn != 0) ++ qh = nn; ++ else ++ qh = (qh != 0) ? *by : dc; ++ } ++ } ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c (.../branches/gcc-7-branch) +@@ -12,9 +12,8 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-25.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-25.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-25.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* PR target/r84530 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -mfunction-return=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++ ++struct s { _Complex unsigned short x; }; ++struct s gs = { 100 + 200i }; ++struct s __attribute__((noinline)) foo (void) { return gs; } ++ ++/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ ++/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_bnd_ecx" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../branches/gcc-7-branch) +@@ -13,12 +13,9 @@ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk:" } } */ +-/* { dg-final { scan-assembler-times {\tpause} 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times {\tlfence} 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times {\tpause} 2 { target { x32 } } } } */ +-/* { dg-final { scan-assembler-times {\tlfence} 2 { target { x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "__x86_return_thunk:" } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler-times {\tpause} 2 } } */ ++/* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c (.../branches/gcc-7-branch) +@@ -0,0 +1,50 @@ ++/* PR target/84786 */ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-options "-mavx512f -mno-avx512vl -O2" } */ ++ ++#include ++ ++__m512i v; ++__m128i w; ++ ++__m128i ++foo (__m128i x, int y) ++{ ++ __m128i z; ++#define A(n) register __m512i zmm##n __asm ("zmm" #n); ++#define B A(1) A(2) A(3) A(4) A(5) A(6) A(7) \ ++ A(8) A(9) A(10) A(11) A(12) A(13) A(14) ++ B ++#undef A ++#define A(n) asm volatile ("" : "=v" (zmm##n) : "0" (v)); ++ B ++ asm volatile ("" : "=x" (z) : "0" (w)); ++ x = _mm_srli_epi16 (x, y); ++ asm volatile ("" : : "x" (z)); ++#undef A ++#define A(n) asm volatile ("" : : "v" (zmm##n)); ++ B ++ return x; ++} ++ ++__m256i ++bar (__m256i x, int y) ++{ ++ __m128i z; ++#undef A ++#define A(n) register __m512i zmm##n __asm ("zmm" #n); ++ B ++#undef A ++#define A(n) asm volatile ("" : "=v" (zmm##n) : "0" (v)); ++ B ++ asm volatile ("" : "=x" (z) : "0" (w)); ++ x = _mm256_slli_epi16 (x, y); ++ asm volatile ("" : : "x" (z)); ++#undef A ++#define A(n) asm volatile ("" : : "v" (zmm##n)); ++ B ++ return x; ++} ++ ++/* { dg-final { scan-assembler-not "vpsrlw\[\^\n\r]*xmm(1\[6-9]|\[23]\[0-9])" } } */ ++/* { dg-final { scan-assembler-not "vpsllw\[\^\n\r]*xmm(1\[6-9]|\[23]\[0-9])" } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c (.../branches/gcc-7-branch) +@@ -40,18 +40,14 @@ + res3.a[i] = DEFAULT_VALUE; + } + +-#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_permutex_epi64) (src1.x, IMM_MASK); +-#endif + res2.x = INTRINSIC (_maskz_permutex_epi64) (mask, src1.x, IMM_MASK); + res3.x = INTRINSIC (_mask_permutex_epi64) (res3.x, mask, src1.x, IMM_MASK); + + CALC (src1.a, IMM_MASK, res_ref); + +-#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); +-#endif + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) +Index: gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* PR target/84524 */ ++/* { dg-do run { target avx512bw } } */ ++/* { dg-options "-O3 -mavx512bw" } */ ++ ++#include "avx512bw-check.h" ++ ++#define main() do_main() ++#include "../../gcc.c-torture/execute/pr84524.c" ++ ++static void ++avx512bw_test (void) ++{ ++ do_main (); ++} +Index: gcc/testsuite/gcc.target/i386/pr84310-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr84310-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr84310-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -malign-loops=16" } */ ++/* { dg-warning "is obsolete" "" { target *-*-* } 0 } */ ++ ++void ++c (void) ++{ ++ for (;;) ++ ; ++} +Index: gcc/testsuite/gcc.target/i386/pr84625.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr84625.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr84625.c (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++/* PR inline-asm/84625 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -msse2" } */ ++ ++typedef int V __attribute__((vector_size (16))); ++ ++void ++foo (void) ++{ ++ asm volatile ("# %0" : : "X" ((V) { 1, 2, 3, 4 })); // { dg-error "invalid vector immediate" } ++ asm volatile ("# %0" : : "" ((V) { 2, 3, 4, 5 })); // { dg-error "invalid vector immediate" } ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c (.../branches/gcc-7-branch) +@@ -12,7 +12,7 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c (.../branches/gcc-7-branch) +@@ -11,9 +11,8 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c (.../branches/gcc-7-branch) +@@ -15,9 +15,6 @@ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c (.../branches/gcc-7-branch) +@@ -10,8 +10,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: gcc/testsuite/gcc.target/i386/pr84829.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr84829.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr84829.c (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++/* { dg-do link } */ ++/* { dg-options "-mieee-fp" } */ ++ ++int main() ++{ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c (.../branches/gcc-7-branch) +@@ -14,10 +14,9 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ + /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-26.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-26.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-26.c (.../branches/gcc-7-branch) +@@ -0,0 +1,40 @@ ++/* PR target/r84530 */ ++/* { dg-do run } */ ++/* { dg-options "-Os -mfunction-return=thunk" } */ ++ ++struct S { int i; }; ++__attribute__((const, noinline, noclone)) ++struct S foo (int x) ++{ ++ struct S s; ++ s.i = x; ++ return s; ++} ++ ++int a[2048], b[2048], c[2048], d[2048]; ++struct S e[2048]; ++ ++__attribute__((noinline, noclone)) void ++bar (void) ++{ ++ int i; ++ for (i = 0; i < 1024; i++) ++ { ++ e[i] = foo (i); ++ a[i+2] = a[i] + a[i+1]; ++ b[10] = b[10] + i; ++ c[i] = c[2047 - i]; ++ d[i] = d[i + 1]; ++ } ++} ++ ++int ++main () ++{ ++ int i; ++ bar (); ++ for (i = 0; i < 1024; i++) ++ if (e[i].i != i) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c (.../branches/gcc-7-branch) +@@ -9,7 +9,8 @@ + bar (); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c (.../branches/gcc-7-branch) +@@ -12,9 +12,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c (.../branches/gcc-7-branch) +@@ -15,8 +15,6 @@ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c (.../branches/gcc-7-branch) +@@ -35,9 +35,8 @@ + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mavx512vl -O2" } */ ++/* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\](?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ + +@@ -11,6 +12,7 @@ + void extern + avx512vl_test (void) + { ++ x = _mm256_permutexvar_epi32 (x, x); + x = _mm256_maskz_permutexvar_epi32 (m, x, x); + x = _mm256_mask_permutexvar_epi32 (x, m, x, x); + } +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c (.../branches/gcc-7-branch) +@@ -13,10 +13,9 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ + /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mavx512vl -O2" } */ ++/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\](?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ + +@@ -11,6 +12,7 @@ + void extern + avx512vl_test (void) + { ++ x = _mm256_permutex_epi64 (x, 13); + x = _mm256_mask_permutex_epi64 (x, m, x, 13); + x = _mm256_maskz_permutex_epi64 (m, x, 13); + } +Index: gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c (.../branches/gcc-7-branch) +@@ -41,18 +41,14 @@ + res3.a[i] = DEFAULT_VALUE; + } + +-#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_permutexvar_epi64) (src1.x, src2.x); +-#endif + res2.x = INTRINSIC (_maskz_permutexvar_epi64) (mask, src1.x, src2.x); + res3.x = INTRINSIC (_mask_permutexvar_epi64) (res3.x, mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + +-#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); +-#endif + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c (.../branches/gcc-7-branch) +@@ -10,7 +10,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c (.../branches/gcc-7-branch) +@@ -12,9 +12,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c (.../branches/gcc-7-branch) +@@ -14,9 +14,8 @@ + /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-times {\tpause} 2 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ + /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */ + /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/i386.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/i386.exp (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/i386.exp (.../branches/gcc-7-branch) +@@ -241,18 +241,6 @@ + } "-mrtm" ] + } + +-# Return 1 if avx512f instructions can be compiled. +-proc check_effective_target_avx512f { } { +- return [check_no_compiler_messages avx512f object { +- typedef long long __v8di __attribute__ ((__vector_size__ (64))); +- __v8di +- mm512_and_epi64 (__v8di __X, __v8di __Y) +- { +- return __builtin_ia32_pandq512_mask (__X, __Y, __X, -1); +- } +- } "-mavx512f" ] +-} +- + # Return 1 if avx512vl instructions can be compiled. + proc check_effective_target_avx512vl { } { + return [check_no_compiler_messages avx512vl object { +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../branches/gcc-7-branch) +@@ -14,9 +14,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c (.../branches/gcc-7-branch) +@@ -41,18 +41,14 @@ + res3.a[i] = DEFAULT_VALUE; + } + +-#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_permutexvar_epi32) (src1.x, src2.x); +-#endif + res2.x = INTRINSIC (_maskz_permutexvar_epi32) (mask, src1.x, src2.x); + res3.x = INTRINSIC (_mask_permutexvar_epi32) (res3.x, mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + +-#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); +-#endif + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) +Index: gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-options "-mavx512f -O2" } */ +-/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2ssq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2ssq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + + #include + +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../branches/gcc-7-branch) +@@ -11,9 +11,8 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c (.../branches/gcc-7-branch) +@@ -35,8 +35,8 @@ + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c (.../branches/gcc-7-branch) +@@ -9,8 +9,10 @@ + bar (); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c (.../branches/gcc-7-branch) +@@ -10,9 +10,9 @@ + dispatch (buf); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ +-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "bnd ret" } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../branches/gcc-7-branch) +@@ -16,7 +16,6 @@ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c (.../branches/gcc-7-branch) +@@ -13,9 +13,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c (.../branches/gcc-7-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mavx512vl -O2" } */ ++/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\](?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ + +@@ -11,6 +12,7 @@ + void extern + avx512vl_test (void) + { ++ x = _mm256_permutexvar_epi64 (x, x); + x = _mm256_maskz_permutexvar_epi64 (m, x, x); + x = _mm256_mask_permutexvar_epi64 (x, m, x, x); + } +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c (.../branches/gcc-7-branch) +@@ -11,9 +11,8 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/pr87928.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr87928.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr87928.c (.../branches/gcc-7-branch) +@@ -0,0 +1,23 @@ ++/* { dg-do compile { target lp64 } } */ ++/* { dg-options "-O1 -mstackrealign -mabi=ms" } */ ++ ++struct foo ++{ ++ int a; ++ int b; ++ int c; ++ int d; ++}; ++ ++__attribute__ ((sysv_abi)) ++struct foo bar (void) ++{ ++ struct foo retval; ++ ++ retval.a = 1; ++ retval.b = 2; ++ retval.c = 3; ++ retval.d = 4; ++ ++ return retval; ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c (.../branches/gcc-7-branch) +@@ -10,9 +10,13 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 { target x32 } } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ ++/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/pr87550.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr87550.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr87550.c (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* PR target/87550 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++#include ++ ++int ++foo (int x) ++{ ++ return __rdtsc () + __rdtsc (); ++} ++ ++/* { dg-final { scan-assembler-times "\trdtsc\[\n\r]" 2 } } */ ++ ++int ++bar (int x) ++{ ++ return __rdpmc (0) + __rdpmc (0); ++} ++ ++/* { dg-final { scan-assembler-times "\trdpmc\[\n\r]" 2 } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-22.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-22.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-22.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* PR target/r84530 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -mfunction-return=thunk" } */ ++ ++struct s { _Complex unsigned short x; }; ++struct s gs = { 100 + 200i }; ++struct s __attribute__((noinline)) foo (void) { return gs; } ++ ++/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ ++/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c (.../branches/gcc-7-branch) +@@ -11,10 +11,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */ +-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ +-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */ + /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "bnd ret" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../branches/gcc-7-branch) +@@ -16,7 +16,6 @@ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ +-/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c (.../branches/gcc-7-branch) +@@ -11,7 +11,7 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c (.../branches/gcc-7-branch) +@@ -36,9 +36,8 @@ + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c (.../branches/gcc-7-branch) +@@ -6,11 +6,11 @@ + + #include "avx512f-helper.h" + +-#define SIZE (AVX512F_LEN / 32) ++#define SIZE (AVX512F_LEN / 64) + #include "avx512f-mask-type.h" + + static void +-CALC (float *i1, float *r) ++CALC (double *i1, double *r) + { + int i; + +@@ -24,14 +24,14 @@ + void + TEST (void) + { +- float ck[SIZE]; ++ double ck[SIZE]; + int i; +- UNION_TYPE (AVX512F_LEN, ) s, d, dm; ++ UNION_TYPE (AVX512F_LEN, d) s, d, dm; + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { +- s.a[i] = i * ((i & 1) ? 3.5f : -7.5f); ++ s.a[i] = i * ((i & 1) ? 3.5 : -7.5); + d.a[i] = DEFAULT_VALUE; + dm.a[i] = DEFAULT_VALUE; + } +@@ -38,13 +38,13 @@ + + CALC (s.a, ck); + +- d.x = INTRINSIC (_abs_ps) (s.x); +- dm.x = INTRINSIC (_mask_abs_ps) (dm.x, mask, s.x); ++ d.x = INTRINSIC (_abs_pd) (s.x); ++ dm.x = INTRINSIC (_mask_abs_pd) (dm.x, mask, s.x); + +- if (UNION_CHECK (AVX512F_LEN, ) (d, ck)) ++ if (UNION_CHECK (AVX512F_LEN, d) (d, ck)) + abort (); + +- MASK_MERGE () (ck, mask, SIZE); +- if (UNION_CHECK (AVX512F_LEN, ) (dm, ck)) ++ MASK_MERGE (d) (ck, mask, SIZE); ++ if (UNION_CHECK (AVX512F_LEN, d) (dm, ck)) + abort (); + } +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c (.../branches/gcc-7-branch) +@@ -12,9 +12,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/pr84310.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr84310.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr84310.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -falign-functions=100000" } */ ++/* { dg-error "is not between 0 and 65536" "" { target *-*-* } 0 } */ ++ ++void ++test_func (void) ++{ ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c (.../branches/gcc-7-branch) +@@ -35,9 +35,8 @@ + } + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-23.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-23.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-23.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* PR target/r84530 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -mfunction-return=thunk-extern" } */ ++ ++struct s { _Complex unsigned short x; }; ++struct s gs = { 100 + 200i }; ++struct s __attribute__((noinline)) foo (void) { return gs; } ++ ++/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ ++/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {\tpause} } } */ ++/* { dg-final { scan-assembler-not {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c (.../branches/gcc-7-branch) +@@ -10,8 +10,9 @@ + bar (buf); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ +-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */ ++/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "bnd ret" } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++/* PR target/84786 */ ++/* { dg-do run { target { ! ia32 } } } */ ++/* { dg-options "-mavx512f -mno-avx512vl -O2" } */ ++/* { dg-require-effective-target avx512f } */ ++ ++#include "avx512f-check.h" ++ ++typedef double V __attribute__((vector_size (16))); ++ ++__attribute__((noinline, noclone)) V ++foo (V x, double y) ++{ ++ register double z __asm ("xmm18"); ++ asm volatile ("" : "=v" (z) : "0" (y)); ++ x[1] = z; ++ return x; ++} ++ ++static void ++avx512f_test (void) ++{ ++ V a = foo ((V) { 1.0, 2.0 }, 3.0); ++ if (a[0] != 1.0 || a[1] != 3.0) ++ abort (); ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c (.../branches/gcc-7-branch) +@@ -11,7 +11,7 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/pr87065.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr87065.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr87065.c (.../branches/gcc-7-branch) +@@ -0,0 +1,22 @@ ++/* PR rtl-optimization/87065 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mxop -mprefer-avx128" } */ ++ ++int a, c, d, e; ++short *b; ++ ++void ++foo (void) ++{ ++ short *g = b; ++ int h = 1; ++ unsigned i; ++ for (; h <= 1; h++) ++ g = (short *) &c; ++ for (; c; c++) ++ { ++ for (; i <= 1; i++) ++ ; ++ a ^= (a > 0 <= i) + ((e += d) == 0 ?: (*g = 8)); ++ } ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c (.../branches/gcc-7-branch) +@@ -12,9 +12,7 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: gcc/testsuite/gcc.target/i386/pr85095-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr85095-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr85095-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,33 @@ ++/* PR target/85095 * ++/* { dg-do compile } */ ++/* { dg-options "-O2 -masm=att" } */ ++ ++unsigned int ++foo (unsigned int a, unsigned int b) ++{ ++ a += b; ++ if (a < b) a++; ++ return a; ++} ++ ++#ifdef __x86_64__ ++unsigned long long ++bar (unsigned long long a, unsigned long long b) ++{ ++ a += b; ++ if (a < b) a++; ++ return a; ++} ++ ++unsigned long long ++baz (unsigned int a, unsigned int b) ++{ ++ a += b; ++ if (a < b) a++; ++ return a; ++} ++#endif ++ ++/* { dg-final { scan-assembler-times "adcl\t\\\$0," 1 { target ia32 } } } */ ++/* { dg-final { scan-assembler-times "adcl\t\\\$0," 2 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "adcq\t\\\$0," 1 { target { ! ia32 } } } } */ +Index: gcc/testsuite/gcc.target/i386/pr87370.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr87370.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr87370.c (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-options "-O2" } */ ++ ++struct A ++{ ++ int b[4]; ++}; ++struct B ++{ ++ char a[12]; ++ int b; ++}; ++struct C ++{ ++ char a[16]; ++}; ++ ++struct A ++f1 (void) ++{ ++ struct A x = {}; ++ return x; ++} ++ ++struct B ++f2 (void) ++{ ++ struct B x = {}; ++ return x; ++} ++ ++struct C ++f3 (void) ++{ ++ struct C x = {}; ++ return x; ++} ++ ++/* { dg-final { scan-assembler-not "xmm" } } */ +Index: gcc/testsuite/gcc.target/i386/pr84827.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr84827.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr84827.c (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* PR target/84827 */ ++/* { dg-do compile } */ ++/* { dg-options "-Ofast -fno-fp-int-builtin-inexact -ftrapping-math -fno-associative-math -mfpmath=387" } */ ++ ++double ++f1 (double a) ++{ ++ return __builtin_round (a); ++} ++ ++float ++f2 (float a) ++{ ++ return __builtin_roundf (a); ++} ++ ++long double ++f3 (long double a) ++{ ++ return __builtin_roundl (a); ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c (.../branches/gcc-7-branch) +@@ -14,9 +14,8 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/pr86627.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr86627.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr86627.c (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++/* PR middle-end/86627 */ ++/* { dg-do compile { target int128 } } */ ++/* { dg-options "-O2" } */ ++/* { dg-final { scan-assembler-not "call\[^\n\r]*__divti3" } } */ ++ ++__int128_t ++f1 (__int128_t a) ++{ ++ return a / 2; ++} ++ ++__int128_t ++f2 (__int128_t a) ++{ ++ return a / -2; ++} ++ ++__int128_t ++f3 (__int128_t a) ++{ ++ return a / 0x4000000000000000LL; ++} ++ ++__int128_t ++f4 (__int128_t a) ++{ ++ return a / -0x4000000000000000LL; ++} +Index: gcc/testsuite/gcc.target/i386/ret-thunk-24.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-24.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-24.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* PR target/r84530 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -mfunction-return=thunk-inline" } */ ++ ++struct s { _Complex unsigned short x; }; ++struct s gs = { 100 + 200i }; ++struct s __attribute__((noinline)) foo (void) { return gs; } ++ ++/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ ++/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {\tpause} } } */ ++/* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c (.../branches/gcc-7-branch) +@@ -11,10 +11,9 @@ + return 0; + } + +-/* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */ +-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk" } } */ +-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 2 } } */ ++/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 1 } } */ + /* { dg-final { scan-assembler "bnd ret" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++/* PR target/84786 */ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-options "-mavx512f -mno-avx512vl -O2" } */ ++ ++typedef double V __attribute__((vector_size (16))); ++ ++__attribute__((noinline, noclone)) V ++foo (V x, double y) ++{ ++ register double z __asm ("xmm18"); ++ asm volatile ("" : "=v" (z) : "0" (y)); ++ x[1] = z; ++ return x; ++} ++ ++/* { dg-final { scan-assembler-not "vunpcklpd\[\^\n\r]*xmm(1\[6-9]|\[23]\[0-9])" } } */ +Index: gcc/testsuite/lib/prune.exp +=================================================================== +--- a/src/gcc/testsuite/lib/prune.exp (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/lib/prune.exp (.../branches/gcc-7-branch) +@@ -28,7 +28,7 @@ + + #send_user "Before:$text\n" + +- regsub -all "(^|\n)(\[^\n\]*: )?In ((static member |lambda )?function|member|method|(copy )?constructor|destructor|instantiation|substitution|program|subroutine|block-data)\[^\n\]*" $text "" text ++ regsub -all "(^|\n)(\[^\n\]*: \[iI\]|I)n ((static member |lambda )?function|member|method|(copy )?constructor|destructor|instantiation|substitution|program|subroutine|block-data)\[^\n\]*" $text "" text + regsub -all "(^|\n)\[^\n\]*(: )?At (top level|global scope):\[^\n\]*" $text "" text + regsub -all "(^|\n)\[^\n\]*: (recursively )?required \[^\n\]*" $text "" text + regsub -all "(^|\n)\[^\n\]*: . skipping \[0-9\]* instantiation contexts \[^\n\]*" $text "" text +Index: gcc/testsuite/lib/target-supports.exp +=================================================================== +--- a/src/gcc/testsuite/lib/target-supports.exp (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/lib/target-supports.exp (.../branches/gcc-7-branch) +@@ -5940,7 +5940,8 @@ + verbose "check_effective_target_vect_load_lanes: using cached result" 2 + } else { + set et_vect_load_lanes 0 +- if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) ++ # We don't support load_lanes correctly on big-endian arm. ++ if { ([check_effective_target_arm_little_endian] && [check_effective_target_arm_neon_ok]) + || [istarget aarch64*-*-*] } { + set et_vect_load_lanes 1 + } +@@ -7348,11 +7349,22 @@ + proc check_effective_target_avx512f { } { + return [check_no_compiler_messages avx512f object { + typedef double __m512d __attribute__ ((__vector_size__ (64))); ++ typedef double __m128d __attribute__ ((__vector_size__ (16))); + + __m512d _mm512_add (__m512d a) + { + return __builtin_ia32_addpd512_mask (a, a, a, 1, 4); + } ++ ++ __m128d _mm128_add (__m128d a) ++ { ++ return __builtin_ia32_addsd_round (a, a, 8); ++ } ++ ++ __m128d _mm128_getmant (__m128d a) ++ { ++ return __builtin_ia32_getmantsd_round (a, a, 0, 8); ++ } + } "-O2 -mavx512f" ] + } + +Index: gcc/testsuite/gfortran.dg/pr71085.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr71085.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr71085.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++! PR 71085 ++! ++! Testcase from PR by Vladimir Fuka ++! ++program pr71085 ++ print *, f() ++contains ++ function f() ++ integer :: f(iargc()*10) ++ end ++end +Index: gcc/testsuite/gfortran.dg/matmul_rank_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/matmul_rank_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/matmul_rank_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! { dg-additional-options "-ffrontend-optimize" } ++! PR 85044 - used to die on allocating a negative amount of memory. ++! Test case by Gerhard Steinmetz. ++program p ++ real :: a(3,3) = 1.0 ++ real :: b(33) ++ b = matmul(a, a) ! { dg-error "Incompatible ranks" } ++end +Index: gcc/testsuite/gfortran.dg/allocate_stat_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_stat_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_stat_2.f90 (.../branches/gcc-7-branch) +@@ -5,6 +5,6 @@ + character(len=30), dimension(2) :: er + integer, dimension (:), allocatable :: a + allocate (a (16), stat = ier) ! { dg-error "must be a scalar INTEGER" } +- allocate (a (14), stat=ier(1),errmsg=er) ! { dg-error "must be a scalar CHARACTER" } ++ allocate (a (14), stat=ier(1),errmsg=er) ! { dg-error "shall be a scalar default CHARACTER" } + end + +Index: gcc/testsuite/gfortran.dg/constant_shape.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/constant_shape.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/constant_shape.f90 (.../branches/gcc-7-branch) +@@ -3,7 +3,8 @@ + ! PR 78392: ICE in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5979 + ! + ! Contributed by Janus Weil +- ++! Error message update with patch for PR fortran/83633 ++! + module mytypes + implicit none + contains +@@ -15,6 +16,6 @@ + program test + use mytypes + implicit none +- integer, dimension(get_i()) :: x ! { dg-error "must have constant shape" } +- print *, size (x) ++ integer, dimension(get_i()) :: x ! { dg-error "array with nonconstant bounds" } ++ print *, size (x) ! { dg-error "has no IMPLICIT type" } + end +Index: gcc/testsuite/gfortran.dg/pr85521_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85521_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85521_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85521 ++program p ++ character(3) :: c = 'abc' ++ character(3) :: z(1) ++ z = [ c(:-1) ] ++ print *, z ++end +Index: gcc/testsuite/gfortran.dg/pr85543.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85543 ++program p ++ procedure(), pointer :: z ++contains ++ real(z()) function f() ! { dg-error "in initialization expression at" } ++ end ++end +Index: gcc/testsuite/gfortran.dg/pr84117.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr84117.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr84117.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! PR tree-optimization/84117 ++! { dg-do compile } ++! { dg-options "-O3 -ftrapv" } ++ FUNCTION pw_integral_aa ( cc ) RESULT ( integral_value ) ++ COMPLEX(KIND=8), DIMENSION(:), POINTER :: cc ++ integral_value = accurate_sum ( CONJG ( cc (:) ) * cc (:) ) ++ END FUNCTION pw_integral_aa +Index: gcc/testsuite/gfortran.dg/gomp/pr83977.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/gomp/pr83977.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/gomp/pr83977.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++! PR middle-end/83977 ++! { dg-do compile } ++ ++integer function foo (a, b) ++ integer :: a, b ++!$omp declare simd uniform(b) linear(ref(a):b) ++ a = a + 1 ++! This function can't be called from simd loops, ++! because it violates declare simd restrictions. ++! We shouldn't ICE on it though, nor attempt to generate ++! simd clones for the *omp_fn* functions. ++!$omp parallel ++ call sub ++!$omp end parallel ++end +Index: gcc/testsuite/gfortran.dg/gomp/pr85313.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/gomp/pr85313.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/gomp/pr85313.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++! PR fortran/85313 ++! { dg-do compile } ++ ++!$omp do collapse(3) ++ do i = 1, 10 ++ do j = i, 20 ! { dg-error "form rectangular iteration space" } ++ do k = 1, 2 ++ end do ++ end do ++ end do ++!$omp do collapse(3) ++ do i = 1, 10 ++ do j = 1, 5 ++ do k = i, 20 ! { dg-error "form rectangular iteration space" } ++ end do ++ end do ++ end do ++!$omp do collapse(3) ++ do i = 1, 10 ++ do j = 1, 5 ++ do k = j, 20 ! { dg-error "form rectangular iteration space" } ++ end do ++ end do ++ end do ++end +Index: gcc/testsuite/gfortran.dg/gomp/pr84116.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/gomp/pr84116.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/gomp/pr84116.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++! PR fortran/84116 ++! { dg-do compile } ++ ++program pr84116 ++ integer :: i, j ++ !$omp simd linear ((i)) ! { dg-error "Syntax error" } ++ do i = 1, 2 ++ end do ++ !$omp simd linear () ! { dg-error "Syntax error" } ++ do j = 1, 2 ++ end do ++end +Index: gcc/testsuite/gfortran.dg/20181025-1.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/20181025-1.f (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/20181025-1.f (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++! { dg-do compile } ++! { dg-options "-Ofast" } ++! { dg-additional-options "-mavx2" { target { x86_64-*-* i?86-*-* } } } ++ SUBROUTINE FOO(EF3,CA,ZA,NATA,IC4,NFRGPT) ++ IMPLICIT DOUBLE PRECISION (A-H,O-Z) ++ PARAMETER (MXATM=500) ++ COMMON DE(3,MXATM) ++ DIMENSION CA(3,NATA) ++ DIMENSION ZA(NATA) ++ DIMENSION EF3(3,NFRGPT) ++ DO II = 1,NATA ++ XII = XJ - CA(1,II) ++ YII = YJ - CA(2,II) ++ ZII = ZJ - CA(3,II) ++ RJII = SQRT(XII*XII + YII*YII + ZII*ZII) ++ R3 = RJII*RJII*RJII ++ IF (IC4.EQ.0) THEN ++ DE(1,II) = DE(1,II) - S2*ZA(II)*XII/R3 ++ DE(2,II) = DE(2,II) - S2*ZA(II)*YII/R3 ++ DE(3,II) = DE(3,II) - S2*ZA(II)*ZII/R3 ++ ELSE ++ EF3(1,IC4+II) = EF3(1,IC4+II) - S2*ZA(II)*XII/R3 ++ EF3(2,IC4+II) = EF3(2,IC4+II) - S2*ZA(II)*YII/R3 ++ EF3(3,IC4+II) = EF3(3,IC4+II) - S2*ZA(II)*ZII/R3 ++ END IF ++ END DO ++ RETURN ++ END +Index: gcc/testsuite/gfortran.dg/pr86059.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr86059.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr86059.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/86059 ++program foo ++ integer :: i(2) = [ null(), 1 ] ! { dg-error "cannot appear in an array constructor" } ++ integer :: j(2) = [ (null(), n = 1, 2) ] ! { dg-error "cannot appear in an array constructor" } ++ integer k(2) ++ k = 42 + [1, null()] ! { dg-error "cannot appear in an array constructor" } ++end program foo +Index: gcc/testsuite/gfortran.dg/pr85687.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85687.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85687.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85687 ++! Code original contributed by Gerhard Steinmetz gscfq at t-oline dot de ++program p ++ type t ++ end type ++ print *, rank(t) ! { dg-error "must be a data object" } ++end +Index: gcc/testsuite/gfortran.dg/pr85779_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85779_3.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85779_3.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/85779 ++class(t) function f() ! { dg-error "must be dummy, allocatable or pointer" } ++ type f ! { dg-error "already has a basic type" } ++ end type ! { dg-error "END FUNCTION statement" } ++end ++ +Index: gcc/testsuite/gfortran.dg/pr83149_a.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149_a.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149_a.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! Compiled with pr83149_b.f90 ++! ++module mod ++ character(8) string ++contains ++ function get_string() result(s) ++ character(len_trim(string)) s ++ s = string ++ end function ++end module ++ +Index: gcc/testsuite/gfortran.dg/coarray_45.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_45.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_45.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib -lcaf_single " } ++! ++! Test the fix for PR83076 ++! ++module m ++ type t ++ integer, pointer :: z ++ end type ++ type(t) :: ptr ++contains ++ function g(x) ++ type(t) :: x[*] ++ if (associated (x%z, ptr%z)) deallocate (x%z) ! This used to ICE with -fcoarray=lib ++ end ++end module ++ ++ use m ++contains ++ function f(x) ++ type(t) :: x[*] ++ if (associated (x%z, ptr%z)) deallocate (x%z) ++ end ++end +Index: gcc/testsuite/gfortran.dg/goacc/pr84963.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/goacc/pr84963.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/goacc/pr84963.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! PR ipa/84963 ++! { dg-options "-O2" } ++ ++program p ++ print *, sin([1.0, 2.0]) ++ print *, cos([1.0, 2.0]) ++end +Index: gcc/testsuite/gfortran.dg/associate_33.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/associate_33.f03 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/associate_33.f03 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do run } ++! ++! Test the fix for PR83898.f90 ++! ++! Contributed by G Steinmetz ++! ++program p ++ associate (x => ['1','2']) ++ if (any (x .ne. ['1','2'])) call abort ++ end associate ++end +Index: gcc/testsuite/gfortran.dg/select_type_40.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/select_type_40.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/select_type_40.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! { dg-additional-options "-fdefault-integer-8" } ++! PR 78238 - this used to cause an ICE. ++! Original test cae by Gerhard Steinmetz ++class(*), allocatable :: q ++select type (x => q) ++type is (real) ++end select ++end +Index: gcc/testsuite/gfortran.dg/array_constructor_52.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/array_constructor_52.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_52.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do run } ++! PR 84931 - long array constructors with type conversion were not ++! handled correctly. ++program test ++ implicit none ++ integer, parameter :: n = 2**16 ++ real, dimension(n) :: y ++ integer :: i ++ y = (/ (1, i=1, n) /) ++ if (y(2) /= 1) stop 1 ++end program test +Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03 (.../branches/gcc-7-branch) +@@ -0,0 +1,38 @@ ++! { dg-do run } ++! ++! Test the fix for PR83318. ++! ++! Contributed by Neil Carlson ++! ++type :: any_vector ++ class(*), allocatable :: v(:) ++end type ++type(any_vector) :: x, y ++ ++! This did not work correctly ++ x%v = ['foo','bar'] ++ call foo (x, 1) ++ ++! This was reported as not working correctly but was OK before the above was fixed ++ y = x ++ call foo (y, 2) ++ ++ x%v = [1_4,2_4] ++ call foo (x, 3) ++ ++ y = x ++ call foo (y, 4) ++ ++contains ++ ++ subroutine foo (arg, n) ++ type (any_vector) :: arg ++ integer :: n ++ select type (v => arg%v) ++ type is (character(*)) ++ if (any (v .ne. ["foo","bar"])) stop n ++ type is (integer(4)) ++ if (any (v .ne. [1_4,2_4])) stop n ++ end select ++ end subroutine ++end +Index: gcc/testsuite/gfortran.dg/pr44491.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr44491.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr44491.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++! { dg-do compile } ++! { dg-options "-std=gnu" } ++! PR fortran/44491 ++ character*2 escape /z'1B'/ ! { dg-error "Incompatible types in DATA" } ++ end +Index: gcc/testsuite/gfortran.dg/pr85520.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85520.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85520.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do run } ++! PR fortran/85520 ++! Original code from Gerhard Steinmetz ++program p ++ character(-huge(1)) :: c = ' ' ++ if (len(c) /= 0) stop 1 ++end +Index: gcc/testsuite/gfortran.dg/internal_references_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/internal_references_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/internal_references_1.f90 (.../branches/gcc-7-branch) +@@ -11,7 +11,7 @@ + implicit none + contains + +- subroutine p (i) ! { dg-error "is already defined" } ++ subroutine p (i) ! { dg-error "(1)" } + integer :: i + end subroutine + +@@ -22,11 +22,11 @@ + ! + ! PR25124 - would happily ignore the declaration of foo in the main program. + program test +-real :: foo, x ! { dg-error "explicit interface and must not have attributes declared" } ++real :: foo, x + x = bar () ! This is OK because it is a regular reference. + x = foo () + contains +- function foo () ! { dg-error "explicit interface and must not have attributes declared" } ++ function foo () ! { dg-error "explicit interface from a previous" } + foo = 1.0 + end function foo + function bar () +@@ -33,3 +33,4 @@ + bar = 1.0 + end function bar + end program test ++ +Index: gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 (.../branches/gcc-7-branch) +@@ -5,16 +5,18 @@ + ! + ! Contributed by Joost VandeVondele + ! ++! Error message update with patch for PR fortran/83633 ++! + module foo + integer :: i + end module foo + module bar + use foo +- integer, dimension (i) :: j ! { dg-error "must have constant shape" } ++ integer, dimension (i) :: j ! { dg-error "array with nonconstant bounds" } + character (len = i) :: c1 ! { dg-error "must have constant character length" } + end module bar + program foobar + use foo +- integer, dimension (i) :: k ! { dg-error "must have constant shape" } ++ integer, dimension (i) :: k ! { dg-error "array with nonconstant bounds" } + character (len = i) :: c2 ! { dg-error "must have constant character length" } + end program foobar +Index: gcc/testsuite/gfortran.dg/deallocate_error_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/deallocate_error_4.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/deallocate_error_4.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++! { dg-do compile } ++! PR fortran/82994 ++! Code contributed by Gerhard Steinmetz ++program p ++ type t ++ end type ++ class(t) :: x ! { dg-error "must be dummy, allocatable or pointer" } ++ allocate (x) ! { dg-error "neither a data pointer nor an allocatable" } ++ deallocate (x) ! { dg-error "not a nonprocedure pointer nor an allocatable" } ++end +Index: gcc/testsuite/gfortran.dg/statement_function_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/statement_function_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/statement_function_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++! { dg-do compile } ++! PR fortran/54223 ++subroutine r(d) ++ implicit none ++ integer, optional :: d ++ integer :: h, q ++ q(d) = d + 1 ! statement function statement ++ h = q(d) ++end subroutine r ++ ++subroutine s(x) ++ implicit none ++ integer, optional :: x ++ integer :: g, z ++ g(x) = x + 1 ! statement function statement ++ z = g() ! { dg-error "Missing actual argument" } ++end subroutine s ++ ++subroutine t(a) ++ implicit none ++ integer :: a ++ integer :: f, y ++ f(a) = a + 1 ! statement function statement ++ y = f() ! { dg-error "Missing actual argument" } ++end subroutine t ++! { dg-prune-output " Obsolescent feature" } +Index: gcc/testsuite/gfortran.dg/pr85542.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85542.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85542.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/85542 ++function f(x) ++ character(*), intent(in) :: x ++ character((len((x)))) :: f ++ f = x ++end +Index: gcc/testsuite/gfortran.dg/pr85996.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85996.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85996.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,69 @@ ++! { dg-do compile } ++module strings ++ ++ type string ++ integer :: len = 0, size = 0 ++ character, pointer :: chars(:) => null() ++ end type string ++ ++ interface length ++ module procedure len_s ++ end interface ++ ++ interface char ++ module procedure s_to_c, s_to_slc ++ end interface ++ ++ interface uppercase ++ module procedure uppercase_c ++ end interface ++ ++ interface replace ++ module procedure replace_ccs ++ end interface ++ ++ contains ++ ++ elemental function len_s(s) ++ type(string), intent(in) :: s ++ integer :: len_s ++ end function len_s ++ ++ pure function s_to_c(s) ++ type(string),intent(in) :: s ++ character(length(s)) :: s_to_c ++ end function s_to_c ++ ++ pure function s_to_slc(s,long) ++ type(string),intent(in) :: s ++ integer, intent(in) :: long ++ character(long) :: s_to_slc ++ end function s_to_slc ++ ++ pure function lr_sc_s(s,start,ss) result(l) ++ type(string), intent(in) :: s ++ character(*), intent(in) :: ss ++ integer, intent(in) :: start ++ integer :: l ++ end function lr_sc_s ++ ++ pure function lr_ccc(s,tgt,ss,action) result(l) ++ character(*), intent(in) :: s,tgt,ss,action ++ integer :: l ++ select case(uppercase(action)) ++ case default ++ end select ++ end function lr_ccc ++ ++ function replace_ccs(s,tgt,ss) result(r) ++ character(*), intent(in) :: s,tgt ++ type(string), intent(in) :: ss ++ character(lr_ccc(s,tgt,char(ss),'first')) :: r ++ end function replace_ccs ++ ++ pure function uppercase_c(c) ++ character(*), intent(in) :: c ++ character(len(c)) :: uppercase_c ++ end function uppercase_c ++ ++end module strings +Index: gcc/testsuite/gfortran.dg/pr38351.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr38351.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr38351.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++! { dg-do compile } ++module m1 ++ type t1 ++ integer :: i ++ end type t1 ++ interface operator(+) ++ module procedure add ++ end interface ++ contains ++ type(t1) function add(a,b) ++ type(t1), intent(in) :: a,b ++ end function ++end module m1 ++ ++program foo ++ use m1 ++ type(t1), dimension(2,2) :: a = t1(1), b = t1(2) ++ type(t1) :: c=t1(1), d=t1(2) ++ c = c + d ++ a = a + b ! { dg-error "Unexpected derived-type entities" } ++end program foo +Index: gcc/testsuite/gfortran.dg/shape_9.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/shape_9.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/shape_9.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++! { dg-do run } ++! { dg-require-effective-target lto } ++! { dg-options "-flto" } ++! Check that there are no warnings with LTO for a KIND argument. ++! ++program test ++ implicit none ++ real, allocatable :: x(:,:) ++ ++ allocate(x(2,5)) ++ if (any(shape(x) /= [ 2, 5 ])) call abort ++ if (any(shape(x,kind=1) /= [ 2, 5 ])) call abort ++ if (any(shape(x,kind=2) /= [ 2, 5 ])) call abort ++ if (any(shape(x,kind=4) /= [ 2, 5 ])) call abort ++ if (any(shape(x,kind=8) /= [ 2, 5 ])) call abort ++ end program test +Index: gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,62 @@ ++! { dg-do compile } ++! { dg-options "-fdump-tree-original" } ++! ++! Test the fix for PR87284 in which the indexing in allocate with mold ++! was incorrect for class array initialization and resulted in the valgrind ++! error: ++! "Conditional jump or move depends on uninitialised value(s)" at line 42. ++! ++! Contributed by Andrew Baldwin on clf. ++! ++ MODULE INTS_TYPE_MODULE ++ TYPE, ABSTRACT :: BASE_TYPE ++ END TYPE BASE_TYPE ++ ++ TYPE, EXTENDS (BASE_TYPE) :: INTS_TYPE ++ INTEGER, ALLOCATABLE :: INTS(:) ++ END TYPE INTS_TYPE ++ CONTAINS ++ SUBROUTINE MOLD_ALLOCATE (IT_OBJS, MOLD_OBJ) ++ CLASS (BASE_TYPE), ALLOCATABLE, INTENT (OUT) :: IT_OBJS(:) ++ CLASS (BASE_TYPE), INTENT (IN) :: MOLD_OBJ ++ ++ ALLOCATE (IT_OBJS(2), mold = MOLD_OBJ) ++ ++ RETURN ++ END SUBROUTINE MOLD_ALLOCATE ++ END MODULE INTS_TYPE_MODULE ++ ++ PROGRAM MFE ++ USE INTS_TYPE_MODULE ++ IMPLICIT NONE ++ ++ CLASS (BASE_TYPE), ALLOCATABLE :: IT_OBJS(:) ++ INTEGER :: I ++ TYPE (INTS_TYPE) :: MOLD_OBJ ++ ++ ALLOCATE (INTS_TYPE :: IT_OBJS(2)) ++ ++ SELECT TYPE (IT_OBJS) ++ TYPE IS (INTS_TYPE) ++ ALLOCATE (IT_OBJS(1)%INTS(10)) ++ ++ ALLOCATE (IT_OBJS(2)%INTS(10)) ++ END SELECT ++ ++ ++ DEALLOCATE (IT_OBJS) ++ ++ CALL MOLD_ALLOCATE (IT_OBJS, MOLD_OBJ) ++ ++ IF (ALLOCATED(IT_OBJS)) THEN ++ IF (SIZE(IT_OBJS) .GE. 2) THEN ++ SELECT TYPE (IT_OBJS) ++ TYPE IS (INTS_TYPE) ++ ALLOCATE (IT_OBJS(1)%INTS(10)) ++ ++ ALLOCATE (IT_OBJS(2)%INTS(10)) ++ END SELECT ++ END IF ++ END IF ++ END PROGRAM MFE ++! { dg-final { scan-tree-dump-times "it_objs->_vptr->_size" 1 "original" } } +Index: gcc/testsuite/gfortran.dg/pr85779_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85779_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85779_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/85779 ++type(t) function f() result(z) ! { dg-error "is not accessible" } ++ type z ! { dg-error "already has a basic type" } ++ end type ! { dg-error "END FUNCTION statement" } ++end ++ +Index: gcc/testsuite/gfortran.dg/class_67.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/class_67.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/class_67.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,55 @@ ++! { dg-do run } ++! ++! Test the fix for PR78990 in which the scalarization of the assignment ++! in the main program failed for two reasons: (i) The conversion of 'v1' ++! into a class actual was being done after the call to 'return_t1', giving ++! rise to the ICE reported in comment #1; and (ii) The 'info' descriptor, ++! required for scalarization was not set, which gave rise to the ICE noted ++! by the contributor. ++! ++! Contributed by Chris Macmackin ++! ++module test_type ++ implicit none ++ ++ type t1 ++ integer :: i ++ contains ++ procedure :: assign ++ generic :: assignment(=) => assign ++ end type t1 ++ ++contains ++ ++ elemental subroutine assign(this,rhs) ++ class(t1), intent(inout) :: this ++ class(t1), intent(in) :: rhs ++ this%i = rhs%i ++ end subroutine assign ++ ++ function return_t1(arg) ++ class(t1), dimension(:), intent(in) :: arg ++ class(t1), dimension(:), allocatable :: return_t1 ++ allocate(return_t1(size(arg)), source=arg) ++ end function return_t1 ++ ++ function return_t1_p(arg) ++ class(t1), dimension(:), intent(in), target :: arg ++ class(t1), dimension(:), pointer :: return_t1_p ++ return_t1_p => arg ++ end function return_t1_p ++end module test_type ++ ++program test ++ use test_type ++ implicit none ++ ++ type(t1), dimension(3) :: v1, v2 ++ v1%i = [1,2,3] ++ v2 = return_t1(v1) ++ if (any (v2%i .ne. v1%i)) call abort ++ ++ v1%i = [4,5,6] ++ v2 = return_t1_p(v1) ++ if (any (v2%i .ne. v1%i)) call abort ++end program test +Index: gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! PR fortran/81116 ++! The assignment was broken due to a missing temporary. ++! Original test case by Clive Page. ++ ++program test10 ++ implicit none ++ character(:), allocatable :: string ++ ! ++ string = '1234567890' ++ string = string(1:5) // string(7:) ++ if (string /= '123457890') STOP 1 ++end program test10 +Index: gcc/testsuite/gfortran.dg/inline_matmul_22.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/inline_matmul_22.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/inline_matmul_22.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,44 @@ ++! { dg-do compile } ++! { dg-additional-options "-ffrontend-optimize" } ++! PR 84270 - this used to be rejected. ++! Test case by Michael Weinert ++ ++module fp_precision ++ ++ integer, parameter :: fp = selected_real_kind(13) ++ ++end module fp_precision ++ ++ subroutine lhcal(nrot,orth,ngpts,vgauss,vr_0) ++ ++ use fp_precision ! floating point precision ++ ++ implicit none ++ ++!---> rotation matrices and rotations (input) ++ integer, intent(in) :: nrot ++! real(kind=fp), intent(in) :: orth(3,3,nrot) ! fine at all -O ++ real(kind=fp), intent(in) :: orth(3,3,*) ++ ++!---> gaussian integration points ++ integer, intent(in) :: ngpts ++ real(kind=fp), intent(in) :: vgauss(3,*) ++ ++!---> output results ++ real(kind=fp), intent(out) :: vr_0(3) ++ ++ real(kind=fp) :: v(3),vr(3) ++ integer :: n,nn ++ ++ vr_0 = 0 ++ do nn=1,ngpts ++ v(:) = vgauss(:,nn) ++!---> apply rotations ++ do n=2,nrot ++ vr = matmul( orth(:,:,n), v ) ++ vr_0 = vr_0 + vr ++ enddo ++ enddo ++ ++ return ++ end subroutine lhcal +Index: gcc/testsuite/gfortran.dg/automatic_module_variable.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 (.../branches/gcc-7-branch) +@@ -1,10 +1,12 @@ + ! { dg-do compile } + ! Tests fix for PR15976 + ! ++! Error message update with patch for PR fortran/83633 ++! + module sd + integer, parameter :: n = 20 + integer :: i(n) +- integer :: j(m) ! { dg-error "must have constant shape" } ++ integer :: j(m) ! { dg-error "array with nonconstant bounds" } + integer, pointer :: p(:) + integer, allocatable :: q(:) + contains +Index: gcc/testsuite/gfortran.dg/pr83149_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++! Compiled with pr83149.f90 ++! { dg-do run } ++! { dg-options "-fno-whole-file" } ++! { dg-compile-aux-modules "pr83149.f90" } ++! { dg-additional-sources pr83149.f90 } ++! ++! Contributed by Neil Carlson ++! ++subroutine sub(s) ++ use mod2 ++ real :: s ++ s = sum(get()) ++end ++ ++ use mod1 ++ real :: s ++ ncells = 2 ++ call sub (s) ++ if (int (s) .ne. ncells) stop 1 ++ ncells = 10 ++ call sub (s) ++ if (int (s) .ne. ncells) stop 2 ++end ++ +Index: gcc/testsuite/gfortran.dg/pr65453.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr65453.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr65453.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/65453 ++! Contributed by Tobias Burnus ++procedure() :: foo ! { dg-error "(1)" } ++ contains ++ subroutine foo() ! { dg-error "clashes with procedure" } ++ end ++end +Index: gcc/testsuite/gfortran.dg/proc_ptr_50.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_50.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_50.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,68 @@ ++! { dg-do compile } ++! ++! Test the fix for PR86242, in which the procedure pointer in 'tester' ++! was being copied as if it were an allocatable class component. ++! ++! Contributed by ++! ++module test ++ ++ implicit none ++ ++ private ++ public :: tester ++ ++ type :: wrapper ++ integer(4) :: n ++ end type wrapper ++ ++ type :: output ++ real(8) :: dummy ++ end type output ++ ++ type :: tester ++ class(wrapper), allocatable :: wrap ++ procedure(proc1), pointer :: ptr => null() ++ end type tester ++ ++ abstract interface ++ function proc1(self) result(uc) ++ import :: tester, output ++ class(tester), intent(in) :: self ++ class(output), allocatable :: uc ++ end function proc1 ++ end interface ++ ++end module test ++ ++! Comment #2 from Janus Weil ++module test1 ++ ++ implicit none ++ ++ type :: output ++ end type ++ ++ type :: tester ++ integer, allocatable :: wrap ++ procedure(proc1), pointer, nopass :: ptr ++ end type ++ ++ interface ! Originally abstract ++ function proc1() result(uc) ++ import :: output ++ class(output), allocatable :: uc ! Works if a pointer ++ end function ++ end interface ++ ++! PR82969 from Gerhard Steinmetz ++ type t ++ real, allocatable :: x(:) ++ procedure(f), nopass, pointer :: g ++ end type ++contains ++ function f() result(z) ++ class(t), allocatable :: z ++ end ++ ++end module test1 +Index: gcc/testsuite/gfortran.dg/pr78278.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr78278.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr78278.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! { dg-options "-std=f95" } ++! PR fortran/78278 ++program p ++ character, pointer :: x => null() ++ data x /null()/ ! { dg-error "GNU Extension: re-initialization" } ++ print *, associated(x) ++end ++ ++subroutine foo ++ real :: x = 42 ++ data x /0/ ! { dg-error "GNU Extension: re-initialization" } ++ print *, x ++end subroutine foo +Index: gcc/testsuite/gfortran.dg/init_flag_19.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/init_flag_19.f03 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/init_flag_19.f03 (.../branches/gcc-7-branch) +@@ -0,0 +1,36 @@ ++! { dg-do compile } ++! { dg-options "-finit-derived -finit-local-zero -fdump-tree-original" } ++! ++! Test initializers for BT_CLASS components/variables with -finit-derived. ++! ++ ++implicit none ++ ++type :: ty1 ++ integer :: ival ++ real :: rval ++end type ++ ++type :: ty2 ++ type(ty1) :: bt ++ type(ty1), allocatable :: bt_alloc ++ type(ty1), pointer :: bt_ptr ++ class(ty1), allocatable :: class_alloc ++ class(ty1), pointer :: class_ptr ++end type ++ ++type(ty2) basic ++class(ty1), allocatable :: calloc ++ ++print *, basic%bt%ival ++print *, calloc%ival ++ ++end ++ ++! { dg-final { scan-tree-dump-times "\.ival *= *0" 1 "original" } } ++! { dg-final { scan-tree-dump-times "\.rval *= *0" 1 "original" } } ++! { dg-final { scan-tree-dump-times "\.bt_ptr *= *0" 1 "original" } } ++! { dg-final { scan-tree-dump-times "\.bt_alloc *= *0" 1 "original" } } ++! { dg-final { scan-tree-dump-times "\.class_alloc(?: *= *\{)?\._data *= *0" 1 "original" } } ++! { dg-final { scan-tree-dump-times "\.class_ptr(?: *= *\{)?\._data *= *0" 1 "original" } } ++! { dg-final { scan-tree-dump-times "calloc(?: *= *\{)?\._data *= *0" 1 "original" } } +Index: gcc/testsuite/gfortran.dg/pr67805.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr67805.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr67805.f90 (.../branches/gcc-7-branch) +@@ -22,7 +22,6 @@ + s = [character([1.]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } + s = [character([1d1]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } + s = [character([(0.,1.)]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } +- s = [character([null()]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } + s = [character(null()) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" } + call foo(s) + end subroutine p +Index: gcc/testsuite/gfortran.dg/pr51434.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr51434.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr51434.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++! { dg-do run } ++! PR fortran/51434 ++module foo ++ implicit none ++ integer, parameter :: n = 5 ++ character(len=1), parameter :: s(n) = 'a' ++ type :: a ++ integer :: m = n ++ character(len=1):: t(n) = transfer('abcde ', s) ++ end type a ++end module foo ++ ++program bar ++ use foo ++ implicit none ++ type(a) c ++ if (c%m /= n) stop 1 ++ if (any(c%t /= ['a', 'b', 'c', 'd', 'e'])) stop 2 ++end program bar +Index: gcc/testsuite/gfortran.dg/coarray_8.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_8.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_8.f90 (.../branches/gcc-7-branch) +@@ -145,7 +145,7 @@ + + subroutine tfgh() + integer :: i(2) +- DATA i/(i, i=1,2)/ ! { dg-error "Expected PARAMETER symbol" } ++ DATA i/(i, i=1,2)/ ! { dg-error "Syntax error in DATA" } + do i = 1, 5 ! { dg-error "cannot be an array" } + end do ! { dg-error "Expecting END SUBROUTINE" } + end subroutine tfgh +@@ -153,7 +153,7 @@ + subroutine tfgh2() + integer, save :: x[*] + integer :: i(2) +- DATA i/(x, x=1,2)/ ! { dg-error "Expected PARAMETER symbol" } ++ DATA i/(x, x=1,2)/ ! { dg-error "Syntax error in DATA" } + do x = 1, 5 ! { dg-error "cannot be a coarray" } + end do ! { dg-error "Expecting END SUBROUTINE" } + end subroutine tfgh2 +Index: gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90 (.../branches/gcc-7-branch) +@@ -22,7 +22,7 @@ + deallocate(i)) ! { dg-error "Syntax error in DEALLOCATE" } + deallocate(i, errmsg=err, errmsg=err) ! { dg-error "Redundant ERRMSG" } + deallocate(i, errmsg=err) ! { dg-warning "useless without a STAT" } +- deallocate(i, stat=j, errmsg=x) ! { dg-error "must be a scalar CHARACTER" } ++ deallocate(i, stat=j, errmsg=x) ! { dg-error "shall be a scalar default CHARACTER" } + + deallocate(err) ! { dg-error "nonprocedure pointer nor an allocatable" } + +Index: gcc/testsuite/gfortran.dg/dec_parameter_1.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dec_parameter_1.f (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dec_parameter_1.f (.../branches/gcc-7-branch) +@@ -22,7 +22,6 @@ + two = 2.0d0 + x = two * pi_1 * f_1 * t + y = two * pi_2 * f_2 * t +- z = two * pi_3 * f_3 * t + return + end subroutine + +Index: gcc/testsuite/gfortran.dg/vect/pr86421.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/vect/pr86421.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/vect/pr86421.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++! PR fortran/86421 ++! { dg-require-effective-target vect_simd_clones } ++! { dg-additional-options "-fopenmp-simd" } ++! { dg-additional-options "-mavx" { target avx_runtime } } ++ ++module mod86421 ++ implicit none ++contains ++ subroutine foo(x, y, z) ++ real :: x ++ integer :: y, z ++ !$omp declare simd linear(ref(x)) linear(val(y)) linear(uval(z)) ++ x = x + y ++ z = z + 1 ++ end subroutine ++end module mod86421 ++ ++program pr86421 ++ use mod86421 ++ implicit none ++ integer :: i, j ++ real :: a(64) ++ j = 0 ++ do i = 1, 64 ++ a(i) = i ++ end do ++ !$omp simd ++ do i = 1, 64 ++ call foo (a(i), i, j) ++ end do ++ do i = 1, 64 ++ if (a(i) .ne. (2 * i)) stop 1 ++ end do ++ if (j .ne. 64) stop 2 ++end program pr86421 +Index: gcc/testsuite/gfortran.dg/generic_34.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/generic_34.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/generic_34.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++! { dg-do compile } ++! ++! PR 86116: [6/7/8/9 Regression] Ambiguous generic interface not recognised ++! ++! Contributed by martin ++ ++module mod ++ ++ type :: t ++ end type t ++ ++ interface sub ++ module procedure s1 ++ module procedure s2 ++ end interface ++ ++contains ++ ++ subroutine s1(x) ! { dg-error "Ambiguous interfaces in generic interface" } ++ type(t) :: x ++ end subroutine ++ ++ subroutine s2(x) ! { dg-error "Ambiguous interfaces in generic interface" } ++ class(*), allocatable :: x ++ end subroutine ++ ++end +Index: gcc/testsuite/gfortran.dg/deallocate_error_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/deallocate_error_3.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/deallocate_error_3.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! PR fortran/82994 ++! Code contributed by Gerhard Steinmetz ++program p ++ type t ++ end type ++ class(t) :: x ! { dg-error "must be dummy, allocatable or pointer" } ++ deallocate (x) ! { dg-error "not a nonprocedure pointer nor an allocatable" } ++end +Index: gcc/testsuite/gfortran.dg/statement_function_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/statement_function_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/statement_function_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++! { dg-do compile } ++! PR fortran/84276 ++ subroutine stepns(hh, h, s, w) ++ real, intent(inout) :: h, hh, s ++ real, intent(out) :: w ++ real :: qofs ++ integer i ++ qofs(s) = s ++ w = qofs(hh + h) ++ i = 42 ++ w = qofs(i) ! { dg-error "Type mismatch in argument" } ++ end subroutine stepns ++ ++ subroutine step(hh, h, s, w) ++ real, intent(inout) :: h, hh, s ++ real, intent(out) :: w ++ real :: qofs ++ integer i ++ qofs(s, i) = i * s ++ i = 42 ++ w = qofs(hh, i) ++ w = qofs(i = i, s = hh) ! { dg-error "invalid in a statement function" } ++ end subroutine step ++! { dg-prune-output " Obsolescent feature" } +Index: gcc/testsuite/gfortran.dg/data_substring.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/data_substring.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/data_substring.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++! { dg-do compile } ++! PR fortran/30792 ++character string*1025 ++integer i ++data (string(i:i),i=1,1025)/1025*'?'/ ! { dg-error "Invalid substring" } ++end +Index: gcc/testsuite/gfortran.dg/pr85779_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85779_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85779_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++! { dg-do compile } ++! PR fortran/85779 ++type(t) function f() ! { dg-error "is not accessible" } ++ type f ! { dg-error "already has a basic type" } ++ end type ! { dg-error "END FUNCTION statement" } ++end +Index: gcc/testsuite/gfortran.dg/dec_parameter_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dec_parameter_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dec_parameter_2.f90 (.../branches/gcc-7-branch) +@@ -21,7 +21,6 @@ + two = 2.0d0 + x = two * pi_1 * f_1 * t + y = two * pi_2 * f_2 * t +- z = two * pi_3 * f_3 * t + return + end subroutine + +Index: gcc/testsuite/gfortran.dg/temporary_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/temporary_3.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/temporary_3.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,121 @@ ++! { dg-do run } ++! ++! Tests the fix for PR68846 in which compiler generated temporaries were ++! receiving the attributes of dummy arguments. This test is the original. ++! The simplified versions by Gerhard Steinmetz are gratefully acknowledged. ++! ++! Contributed by Mirco Valentini ++! ++MODULE grid ++ IMPLICIT NONE ++ PRIVATE ++ REAL(KIND=8), DIMENSION(100,100), TARGET :: WORKSPACE ++ TYPE, PUBLIC :: grid_t ++ REAL(KIND=8), DIMENSION(:,:), POINTER :: P => NULL () ++ END TYPE ++ PUBLIC :: INIT ++CONTAINS ++ SUBROUTINE INIT (DAT) ++ IMPLICIT NONE ++ TYPE(grid_t), INTENT(INOUT) :: DAT ++ INTEGER :: I, J ++ DAT%P => WORKSPACE ++ DO I = 1, 100 ++ DO J = 1, 100 ++ DAT%P(I,J) = REAL ((I-1)*100+J-1) ++ END DO ++ ENDDO ++ END SUBROUTINE INIT ++END MODULE grid ++ ++MODULE subgrid ++ USE :: grid, ONLY: grid_t ++ IMPLICIT NONE ++ PRIVATE ++ TYPE, PUBLIC :: subgrid_t ++ INTEGER, DIMENSION(4) :: range ++ CLASS(grid_t), POINTER :: grd => NULL () ++ CONTAINS ++ PROCEDURE, PASS :: INIT => LVALUE_INIT ++ PROCEDURE, PASS :: JMP => LVALUE_JMP ++ END TYPE ++CONTAINS ++ SUBROUTINE LVALUE_INIT (HOBJ, P, D) ++ IMPLICIT NONE ++ CLASS(subgrid_t), INTENT(INOUT) :: HOBJ ++ TYPE(grid_t), POINTER, INTENT(INOUT) :: P ++ INTEGER, DIMENSION(4), INTENT(IN) :: D ++ HOBJ%range = D ++ HOBJ%grd => P ++ END SUBROUTINE LVALUE_INIT ++ ++ FUNCTION LVALUE_JMP(HOBJ, I, J) RESULT(P) ++ IMPLICIT NONE ++ CLASS(subgrid_t), INTENT(INOUT) :: HOBJ ++ INTEGER, INTENT(IN) :: I, J ++ REAL(KIND=8), POINTER :: P ++ P => HOBJ%grd%P(HOBJ%range(1)+I-1, HOBJ%range(3)+J-1) ++ END FUNCTION LVALUE_JMP ++END MODULE subgrid ++ ++MODULE geom ++ IMPLICIT NONE ++CONTAINS ++ SUBROUTINE fillgeom_03( subgrid, value ) ++ USE :: subgrid, ONLY: subgrid_t ++ IMPLICIT NONE ++ TYPE(subgrid_T), intent(inout) :: subgrid ++ REAL(kind=8), intent(in) :: value ++ INTEGER :: I, J ++ DO i = 1, 3 ++ DO J = 1, 4 ++ subgrid%jmp(i,j) = value ! Dummy argument '_F.DA0' with INTENT(IN) ++ ! in pointer association context or ICE ++ ! in trans_decl.c, depending on INTENT of ++ ! 'VALUE' ++ ENDDO ++ ENDDO ++ END SUBROUTINE fillgeom_03 ++END MODULE geom ++ ++PROGRAM test_lvalue ++ USE :: grid ++ USE :: subgrid ++ USE :: geom ++ IMPLICIT NONE ++ TYPE(grid_t), POINTER :: GRD => NULL() ++ TYPE(subgrid_t) :: STENCIL ++ REAL(KIND=8), POINTER :: real_tmp_ptr ++ REAL(KIND=8), DIMENSION(10,10), TARGET :: AA ++ REAL(KIND=8), DIMENSION(3,4) :: VAL ++ INTEGER :: I, J, chksum ++ integer, parameter :: r1 = 50 ++ integer, parameter :: r2 = 52 ++ integer, parameter :: r3 = 50 ++ integer, parameter :: r4 = 53 ++ DO I = 1, 3 ++ DO J = 1, 4 ++ VAL(I,J) = dble(I)*dble(J) ++ ENDDO ++ ENDDO ++ ++ ALLOCATE (GRD) ++ CALL INIT (GRD) ++ chksum = sum([([((i-1)*100 + j -1, j=1,100)], i = 1,100)]) ++ if (int(sum(grd%p)) .ne. chksum) stop 1 ++ ++ CALL STENCIL%INIT (GRD, [r1, r2, r3, r4]) ++ if (.not.associated (stencil%grd, grd)) stop 2 ++ if (int(sum(grd%p)) .ne. chksum) stop 3 ++ ++ CALL fillgeom_03(stencil, 42.0_8) ++ if (any (int (grd%p(r1:r2,r3:r4)) .ne. 42)) stop 4 ++ ++ chksum = chksum - sum([([((i - 1) * 100 + j -1, j=r3,r4)], i = r1,r2)]) & ++ + (r4 - r3 + 1) * (r2 - r1 +1) * 42 ++ if (int(sum(grd%p)) .ne. chksum) stop 5 ++ ++ deallocate (grd) ++END PROGRAM test_lvalue ++ ++ +Index: gcc/testsuite/gfortran.dg/coarray_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_3.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_3.f90 (.../branches/gcc-7-branch) +@@ -13,7 +13,7 @@ + + sync all (stat=1) ! { dg-error "Syntax error in SYNC ALL" } + sync all ( stat = n,stat=k) ! { dg-error "Redundant STAT" } +-sync memory (errmsg=str) ++sync memory (errmsg=str) ! { dg-error "must be a scalar CHARACTER variable" } + sync memory (errmsg=n) ! { dg-error "must be a scalar CHARACTER variable" } + sync images (*, stat=1.0) ! { dg-error "Syntax error in SYNC IMAGES" } + sync images (-1) ! { dg-error "must between 1 and num_images" } +Index: gcc/testsuite/gfortran.dg/pr85895.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85895.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85895.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib" } ++! PR fortran/85895 ++subroutine p ++ character(80) :: c(2) ++ sync memory (errmsg=c) ! { dg-error "scalar CHARACTER variable" } ++end subroutine p ++ ++subroutine q ++ character(80) :: c(2) ++ sync memory (errmsg=c(1:2)) ! { dg-error "scalar CHARACTER variable" } ++end subroutine q ++ ++subroutine r ++ character(80) :: c(2) ++ sync memory (errmsg=c(1)) ++end subroutine r +Index: gcc/testsuite/gfortran.dg/pr85780.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85780.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85780.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy" } ++! PR fortran/85780 ++subroutine s(*) bind(c) ++end +Index: gcc/testsuite/gfortran.dg/pr85138_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85138_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85138_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++! { dg-do compile } ++module fox_m_fsys_format ++ interface len ++ module procedure str_real_dp_len, str_real_dp_fmt_len ++ end interface ++contains ++ pure function str_real_dp_fmt_len(x, fmt) result(n) ++ real, intent(in) :: x ++ character(len=*), intent(in) :: fmt ++ if (.not.checkFmt(fmt)) then ++ endif ++ end function str_real_dp_fmt_len ++ pure function str_real_dp_len(x) result(n) ++ real, intent(in) :: x ++ end function str_real_dp_len ++ pure function str_real_dp_array_len(xa) result(n) ++ real, dimension(:), intent(in) :: xa ++ end function str_real_dp_array_len ++ pure function str_real_dp_array_fmt_len(xa, fmt) result(n) ++ real, dimension(:), intent(in) :: xa ++ character(len=*), intent(in) :: fmt ++ end function str_real_dp_array_fmt_len ++ pure function str_real_dp_fmt(x, fmt) result(s) ++ real, intent(in) :: x ++ character(len=*), intent(in) :: fmt ++ character(len=len(x, fmt)) :: s ++ end function str_real_dp_fmt ++ pure function checkFmt(fmt) result(good) ++ character(len=*), intent(in) :: fmt ++ logical :: good ++ end function checkFmt ++end module fox_m_fsys_format +Index: gcc/testsuite/gfortran.dg/assumed_rank_15.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/assumed_rank_15.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/assumed_rank_15.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-fdec-structure" } ++! ++! PR fortran/83184 ++! ++ ++structure /s/ ++ integer n(..) /1/ ! { dg-error "must have an explicit shape" } ++end structure ++ ++end +Index: gcc/testsuite/gfortran.dg/pr63514.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr63514.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr63514.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,41 @@ ++! { dg-do compile } ++! PR fortran/63514.f90 ++program foo ++ ++ implicit none ++ ++ integer, volatile :: n ++ ++ n = 0 ++ ++ call bar ++ call bah ++ ++ contains ++ ++ subroutine bar ++ integer k ++ integer, volatile :: m ++ block ++ integer, save :: i ++ integer, volatile :: j ++ i = 42 ++ j = 2 * i ++ k = i + j + n ++ end block ++ end subroutine bar ++ ++ pure subroutine bah ++ integer k ++ integer, volatile :: m ! { dg-error "cannot be specified in a PURE" } ++ block ++ integer, save :: i ! { dg-error "cannot be specified in a PURE" } ++ integer, volatile :: j ! { dg-error "cannot be specified in a PURE" } ++ i = 42 ! { dg-error "has no IMPLICIT type" } ++ j = 2 * i ! { dg-error "has no IMPLICIT type" } ++ k = i + j + n ++ end block ++ m = k * m ! { dg-error "has no IMPLICIT type" } ++ end subroutine bah ++ ++end program foo +Index: gcc/testsuite/gfortran.dg/pr83939.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83939.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83939.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++elemental function f() result(s) ! { dg-error "shall not have an ALLOCATABLE or POINTER" } ++ allocatable s ++ allocate(s) ++ s = 3.5 ++end function ++ ++elemental function g() result(s) ! { dg-error "shall not have an ALLOCATABLE or POINTER" } ++ pointer s ++ allocate(s) ++ s = 3.5 ++end function +Index: gcc/testsuite/gfortran.dg/pr70870_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr70870_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr70870_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! PR fortran/70870 ++! Contributed by Vittorio Zecca ++ type t ++ integer :: g=0 ! default initialization ++ end type ++ type(t) :: v2 ++ data v2/t(2)/ ! { dg-error "default initialization shall not" } ++ end +Index: gcc/testsuite/gfortran.dg/select_type_42.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/select_type_42.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/select_type_42.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++! { dg-do run } ++! ++! Tests the fix for PR82275. ++! Associating a name with a reduced-dimension section of a ++! multidimensional array precluded subsequent use of the name ++! with the appropriately reduced dimensionality and instead ++! required use of the (invalid) full set of original dimensions. ++! ++! Contributed by Damian Rouson ++! ++ type component ++ integer :: i ++ end type ++ type container ++ class(component), allocatable :: component_array(:,:) ++ end type ++ type(container) bag ++ type(component) section_copy ++ allocate(bag%component_array, source = reshape ([component(10), component (100)], [1,2])) ++ select type(associate_name=>bag%component_array(1,:)) ++ type is (component) ++ section_copy = associate_name(2) ! gfortran rejected valid ++! section_copy = associate_name(1,1)! gfortran accepted invalid ++ end select ++ if (section_copy%i .ne. 100) stop 1 ++end +Index: gcc/testsuite/gfortran.dg/pr84734.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr84734.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr84734.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++! { dg-do compile } ++! PR fortran/84734 ++ integer :: b(huge(1_8)+1_8) = 0 ! { dg-error "Arithmetic overflow" } ++ end +Index: gcc/testsuite/gfortran.dg/init_flag_18.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/init_flag_18.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/init_flag_18.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++! { dg-do compile } ++! { dg-options "-finit-derived" } ++! ++! PR fortran/83183 ++! ++! Test a regression where -finit-derived recursed infinitely generating ++! initializers for allocatable components of the same derived type. ++! ++ ++program pr83183 ++ type :: linked_list ++ type(linked_list), allocatable :: link ++ integer :: value ++ end type ++ type(linked_list) :: test ++ allocate(test % link) ++ print *, test%value ++ print *, test%link%value ++end program +Index: gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90 (.../branches/gcc-7-branch) +@@ -22,7 +22,7 @@ + allocate(i(2))) ! { dg-error "Syntax error in ALLOCATE" } + allocate(i(2), errmsg=err, errmsg=err) ! { dg-error "Redundant ERRMSG" } + allocate(i(2), errmsg=err) ! { dg-warning "useless without a STAT" } +- allocate(i(2), stat=j, errmsg=x) ! { dg-error "must be a scalar CHARACTER" } ++ allocate(i(2), stat=j, errmsg=x) ! { dg-error "shall be a scalar default CHARACTER" } + + allocate(err) ! { dg-error "neither a data pointer nor an allocatable" } + +Index: gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++! { dg-do run } ++! ++! Test the fix for PR82923, in which an ICE occurred because the ++! character length from 'getchars' scope was being used in the ++! automatic allocation of 'mine'. ++! ++! Contributed by "Werner Blokbuster" ++! ++module m ++ implicit none ++contains ++ function getchars(my_len,my_size) ++ integer, intent(in) :: my_len, my_size ++ character(my_len) :: getchars(my_size) ++ getchars = 'A-' ++ end function getchars ++ ++ function getchars2(my_len) ++ integer, intent(in) :: my_len ++ character(my_len) :: getchars2 ++ getchars2 = 'B--' ++ end function getchars2 ++end module m ++ ++program testca ++ use m, only: getchars, getchars2 ++ implicit none ++ character(:), allocatable :: mine(:) ++ character(:), allocatable :: mine2 ++ integer :: i ++ ++ ! ICE occured at this line: ++ mine = getchars(2,4) ++ if (any (mine .ne. [('A-', i = 1, 4)])) stop 1 ++ ++ ! The scalar version was fine and this will keep it so: ++ mine2 = getchars2(3) ++ if (mine2 .ne. 'B--') stop 2 ++end program testca +Index: gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++! PR 85641 - this used to ICE due do infinite recursion. ++! Test case by Antony Lewis. ++program tester ++character(LEN=:), allocatable :: fields ++integer j ++character(LEN=4), parameter :: CMB_CL_Fields = 'TEBP' ++ ++fields = '' ++j=1 ++fields = fields // CMB_CL_Fields(j:j) ++ ++end program tester +Index: gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++program p ++ integer, allocatable :: arr(:) ++ integer :: stat ++ character(len=128, kind=4) :: errmsg = ' ' ++ allocate (arr(3), stat=stat, errmsg=errmsg) ! { dg-error "shall be a scalar default CHARACTER" } ++ print *, allocated(arr), stat, trim(errmsg) ++end +Index: gcc/testsuite/gfortran.dg/typebound_operator_4.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/typebound_operator_4.f03 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/typebound_operator_4.f03 (.../branches/gcc-7-branch) +@@ -84,6 +84,6 @@ + TYPE(myint) :: x + + x = 0 ! { dg-error "Can't convert" } +- x = x + 42 ! { dg-error "Operands of" } ++ x = x + 42 ! { dg-error "binary intrinsic numeric operator" } + x = x .PLUS. 5 ! { dg-error "Unknown operator" } + END PROGRAM main +Index: gcc/testsuite/gfortran.dg/submodule_31.f08 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/submodule_31.f08 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/submodule_31.f08 (.../branches/gcc-7-branch) +@@ -0,0 +1,54 @@ ++! { dg-do run } ++! ++! Test the fix for PR82814 in which an ICE occurred for the submodule allocation. ++! ++! Contributed by "Werner Blokbuster" ++! ++module u ++ ++ implicit none ++ ++ interface unique ++ module function uniq_char(input) result(uniq) ++ character(*), intent(in) :: input(:) ++ character(size(input)), allocatable :: uniq(:) ++ end function uniq_char ++ end interface unique ++ ++contains ++ ++ module function uniq2(input) result(uniq) ++ character(*), intent(in) :: input(:) ++ character(size(input)), allocatable :: uniq(:) ++ allocate(uniq(1)) ++ uniq = 'A' ++ end function uniq2 ++ ++end module u ++ ++ ++submodule (u) z ++ ++ implicit none ++ ++contains ++ ++ module function uniq_char(input) result(uniq) ++ character(*), intent(in) :: input(:) ++ character(size(input)), allocatable :: uniq(:) ++ allocate(uniq(1)) ! This used to ICE ++ uniq = 'A' ++ end function uniq_char ++ ++end submodule z ++ ++ ++program test_uniq ++ use u ++ implicit none ++ character(1), dimension(4) :: chr = ['1','2','1','2'] ++ ++ write(*,*) unique(chr) ++ write(*,*) uniq2(chr) ++ ++end program test_uniq +Index: gcc/testsuite/gfortran.dg/inquire_19.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/inquire_19.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/inquire_19.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! PR84506 INQUIRE(pos=) always sets pos=0 with -fdefault-integer-8 ++program TestInquire ++ implicit none ++ integer(8) :: iUnit ++ integer(8) :: iPos ++ open(newunit=iunit, file='output.txt', access='stream', status='replace') ++ write(iUnit) 'TEXT' ++ inquire(iUnit, pos=iPos) ++ close(iUnit, status='delete') ++ !print *, iPos ++ if (iPos.ne.5) stop 1 ++end program TestInquire +Index: gcc/testsuite/gfortran.dg/char_result_18.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/char_result_18.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/char_result_18.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++! { dg-do compile } ++! ++! Tests the fix for PR80657. ++! ++! Contributed by Vittorio Zecca ++! ++function f(x) ++implicit character(len(f)) (x) ! { dg-error "Self reference in character length" } ++character(len(x)) f ++end +Index: gcc/testsuite/gfortran.dg/pr86045.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr86045.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr86045.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++program p ++ logical :: a(2) = (mod([2,3],0) == 0) ! { dg-error "shall not be zero" } ++ integer :: b = count(mod([2,3],0) == 0) ! { dg-error "shall not be zero" } ++ integer :: c = all(mod([2,3],0) == 0) ! { dg-error "shall not be zero" } ++ integer :: d = any(mod([2,3],0) == 0) ! { dg-error "shall not be zero" } ++end +Index: gcc/testsuite/gfortran.dg/pr78741.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr78741.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr78741.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++! { dg-do compile } ++! PR fortran/78741 ++! Contributed by Gerhard Steinmetz ++subroutine s(n, x) ++ integer :: n ++ character(n) :: x ++ character, pointer :: z(:) ++ x = 'a' ++ return ++entry g(n, x) ! { dg-error "is already defined" } ++ x = 'b' ++contains ++ subroutine g ! { dg-error "(1)" } ++ z(1) = x(1:1) ++ end ++end +Index: gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib -lcaf_single" } ++! ++! Check that reffing x on both sides of a coarray send does not ICE. ++! PR 85507 ++ ++program check_dependency ++ integer :: x[*] ++ x[42] = x ++end program check_dependency ++ +Index: gcc/testsuite/gfortran.dg/pr83149.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++! Compiled with pr83149_1.f90 ++! ++module mod1 ++ integer :: ncells ++end module ++ ++module mod2 ++contains ++ function get() result(array) ++ use mod1 ++ real array(ncells) ++ array = 1.0 ++ end function ++end module +Index: gcc/testsuite/gfortran.dg/associate_46.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/associate_46.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/associate_46.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,37 @@ ++! { dg-do run } ++! ++! Check the fix for PR88143, in which the associate name caused ++! a segfault in resolve.c. Make sure that the associate construct ++! does its job correctly, as well as compiles. ++! ++! Contributed by Andrew Wood ++! ++MODULE m ++ IMPLICIT NONE ++ TYPE t ++ INTEGER, DIMENSION(:), ALLOCATABLE :: i ++ END TYPE ++ CONTAINS ++ SUBROUTINE s(x, idx1, idx2, k) ++ CLASS(*), DIMENSION(:), INTENT(IN), OPTIONAL :: x ++ INTEGER :: idx1, idx2, k ++ SELECT TYPE ( x ) ++ CLASS IS ( t ) ++ ASSOCIATE ( j => x(idx1)%i ) ++ k = j(idx2) ++ END ASSOCIATE ++ END SELECT ++ END ++END ++ ++ use m ++ class (t), allocatable :: c(:) ++ integer :: k ++ allocate (c(2)) ++ allocate (c(1)%i, source = [3,2,1]) ++ allocate (c(2)%i, source = [6,5,4]) ++ call s(c, 1, 3, k) ++ if (k .ne. 1) stop 1 ++ call s(c, 2, 1, k) ++ if (k .ne. 6) stop 2 ++end +Index: gcc/testsuite/gfortran.dg/dec_structure_8.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dec_structure_8.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_8.f90 (.../branches/gcc-7-branch) +@@ -6,7 +6,7 @@ + + ! Old-style (clist) initialization + integer,parameter :: as = 3 +-structure /t1/ ++structure /t1/ ! { dg-error "Type definition.*T1" } + integer*1 a /300_2/ ! { dg-error "Arithmetic overflow" } + integer b // ! { dg-error "Empty old style initializer list" } + integer c /2*3/ ! { dg-error "Repeat spec invalid in scalar" } +@@ -44,14 +44,14 @@ + + structure /t2/ + ENTRY here ! { dg-error "ENTRY statement.*cannot appear" } +- integer a + integer a ! { dg-error "Component.*already declared" } ++ integer a ! { dg-error "Component.*already declared" } + structure $z ! { dg-error "Invalid character in name" } + structure // ! { dg-error "Invalid character in name" } + structure // x ! { dg-error "Invalid character in name" } + structure /t3/ ! { dg-error "Invalid character in name" } + structure /t3/ x,$y ! { dg-error "Invalid character in name" } +- structure /t4/ y ++ structure /t4/ y ! { dg-error "Type definition.*T4" } + integer i, j, k + end structure + structure /t4/ z ! { dg-error "Type definition.*T4" } +Index: gcc/testsuite/gfortran.dg/dec_structure_23.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dec_structure_23.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_23.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++! { dg-do compile } ++! { dg-options "-fdec-structure" } ++! ++! PR fortran/78240 ++! ++! Test a regression where an ICE occurred attempting to create array variables ++! with non-constant array-specs in legacy clist initializers. ++! ++! Error message update with patch for PR fortran/83633 ++! ++program p ++ implicit none ++ integer :: nn ++ real :: rr ++ structure /s/ ++ integer x(n) /1/ ! { dg-error "array with nonconstant bounds" } ++ integer xx(nn) /1/ ! { dg-error "array with nonconstant bounds" } ++ integer xxx(rr) /1.0/ ! { dg-error "array with nonconstant bounds" } ++ end structure ++end +Index: gcc/testsuite/gfortran.dg/statement_function_3.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/statement_function_3.f (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/statement_function_3.f (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! PR fortran/35299 ++ subroutine phtod(e,n,i,h) ++ dimension e(n) ++ hstar(e,b)=b**.4*((1.25*fun(-e/40)+.18)) ! { dg-error "must be scalar" } ++ a = 1. ++ h = hstar(e(i-1), a) ++ end ++ ++ function fun(a) ++ real a(*) ++ fun = 42 ++ end ++! { dg-prune-output " Obsolescent feature" } ++ +Index: gcc/testsuite/gfortran.dg/pr85521_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85521_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85521_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85521 ++program p ++ character(3) :: c = 'abc' ++ character(3) :: z(1) ++ z = [ c(:-2) ] ++ print *, z ++end +Index: gcc/testsuite/gfortran.dg/interface_41.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/interface_41.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/interface_41.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++! { dg-do compile } ++! PR fortran/85001 ++! Contributed by Gerhard Steinmetz. ++program p ++ type t ++ end type ++ call s ++contains ++ real function f(x) ++ class(t) :: x ++ dimension :: x(:) ++ f = 1.0 ++ end ++ subroutine s ++ type(t) :: x(2) ++ real :: z ++ z = f(x) ! { dg-error "Rank mismatch in argument" } ++ end ++end +Index: gcc/testsuite/gfortran.dg/explicit_shape_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/explicit_shape_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/explicit_shape_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/83633 ++! Original testcase by Nathan T. Weeks ++! ++integer :: A(command_argument_count()) = 1 ! { dg-error "nonconstant bounds" } ++write (*,*) A ++end +Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,84 @@ ++! { dg-do run } ++! ++! Test the fix for PR84546 in which the failing cases would ++! have x%vec = ['foo','b ']. ++! ++! Contributed by Neil Carlson ++! ++module any_vector_type ++ ++ type :: any_vector ++ class(*), allocatable :: vec(:) ++ end type ++ ++ interface any_vector ++ procedure any_vector1 ++ end interface ++ ++contains ++ ++ function any_vector1(vec) result(this) ++ class(*), intent(in) :: vec(:) ++ type(any_vector) :: this ++ allocate(this%vec, source=vec) ++ end function ++ ++end module ++ ++program main ++ ++ use any_vector_type ++ implicit none ++ ++ class(*), allocatable :: x ++ character(*), parameter :: vec(2) = ['foo','bar'] ++ integer :: vec1(3) = [7,8,9] ++ ++ call foo1 ++ call foo2 ++ call foo3 ++ call foo4 ++ ++contains ++ ++ subroutine foo1 ! This always worked ++ allocate (any_vector :: x) ++ select type (x) ++ type is (any_vector) ++ x = any_vector(vec) ++ end select ++ call bar(1) ++ deallocate (x) ++ end ++ ++ subroutine foo2 ! Failure found during diagnosis ++ x = any_vector (vec) ++ call bar(2) ++ deallocate (x) ++ end ++ ++ subroutine foo3 ! Original failure ++ allocate (x, source = any_vector (vec)) ++ call bar(3) ++ deallocate (x) ++ end ++ ++ subroutine foo4 ! This always worked ++ allocate (x, source = any_vector (vec1)) ++ call bar(4) ++ deallocate (x) ++ end ++ ++ subroutine bar (stop_flag) ++ integer :: stop_flag ++ select type (x) ++ type is (any_vector) ++ select type (xvec => x%vec) ++ type is (character(*)) ++ if (any(xvec /= vec)) stop stop_flag ++ type is (integer) ++ if (any(xvec /= (vec1))) stop stop_flag ++ end select ++ end select ++ end ++end program +Index: gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++! { dg-do run } ++ ++! Test that index vector on lhs of caf-expression works correctly. ++ ++program pr81773 ++ ++ integer, parameter :: ndim = 5 ++ integer :: i ++ integer :: vec(ndim) = -1 ++ integer :: res(ndim)[*] = [ (i, i=1, ndim) ] ++ type T ++ integer :: padding ++ integer :: dest(ndim) ++ integer :: src(ndim) ++ end type ++ ++ type(T) :: dest ++ type(T), allocatable :: caf[:] ++ ++ vec([ndim, 3, 1]) = res(1:3)[1] ++ if (any (vec /= [ 3, -1, 2, -1, 1])) stop 1 ++ ++ dest = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] ) ++ dest%dest([ 4,3,2 ]) = res(3:5)[1] ++ if (any (dest%dest /= [-1, 5, 4, 3, -1])) stop 2 ++ ++ vec(:) = -1 ++ allocate(caf[*], source = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] )) ++ vec([ 5,3,2 ]) = caf[1]%src(2:4) ++ if (any (vec /= [ -1, 0, 1, -1, 2])) stop 3 ++end ++ +Index: gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++! { dg-do run } ++! ++! Test that pr81773/fortran is fixed. ++ ++program get_to_indexed_array ++ ++ integer, parameter :: ndim = 5 ++ integer :: i ++ integer :: vec(1:ndim) = 0 ++ integer :: indx(1:2) = [3, 2] ++ integer :: mat(1:ndim, 1:ndim) = 0 ++ integer :: res(1:ndim)[*]=[ (i, i=1, ndim) ] ++ ++ ! No sync needed, because this test always is running on single image ++ vec([ndim , 1]) = res(1:2)[1] ++ if (vec(1) /= res(2) .or. vec(ndim) /= res(1)) then ++ print *,"vec: ", vec, " on image: ", this_image() ++ stop 1 ++ end if ++ ++ mat(2:3,[indx(:)]) = reshape(res(1:4)[1], [2, 2]) ++ if (any(mat(2:3, 3:2:-1) /= reshape(res(1:4), [2,2]))) then ++ print *, "mat: ", mat, " on image: ", this_image() ++ stop 2 ++ end if ++end ++ ++! vim:ts=2:sts=2:sw=2: +Index: gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! PR fortran/82049 ++! Original code contributed by John Harper ++program ice ! f2003 ++ implicit none ++ character(*), parameter:: a = 'ice', b = '*' ++ character(*), parameter:: c(2) = [character(len(a)) :: a, b] ++ print "(2A4)",adjustr(c) ++end program ice +Index: gcc/testsuite/gfortran.dg/where_7.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/where_7.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/where_7.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++! { dg-do compile } ++! { dg-options "-ffrontend-optimize" } ++! PR fortran/88073 - this used to ICE with front-end optimization ++! Original test case by 'mecej4' ++Subroutine tfu (n, x, f) ++ Implicit None ++ Integer, Parameter :: double = Kind (0.d0) ++ Integer, Intent (In) :: n ++ Real (double), Intent (Out) :: f ++ Real (double), Intent (In) :: x (n) ++ Integer :: j ++ Logical, Dimension(n) :: l1v, l2v, l3v ++! ++ l3v = .False. ++ l2v = .False. ++ l1v = (/ (j, j=1, n) /) == 1 ++ Where ( .Not. (l1v)) ++ l2v = (/ (j, j=1, n) /) == n ++ End Where ++ Where ( .Not. l1v) ++ l3v = .Not. l2v ++ End Where ++ f = sum (x(1:n), mask=l3v) ++ Return ++end subroutine tfu +Index: gcc/testsuite/gfortran.dg/temporary_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/temporary_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/temporary_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++! { dg-do compile } ++! ++! Tests the fix for PR70864 in which compiler generated temporaries received ++! the attributes of a dummy argument. This is the original testcase. ++! The simplified version by Gerhard Steinmetz is gratefully acknowledged. ++! ++! Contributed by Weiqun Zhang ++! ++module boxarray_module ++ implicit none ++ type :: BoxArray ++ integer :: i = 0 ++ contains ++ procedure :: boxarray_assign ++ generic :: assignment(=) => boxarray_assign ++ end type BoxArray ++contains ++ subroutine boxarray_assign (dst, src) ++ class(BoxArray), intent(inout) :: dst ++ type (BoxArray), intent(in ) :: src ++ dst%i =src%i ++ end subroutine boxarray_assign ++end module boxarray_module ++ ++module multifab_module ++ use boxarray_module ++ implicit none ++ type, public :: MultiFab ++ type(BoxArray) :: ba ++ end type MultiFab ++contains ++ subroutine multifab_swap(mf1, mf2) ++ type(MultiFab), intent(inout) :: mf1, mf2 ++ type(MultiFab) :: tmp ++ tmp = mf1 ++ mf1 = mf2 ! Generated an ICE in trans-decl.c. ++ mf2 = tmp ++ end subroutine multifab_swap ++end module multifab_module +Index: gcc/testsuite/gfortran.dg/pr85138_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85138_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85138_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,29 @@ ++! { dg-do compile } ++module fox_m_fsys_format ++ ++ interface len ++ module procedure str_real_sp_len, str_real_sp_fmt_len ++ end interface ++ ++contains ++ ++ pure function str_real_sp_fmt_len(x, fmt) result(n) ++ real, intent(in) :: x ++ character(len=*), intent(in) :: fmt ++ if (.not.checkFmt(fmt)) then ++ endif ++ end function str_real_sp_fmt_len ++ pure function str_real_sp_len(x) result(n) ++ real, intent(in) :: x ++ n = len(x, "") ++ end function str_real_sp_len ++ pure function str_real_dp_matrix(xa) result(s) ++ real, intent(in) :: xa ++ character(len=len(xa)) :: s ++ end function str_real_dp_matrix ++ ++ pure function checkfmt(s) result(a) ++ logical a ++ character(len=*), intent(in) :: s ++ end function checkfmt ++end module fox_m_fsys_format +Index: gcc/testsuite/gfortran.dg/assumed_rank_14.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/assumed_rank_14.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/assumed_rank_14.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy" } ++! ++! PR fortran/83184 ++! ++ ++integer n1(..) /1/ ++! { dg-error "Assumed-rank array.*must be a dummy argument" "" { target *-*-* } 7 } ++! { dg-error "Assumed-rank variable.*actual argument" "" { target *-*-* } 7 } ++ ++end +Index: gcc/testsuite/gfortran.dg/pr83149_b.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149_b.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149_b.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++! Compiled with pr83149_a.f90 ++! { dg-do run } ++! { dg-options "-fno-whole-file" } ++! { dg-compile-aux-modules "pr83149_a.f90" } ++! { dg-additional-sources pr83149_a.f90 } ++! ++! Contributed by Neil Carlson ++! ++ use mod ++ string = 'fubar' ++ select case (get_string()) ++ case ('fubar') ++ case default ++ stop 1 ++ end select ++end +Index: gcc/testsuite/gfortran.dg/inline_matmul_24.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/inline_matmul_24.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/inline_matmul_24.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,42 @@ ++! { dg-do run } ++! { dg-options "-ffrontend-optimize -fdump-tree-original" } ++! ++! PR fortran/87597 ++! ++! Contributed by gallmeister ++! ++! Before, for the inlined matmul, ++! gamma5 was converted to an EXPR_ARRAY with lbound = 1 ++! instead of the lbound = 0 as declared; leading to ++! an off-by-one problem. ++! ++program testMATMUL ++ implicit none ++ complex, dimension(0:3,0:3), parameter :: gamma5 = reshape((/ 0., 0., 1., 0., & ++ 0., 0., 0., 1., & ++ 1., 0., 0., 0., & ++ 0., 1., 0., 0. /),(/4,4/)) ++ complex, dimension(0:3,0:3) :: A, B, D ++ integer :: i ++ ++ A = 0.0 ++ do i=0,3 ++ A(i,i) = i*1.0 ++ end do ++ ++ B = cmplx(7,-9) ++ B = matmul(A,gamma5) ++ ++ D = reshape([0, 0, 2, 0, & ++ 0, 0, 0, 3, & ++ 0, 0, 0, 0, & ++ 0, 1, 0, 0], [4, 4]) ++ write(*,*) B(0,:) ++ write(*,*) B(1,:) ++ write(*,*) B(2,:) ++ write(*,*) B(3,:) ++ if (any(B /= D)) then ++ call abort() ++ end if ++end program testMATMUL ++! { dg-final { scan-tree-dump-times "gamma5\\\[__var_1_do \\* 4 \\+ __var_2_do\\\]|gamma5\\\[NON_LVALUE_EXPR <__var_1_do> \\* 4 \\+ NON_LVALUE_EXPR <__var_2_do>\\\]" 1 "original" } } +Index: gcc/testsuite/gfortran.dg/pr70409.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr70409.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr70409.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,23 @@ ++! { dg-do run } ++! PR fortran/70409 ++! Contriubted by Harald Anlauf ++program foo ++ integer, parameter :: huge_1 = huge(0_1) ++ character( huge_1 ), parameter :: x = 'abc' ++ character( huge(0_1) ), parameter :: y = 'abc' ++ character( huge(0_1)+0 ), parameter :: z = 'abcdef' ++ character( huge(0_1) ) :: a = 'abc' ++ integer, parameter :: huge_2 = huge(0_2) ++ character( huge_2 ), parameter :: u = 'abc' ++ character( huge(0_2) ), parameter :: v = 'abc' ++ character(int(huge(0_2),4)), parameter :: w = 'abcdef' ++ character( huge(0_2) ) :: b = 'abc' ++ if (len(x) /= huge_1) stop 1 ++ if (len(y) /= huge_1) stop 2 ++ if (len(z) /= huge_1) stop 3 ++ if (len(a) /= huge_1) stop 4 ++ if (len(u) /= huge_2) stop 5 ++ if (len(v) /= huge_2) stop 6 ++ if (len(w) /= huge_2) stop 7 ++ if (len(b) /= huge_2) stop 8 ++end program foo +Index: gcc/testsuite/gfortran.dg/coarray_46.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_46.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_46.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib -lcaf_single" } ++! ++! Test the fix for PR83319 ++! ++module foo_module ++ implicit none ++ type foo ++ integer, allocatable :: i(:) ++ end type ++end module ++ ++ use foo_module ++ implicit none ++ type(foo), save :: bar[*] ++ allocate(bar%i(1)) ! Used to ICE here. ++end +Index: gcc/testsuite/gfortran.dg/pr77414.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr77414.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr77414.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! PR fortran/77414 ++subroutine a(x) ! { dg-error "(1)" } ++ character(*) :: x ++ contains ++ subroutine a(x) ! { dg-error " is already defined at" } ++ character(*) :: x ++ end subroutine a ++end subroutine a +Index: gcc/testsuite/gfortran.dg/associate_30.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/associate_30.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/associate_30.f90 (.../branches/gcc-7-branch) +@@ -8,8 +8,3 @@ + associate (x => null()) ! { dg-error "cannot be NULL()" } + end associate + end subroutine +- +- subroutine s2 +- associate (x => [null()]) ! { dg-error "has no type" } +- end associate +- end subroutine +Index: gcc/testsuite/gfortran.dg/implied_do_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/implied_do_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/implied_do_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/56667 ++program error_message ++ implicit none ++ integer :: ir ++ write(*,*) ( ir, ir = 1,10 ! { dg-error "Expected a right parenthesis" } ++end program error_message +Index: gcc/testsuite/gfortran.dg/pr67803.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr67803.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr67803.f90 (.../branches/gcc-7-branch) +@@ -10,5 +10,4 @@ + x = '0' // [character :: 1d1] ! { dg-error "Incompatible typespec for" } + x = '0' // [character :: (0.,1.)] ! { dg-error "Incompatible typespec for" } + x = '0' // [character :: .true.] ! { dg-error "Incompatible typespec for" } +- x = '0' // [character :: null()] ! { dg-error "Incompatible typespec for" } + end +Index: gcc/testsuite/gfortran.dg/select_type_41.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/select_type_41.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/select_type_41.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++! { dg-do compile } ++! { dg-options "-O2" } ++! ++! Tests the fix for PR80965 in which the use of the name 'loc' ++! for the dummy argument of 'xyz' caused an ICE. If the module ++! was used, the error "DUMMY attribute conflicts with INTRINSIC ++! attribute in ‘loc’ at (1)" was emitted. Note that although 'loc' ++! is a GNU extension and so can be over-ridden, this is not very ++! good practice. ++! ++! Contributed by David Sagan ++! ++module mode3_mod ++contains ++ subroutine xyz (loc) ++ implicit none ++ class(*) :: loc ++ real x(6) ++ integer ix_use ++ select type (loc) ++ type is (integer) ++ x = 0 ++ print *, "integer" ++ type is (real) ++ ix_use = 0 ++ print *, "real" ++ end select ++ end subroutine xyz ++end module mode3_mod ++ +Index: gcc/testsuite/gfortran.dg/init_flag_17.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/init_flag_17.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/init_flag_17.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++! { dg-do compile } ++! { dg-options "-finit-derived -finit-local-zero -fdump-tree-original" } ++! ++! PR fortran/82972 ++! ++! Make sure we do not ICE when generating initializers for c_ptr and c_funptr ++! components of derived types (and make sure they are properly initialized to ++! zero). ++! ++ ++program init_flag_17 ++ use iso_c_binding ++ implicit none ++ ++ type :: ty ++ type(c_ptr) :: ptr ! = c_null_ptr ++ type(c_funptr) :: fptr ! = c_null_funptr ++ end type ++ ++ type(ty) :: t ++ ++ print *, t%ptr ++ print *, t%fptr ++ ++end program ++ ++! { dg-final { scan-tree-dump "\.ptr=0" "original" } } ++! { dg-final { scan-tree-dump "\.fptr=0" "original" } } +Index: gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 (.../branches/gcc-7-branch) +@@ -38,9 +38,8 @@ + if (any (A-B /= 0)) call abort + end + +-! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 0, 0B\\\);" 1 "original" } } +-! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 1, 0B\\\);" 1 "original" } } ++! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 1, 0B\\\);" 2 "original" } } + ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 1, 0B\\\);" 1 "original" } } + ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.1, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) b, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 0, 0B\\\);" 1 "original" } } +-! { dg-final { scan-tree-dump-times "_gfortran_caf_sendget \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, 4, 4, 0, 0B\\\);" 1 "original" } } ++! { dg-final { scan-tree-dump-times "_gfortran_caf_sendget \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, 4, 4, 1, 0B\\\);" 1 "original" } } + +Index: gcc/testsuite/gfortran.dg/data_bounds_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/data_bounds_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/data_bounds_1.f90 (.../branches/gcc-7-branch) +@@ -1,4 +1,5 @@ + ! { dg-do compile } ++! { dg-options "-std=gnu" } + ! Checks the fix for PR32315, in which the bounds checks below were not being done. + ! + ! Contributed by Tobias Burnus +Index: gcc/testsuite/gfortran.dg/inquire_18.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/inquire_18.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/inquire_18.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do run } ++! PR84412 Wrong "Inquire statement identifies an internal file" error ++program bug ++ implicit none ++ integer :: i ++ character(len=1) :: s ++ write (s,'(i1)') 0 ++ open(newUnit=i,file='inquire_18.txt',status='unknown') ++ inquire(unit=i) ++ close(i, status="delete") ++end program bug +Index: gcc/testsuite/gfortran.dg/pr64124.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr64124.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr64124.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++! { dg-do compile } ++! PR fortran/64124.f90 ++ character(len=kind(1)) x ++ integer(len(x)) y ++ end +Index: gcc/testsuite/gfortran.dg/data_char_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/data_char_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/data_char_1.f90 (.../branches/gcc-7-branch) +@@ -1,4 +1,5 @@ + ! { dg-do run } ++! { dg-options "-std=gnu" } + ! Test character variables in data statements + ! Also substrings of character variables. + ! PR14976 PR16228 +Index: gcc/testsuite/gfortran.dg/pr86110.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr86110.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr86110.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/86110 ++program p ++ character(:), allocatable :: x, y ++ x = 'abc' ++ y = [x(:)] ! { dg-error "Incompatible ranks 0 and 1" } ++end +Index: gcc/testsuite/gcc.c-torture/execute/pr86231.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr86231.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr86231.c (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++/* PR tree-optimization/86231 */ ++ ++#define ONE ((void *) 1) ++#define TWO ((void *) 2) ++ ++__attribute__((noinline, noclone)) int ++foo (void *p, int x) ++{ ++ if (p == ONE) return 0; ++ if (!p) ++ p = x ? TWO : ONE; ++ return p == ONE ? 0 : 1; ++} ++ ++int v[8]; ++ ++int ++main () ++{ ++ if (foo ((void *) 0, 0) != 0 ++ || foo ((void *) 0, 1) != 1 ++ || foo (ONE, 0) != 0 ++ || foo (ONE, 1) != 0 ++ || foo (TWO, 0) != 1 ++ || foo (TWO, 1) != 1 ++ || foo (&v[7], 0) != 1 ++ || foo (&v[7], 1) != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr85529-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr85529-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr85529-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++/* PR tree-optimization/85529 */ ++ ++__attribute__((noinline, noclone)) int ++foo (int x) ++{ ++ x &= 63; ++ x -= 50; ++ x |= 1; ++ if (x < 0) ++ return 1; ++ int y = x >> 2; ++ if (x >= y) ++ return 1; ++ return 0; ++} ++ ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 63; i++) ++ if (foo (i) != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/20180131-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20180131-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20180131-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++/* PR rtl-optimization/84071 */ ++/* Reported by Wilco */ ++ ++extern void abort (void); ++ ++typedef union ++{ ++ signed short ss; ++ unsigned short us; ++ int x; ++} U; ++ ++int f(int x, int y, int z, int a, U u) __attribute__((noclone, noinline)); ++ ++int f(int x, int y, int z, int a, U u) ++{ ++ return (u.ss <= 0) + u.us; ++} ++ ++int main (void) ++{ ++ U u = { .ss = -1 }; ++ ++ if (f (0, 0, 0, 0, u) != (1 << sizeof (short) * 8)) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr82210.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr82210.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr82210.c (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++/* PR c/82210 */ ++ ++void ++foo (int size) ++{ ++ int i; ++ struct S { ++ __attribute__((aligned (16))) struct T { short c; } a[size]; ++ int b[size]; ++ } s; ++ ++ for (i = 0; i < size; i++) ++ s.a[i].c = 0x1234; ++ for (i = 0; i < size; i++) ++ s.b[i] = 0; ++ for (i = 0; i < size; i++) ++ if (s.a[i].c != 0x1234 || s.b[i] != 0) ++ __builtin_abort (); ++} ++ ++int ++main () ++{ ++ foo (15); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr84524.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr84524.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr84524.c (.../branches/gcc-7-branch) +@@ -0,0 +1,41 @@ ++/* PR target/84524 */ ++ ++__attribute__((noinline,noclone)) void ++foo (unsigned short *x) ++{ ++ unsigned short i, v; ++ unsigned char j; ++ for (i = 0; i < 256; i++) ++ { ++ v = i << 8; ++ for (j = 0; j < 8; j++) ++ if (v & 0x8000) ++ v = (v << 1) ^ 0x1021; ++ else ++ v = v << 1; ++ x[i] = v; ++ } ++} ++ ++int ++main () ++{ ++ unsigned short a[256]; ++ ++ foo (a); ++ for (int i = 0; i < 256; i++) ++ { ++ unsigned short v = i << 8; ++ for (int j = 0; j < 8; j++) ++ { ++ asm volatile ("" : "+r" (v)); ++ if (v & 0x8000) ++ v = (v << 1) ^ 0x1021; ++ else ++ v = v << 1; ++ } ++ if (a[i] != v) ++ __builtin_abort (); ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr85095.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr85095.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr85095.c (.../branches/gcc-7-branch) +@@ -0,0 +1,52 @@ ++/* PR target/85095 */ ++ ++__attribute__((noinline, noclone)) unsigned long ++f1 (unsigned long a, unsigned long b) ++{ ++ unsigned long i = __builtin_add_overflow (a, b, &a); ++ return a + i; ++} ++ ++__attribute__((noinline, noclone)) unsigned long ++f2 (unsigned long a, unsigned long b) ++{ ++ unsigned long i = __builtin_add_overflow (a, b, &a); ++ return a - i; ++} ++ ++__attribute__((noinline, noclone)) unsigned long ++f3 (unsigned int a, unsigned int b) ++{ ++ unsigned int i = __builtin_add_overflow (a, b, &a); ++ return a + i; ++} ++ ++__attribute__((noinline, noclone)) unsigned long ++f4 (unsigned int a, unsigned int b) ++{ ++ unsigned int i = __builtin_add_overflow (a, b, &a); ++ return a - i; ++} ++ ++int ++main () ++{ ++ if (f1 (16UL, -18UL) != -2UL ++ || f1 (16UL, -17UL) != -1UL ++ || f1 (16UL, -16UL) != 1UL ++ || f1 (16UL, -15UL) != 2UL ++ || f2 (24UL, -26UL) != -2UL ++ || f2 (24UL, -25UL) != -1UL ++ || f2 (24UL, -24UL) != -1UL ++ || f2 (24UL, -23UL) != 0UL ++ || f3 (32U, -34U) != -2U ++ || f3 (32U, -33U) != -1U ++ || f3 (32U, -32U) != 1U ++ || f3 (32U, -31U) != 2U ++ || f4 (35U, -37U) != -2U ++ || f4 (35U, -36U) != -1U ++ || f4 (35U, -35U) != -1U ++ || f4 (35U, -34U) != 0U) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr84748.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr84748.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr84748.c (.../branches/gcc-7-branch) +@@ -0,0 +1,34 @@ ++/* { dg-require-effective-target int128 } */ ++ ++typedef unsigned __int128 u128; ++ ++int a, c, d; ++u128 b; ++ ++unsigned long long g0, g1; ++ ++void ++store (unsigned long long a0, unsigned long long a1) ++{ ++ g0 = a0; ++ g1 = a1; ++} ++ ++void ++foo (void) ++{ ++ b += a; ++ c = d != 84347; ++ b /= c; ++ u128 x = b; ++ store (x >> 0, x >> 64); ++} ++ ++int ++main (void) ++{ ++ foo (); ++ if (g0 != 0 || g1 != 0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr85529-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr85529-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr85529-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++/* PR tree-optimization/85529 */ ++ ++struct S { int a; }; ++ ++int b, c = 1, d, e, f; ++static int g; ++volatile struct S s; ++ ++signed char ++foo (signed char i, int j) ++{ ++ return i < 0 ? i : i << j; ++} ++ ++int ++main () ++{ ++ signed char k = -83; ++ if (!d) ++ goto L; ++ k = e || f; ++L: ++ for (; b < 1; b++) ++ s.a != (k < foo (k, 2) && (c = k = g)); ++ if (c != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/20181120-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20181120-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20181120-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++/* PR rtl-optimization/85925 */ ++/* { dg-require-effective-target int32plus } */ ++/* Testcase by */ ++ ++int a, c, d; ++volatile int b; ++int *e = &d; ++ ++union U1 { ++ unsigned f0; ++ unsigned f1 : 15; ++}; ++volatile union U1 u = { 0x4030201 }; ++ ++int main (void) ++{ ++ for (c = 0; c <= 1; c++) { ++ union U1 f = {0x4030201}; ++ if (c == 1) ++ b; ++ *e = f.f1; ++ } ++ ++ if (d != u.f1) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr87623.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr87623.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr87623.c (.../branches/gcc-7-branch) +@@ -0,0 +1,34 @@ ++/* PR middle-end/87623 */ ++/* Testcase by George Thopas */ ++ ++struct be { ++ unsigned short pad[1]; ++ unsigned char a; ++ unsigned char b; ++} __attribute__((scalar_storage_order("big-endian"))); ++ ++typedef struct be t_be; ++ ++struct le { ++ unsigned short pad[3]; ++ unsigned char a; ++ unsigned char b; ++}; ++ ++typedef struct le t_le; ++ ++int a_or_b_different(t_be *x,t_le *y) ++{ ++ return (x->a != y->a) || (x->b != y->b); ++} ++ ++int main (void) ++{ ++ t_be x = { .a=1, .b=2 }; ++ t_le y = { .a=1, .b=2 }; ++ ++ if (a_or_b_different(&x,&y)) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/20180226-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20180226-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20180226-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,31 @@ ++/* PR rtl-optimization/83496 */ ++/* Reported by Hauke Mehrtens */ ++ ++extern void abort (void); ++ ++typedef unsigned long mp_digit; ++ ++typedef struct { int used, alloc, sign; mp_digit *dp; } mp_int; ++ ++int mytest(mp_int *a, mp_digit b) __attribute__((noclone, noinline)); ++ ++int mytest(mp_int *a, mp_digit b) ++{ ++ if (a->sign == 1) ++ return -1; ++ if (a->used > 1) ++ return 1; ++ if (a->dp[0] > b) ++ return 1; ++ if (a->dp[0] < b) ++ return -1; ++ return 0; ++} ++ ++int main (void) ++{ ++ mp_int i = { 2, 0, -1 }; ++ if (mytest (&i, 0) != 1) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x (.../branches/gcc-7-branch) +@@ -9,14 +9,14 @@ + + # loop through all the options + foreach option $option_list { +- file delete -force dump1 +- file mkdir dump1 ++ file delete -force $tmpdir/dump1 ++ file mkdir $tmpdir/dump1 + c-torture-compile $src "$option $options -dumpbase dump1/$dumpbase -DMASK=1 -x c --param ggc-min-heapsize=1 -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -fdump-noaddr" +- file delete -force dump2 +- file mkdir dump2 ++ file delete -force $tmpdir/dump2 ++ file mkdir $tmpdir/dump2 + c-torture-compile $src "$option $options -dumpbase dump2/$dumpbase -DMASK=2 -x c -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -fdump-noaddr" +- foreach dump1 [lsort [glob -nocomplain dump1/*]] { +- regsub dump1/ $dump1 dump2/ dump2 ++ foreach dump1 [lsort [glob -nocomplain $tmpdir/dump1/*]] { ++ set dump2 "$tmpdir/dump2/[file tail $dump1]" + set dumptail "gcc.c-torture/unsorted/[file tail $dump1]" + regsub {\.\d+((t|r|i)\.[^.]+)$} $dumptail {.*\1} dumptail + set tmp [ diff "$dump1" "$dump2" ] +@@ -29,8 +29,8 @@ + } + } + } +- file delete -force dump1 +- file delete -force dump2 ++ file delete -force $tmpdir/dump1 ++ file delete -force $tmpdir/dump2 + } + + dump_compare $src $options +Index: gcc/testsuite/gcc.c-torture/compile/pr85945.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr85945.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr85945.c (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++/* PR target/85945 */ ++ ++typedef float V __attribute__((vector_size(16))); ++union U { V v; float f[4]; }; ++int f; ++float g[4]; ++ ++void ++foo (void) ++{ ++ V d; ++ union U i; ++ i.v = d; ++ for (f = 0; f < 4; f++) ++ g[f] = i.f[f]; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr84860.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr84860.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr84860.c (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++/* PR target/84860 */ ++ ++void ++foo (int x, int y) ++{ ++ while (x < 1) ++ { ++ x = y; ++ y = ((float)1 / 0) ? 2 : 0; ++ } ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr87473.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr87473.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr87473.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* PR87473: SLSR ICE on hidden basis with |increment| > 1. */ ++/* { dg-additional-options "-fno-tree-ch" } */ ++ ++void ++t6 (int qz, int wh) ++{ ++ int jl = wh; ++ ++ while (1.0 / 0 < 1) ++ { ++ qz = wh * (wh + 2); ++ ++ while (wh < 1) ++ jl = 0; ++ } ++ ++ while (qz < 1) ++ qz = jl * wh; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr82096.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr82096.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr82096.c (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++/* { dg-require-effective-target arm_arch_v5t_ok { target arm*-*-* } } */ ++/* { dg-skip-if "Do not combine float-abi values" { arm*-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */ ++/* { dg-additional-options "-march=armv5t -mthumb -mfloat-abi=soft" { target arm*-*-* } } */ ++ ++static long long AL[24]; ++ ++int ++check_ok (void) ++{ ++ return (__sync_bool_compare_and_swap (AL+1, 0x200000003ll, 0x1234567890ll)); ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr84425.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr84425.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr84425.c (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++/* PR ipa/84425 */ ++ ++void bar (int); ++ ++void ++foo (int x) ++{ ++ if (x < 5) ++ bar (x); ++} ++ ++__attribute__((optimize(0))) void ++bar (int x) ++{ ++ if (x > 10) ++ foo (x); ++} +Index: gcc/testsuite/gnat.dg/dispatch1.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/dispatch1.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/dispatch1.adb (.../branches/gcc-7-branch) +@@ -1,9 +0,0 @@ +--- { dg-do run } +- +-with dispatch1_p; use dispatch1_p; +-procedure dispatch1 is +- O : DT_I1; +- Ptr : access I1'Class; +-begin +- Ptr := new I1'Class'(I1'Class (O)); +-end; +Index: gcc/testsuite/gnat.dg/generic_dispatch_p.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/generic_dispatch_p.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/generic_dispatch_p.adb (.../branches/gcc-7-branch) +@@ -1,7 +0,0 @@ +-package body generic_dispatch_p is +- function Constructor (I : not null access Integer) return DT is +- R : DT; +- begin +- return R; +- end Constructor; +-end; +Index: gcc/testsuite/gnat.dg/generic_dispatch_p.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/generic_dispatch_p.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/generic_dispatch_p.ads (.../branches/gcc-7-branch) +@@ -1,13 +0,0 @@ +-with Ada.Tags.Generic_Dispatching_Constructor; +-package generic_dispatch_p is +- type Iface is interface; +- function Constructor (I : not null access Integer) return Iface is abstract; +- function Dispatching_Constructor +- is new Ada.Tags.Generic_Dispatching_Constructor +- (T => Iface, +- Parameters => Integer, +- Constructor => Constructor); +- type DT is new Iface with null record; +- overriding +- function Constructor (I : not null access Integer) return DT; +-end; +Index: gcc/testsuite/gnat.dg/dispatch1_p.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/dispatch1_p.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/dispatch1_p.ads (.../branches/gcc-7-branch) +@@ -1,4 +0,0 @@ +-package dispatch1_p is +- type I1 is interface; +- type DT_I1 is new I1 with null record; +-end; +Index: gcc/testsuite/gnat.dg/dispatch2.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/dispatch2.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/dispatch2.adb (.../branches/gcc-7-branch) +@@ -1,10 +0,0 @@ +--- { dg-do run } +- +-with dispatch2_p; use dispatch2_p; +-procedure dispatch2 is +- Obj : Object_Ptr := new Object; +-begin +- if Obj.Get_Ptr /= Obj.Impl_Of then +- raise Program_Error; +- end if; +-end; +Index: gcc/testsuite/gnat.dg/warn12.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/warn12.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/warn12.adb (.../branches/gcc-7-branch) +@@ -1,48 +0,0 @@ +--- { dg-do compile } +--- { dg-options "-O2" } +- +-with Text_IO; use Text_IO; +-with System.Storage_Elements; use System.Storage_Elements; +-with Warn12_Pkg; use Warn12_Pkg; +- +-procedure Warn12 (N : Natural) is +- +- Buffer_Size : constant Storage_Offset +- := Token_Groups'Size/System.Storage_Unit + 4096; +- +- Buffer : Storage_Array (1 .. Buffer_Size); +- for Buffer'Alignment use 8; +- +- Tg1 : Token_Groups; +- for Tg1'Address use Buffer'Address; +- +- Tg2 : Token_Groups; +- pragma Warnings (Off, Tg2); +- +- sid : Sid_And_Attributes; +- +- pragma Suppress (Index_Check, Sid_And_Attributes_Array); +- +-begin +- +- for I in 0 .. 7 loop +- sid := Tg1.Groups(I); -- { dg-bogus "out-of-bounds access" } +- Put_Line("Iteration"); +- end loop; +- +- for I in 0 .. N loop +- sid := Tg1.Groups(I); -- { dg-bogus "out-of-bounds access" } +- Put_Line("Iteration"); +- end loop; +- +- for I in 0 .. 7 loop +- sid := Tg2.Groups(I); -- { dg-warning "out-of-bounds access" } +- Put_Line("Iteration"); +- end loop; +- +- for I in 0 .. N loop +- sid := Tg2.Groups(I); -- { dg-warning "out-of-bounds access" } +- Put_Line("Iteration"); +- end loop; +- +-end; +Index: gcc/testsuite/gnat.dg/generic_dispatch.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/generic_dispatch.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/generic_dispatch.adb (.../branches/gcc-7-branch) +@@ -1,9 +0,0 @@ +--- { dg-do run } +- +-with generic_dispatch_p; use generic_dispatch_p; +-procedure generic_dispatch is +- I : aliased Integer := 0; +- D : Iface'Class := Dispatching_Constructor (DT'Tag, I'access); +-begin +- null; +-end generic_dispatch; +Index: gcc/testsuite/gnat.dg/warn12_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/warn12_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/warn12_pkg.ads (.../branches/gcc-7-branch) +@@ -1,21 +0,0 @@ +-with Interfaces.C; use Interfaces.C; +-with System; +- +-package Warn12_Pkg is +- +- Anysize_Array: constant := 0; +- +- type Sid_And_Attributes is record +- Sid : System.Address; +- Attributes : Interfaces.C.Unsigned_Long; +- end record; +- +- type Sid_And_Attributes_Array +- is array (Integer range 0..Anysize_Array) of aliased Sid_And_Attributes; +- +- type Token_Groups is record +- GroupCount : Interfaces.C.Unsigned_Long; +- Groups : Sid_And_Attributes_Array; +- end record; +- +-end Warn12_Pkg; +Index: gcc/testsuite/gnat.dg/dispatch2_p.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/dispatch2_p.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/dispatch2_p.adb (.../branches/gcc-7-branch) +@@ -1,7 +0,0 @@ +--- +-package body dispatch2_p is +- function Impl_Of (Self : access Object) return Object_Ptr is +- begin +- return Object_Ptr (Self); +- end Impl_Of; +-end; +Index: gcc/testsuite/gnat.dg/dispatch2_p.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/dispatch2_p.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/dispatch2_p.ads (.../branches/gcc-7-branch) +@@ -1,8 +0,0 @@ +-package dispatch2_p is +- type Object is tagged null record; +- type Object_Ptr is access all Object'CLASS; +--- +- function Impl_Of (Self : access Object) return Object_Ptr; +- function Get_Ptr (Self : access Object) return Object_Ptr +- renames Impl_Of; +-end; +Index: gcc/testsuite/gnat.dg/null_pointer_deref3.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/null_pointer_deref3.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/null_pointer_deref3.adb (.../branches/gcc-7-branch) +@@ -1,5 +1,4 @@ + -- { dg-do run } +--- { dg-options "-O -gnatp" } + + -- This test requires architecture- and OS-specific support code for unwinding + -- through signal frames (typically located in *-unwind.h) to pass. Feel free +@@ -7,6 +6,8 @@ + + procedure Null_Pointer_Deref3 is + ++ pragma Suppress (All_Checks); ++ + procedure Leaf is + type Int_Ptr is access all Integer; + function n return Int_Ptr is +Index: gcc/testsuite/gnat.dg/discr53_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/discr53_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/discr53_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++package Discr53_Pkg is ++ ++ function Max return Natural; ++ ++end Discr53_Pkg; +Index: gcc/testsuite/gnat.dg/sso14.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/sso14.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/sso14.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,52 @@ ++-- { dg-do run } ++-- { dg-options "-gnatws" } ++ ++with System; ++with Ada.Unchecked_Conversion; ++ ++procedure SSO14 is ++ ++ type Arr is array (1 .. Integer'Size) of Boolean; ++ pragma Pack (Arr); ++ for Arr'Scalar_Storage_Order use System.High_Order_First; ++ ++ function From_Float is new Ada.Unchecked_Conversion (Float, Arr); ++ function From_Int is new Ada.Unchecked_Conversion (Integer, Arr); ++ ++ type R_Float is record ++ F : Float; ++ end record; ++ for R_Float'Bit_Order use System.High_Order_First; ++ for R_Float'Scalar_Storage_Order use System.High_Order_First; ++ ++ type R_Int is record ++ I : Integer; ++ end record; ++ for R_Int'Bit_Order use System.High_Order_First; ++ for R_Int'Scalar_Storage_Order use System.High_Order_First; ++ ++ F1 : Float := 1.234567; ++ FA : Arr; ++ F2 : R_Float; ++ for F2'Address use FA'Address; ++ pragma Import (Ada, F2); ++ ++ I1 : Integer := 1234567; ++ IA : Arr; ++ I2 : R_Int; ++ for I2'Address use IA'Address; ++ pragma Import (Ada, I2); ++ ++begin ++ -- Check that converting a FP value yields a big-endian array ++ FA := From_Float (F1); ++ if F2.F /= F1 then ++ raise Program_Error; ++ end if; ++ ++ -- Check that converting an integer value yields a big-endian array. ++ IA := From_Int (I1); ++ if I2.I /= I1 then ++ raise Program_Error; ++ end if; ++end; +Index: gcc/testsuite/gnat.dg/generic_disp.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/generic_disp.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/generic_disp.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++-- { dg-do run } ++ ++with Generic_Disp_Pkg; use Generic_Disp_Pkg; ++ ++procedure Generic_Disp is ++ I : aliased Integer := 0; ++ D : Iface'Class := Dispatching_Constructor (DT'Tag, I'access); ++begin ++ null; ++end Generic_Disp; +Index: gcc/testsuite/gnat.dg/sso15.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/sso15.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/sso15.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,52 @@ ++-- { dg-do run } ++-- { dg-options "-gnatws" } ++ ++with System; ++with Ada.Unchecked_Conversion; ++ ++procedure SSO15 is ++ ++ type Arr is array (1 .. Integer'Size) of Boolean; ++ pragma Pack (Arr); ++ for Arr'Scalar_Storage_Order use System.High_Order_First; ++ ++ function To_Float is new Ada.Unchecked_Conversion (Arr, Float); ++ function To_Int is new Ada.Unchecked_Conversion (Arr, Integer); ++ ++ type R_Float is record ++ F : Float; ++ end record; ++ for R_Float'Bit_Order use System.High_Order_First; ++ for R_Float'Scalar_Storage_Order use System.High_Order_First; ++ ++ type R_Int is record ++ I : Integer; ++ end record; ++ for R_Int'Bit_Order use System.High_Order_First; ++ for R_Int'Scalar_Storage_Order use System.High_Order_First; ++ ++ A : Arr := (1 .. 2 => True, others => False); ++ ++ F1 : Float; ++ F2 : R_Float; ++ for F2'Address use A'Address; ++ pragma Import (Ada, F2); ++ ++ I1 : Integer; ++ I2 : R_Int; ++ for I2'Address use A'Address; ++ pragma Import (Ada, I2); ++ ++begin ++ -- Check that converting to FP yields a big-endian value. ++ F1 := To_Float (A); ++ if F2.F /= F1 then ++ raise Program_Error; ++ end if; ++ ++ -- Check that converting to integer yields a big-endian value. ++ I1 := To_Int (A); ++ if I2.I /= I1 then ++ raise Program_Error; ++ end if; ++end; +Index: gcc/testsuite/gnat.dg/prot3_pkg.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/prot3_pkg.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/prot3_pkg.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++package body Prot3_Pkg is ++ ++ protected body Prot is ++ function Fn (J : Short_Integer) return Rec ++ is ++ begin ++ return (V1 => J * J, ++ V2 => J); ++ end; ++ ++ procedure Foo (J : Short_Integer) is ++ begin ++ Val := Fn (J); ++ end; ++ end Prot; ++ ++end Prot3_Pkg; +Index: gcc/testsuite/gnat.dg/opt74.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt74.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt74.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++-- { dg-do run } ++-- { dg-options "-O2" } ++ ++with Opt74_Pkg; use Opt74_Pkg; ++ ++procedure Opt74 is ++ Index, Found : Integer; ++begin ++ Proc (Found, Index); ++ if Found = 1 then ++ raise Program_Error; ++ end if; ++end; +Index: gcc/testsuite/gnat.dg/prot3_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/prot3_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/prot3_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++package Prot3_Pkg is ++ ++ type Rec is record ++ V1 : Short_Integer; ++ V2 : Short_Integer; ++ end record with Volatile_Full_Access; ++ ++ protected type Prot is ++ procedure Foo (J : Short_Integer); ++ private ++ Val : Rec; ++ end Prot; ++ ++ P : Prot; ++ ++end Prot3_Pkg; +Index: gcc/testsuite/gnat.dg/disp1.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/disp1.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/disp1.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++-- { dg-do run } ++ ++with Disp1_Pkg; use Disp1_Pkg; ++ ++procedure Disp1 is ++ O : DT_I1; ++ Ptr : access I1'Class; ++begin ++ Ptr := new I1'Class'(I1'Class (O)); ++end; +Index: gcc/testsuite/gnat.dg/generic_disp_pkg.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/generic_disp_pkg.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/generic_disp_pkg.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++package body Generic_Disp_Pkg is ++ ++ function Constructor (I : not null access Integer) return DT is ++ R : DT; ++ begin ++ return R; ++ end Constructor; ++ ++end Generic_Disp_Pkg; +Index: gcc/testsuite/gnat.dg/object_overflow1.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/object_overflow1.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/object_overflow1.adb (.../branches/gcc-7-branch) +@@ -1,10 +1,12 @@ + -- { dg-do compile } + ++with Interfaces.C; use Interfaces.C; ++ + procedure Object_Overflow1 is + + procedure Proc (x : Boolean) is begin null; end; + +- type Arr is array(Long_Integer) of Boolean; ++ type Arr is array(ptrdiff_t) of Boolean; + Obj : Arr; -- { dg-warning "Storage_Error" } + + begin +Index: gcc/testsuite/gnat.dg/generic_disp_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/generic_disp_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/generic_disp_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++with Ada.Tags.Generic_Dispatching_Constructor; ++ ++package Generic_Disp_Pkg is ++ type Iface is interface; ++ function Constructor (I : not null access Integer) return Iface is abstract; ++ function Dispatching_Constructor ++ is new Ada.Tags.Generic_Dispatching_Constructor ++ (T => Iface, ++ Parameters => Integer, ++ Constructor => Constructor); ++ type DT is new Iface with null record; ++ overriding ++ function Constructor (I : not null access Integer) return DT; ++end Generic_Disp_Pkg; +Index: gcc/testsuite/gnat.dg/prot3.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/prot3.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/prot3.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++-- { dg-do run } ++ ++with Prot3_Pkg; use Prot3_Pkg; ++ ++procedure Prot3 is ++begin ++ P.Foo (4); ++end; +Index: gcc/testsuite/gnat.dg/disp2.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/disp2.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/disp2.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++-- { dg-do run } ++ ++with Disp2_Pkg; use Disp2_Pkg; ++ ++procedure Disp2 is ++ Obj : Object_Ptr := new Object; ++begin ++ if Obj.Get_Ptr /= Obj.Impl_Of then ++ raise Program_Error; ++ end if; ++end; +Index: gcc/testsuite/gnat.dg/object_overflow2.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/object_overflow2.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/object_overflow2.adb (.../branches/gcc-7-branch) +@@ -1,10 +1,12 @@ + -- { dg-do compile } + ++with Interfaces.C; use Interfaces.C; ++ + procedure Object_Overflow2 is + + procedure Proc (x : Boolean) is begin null; end; + +- type Arr is array(0 .. Long_Integer'Last) of Boolean; ++ type Arr is array(0 .. ptrdiff_t'Last) of Boolean; + Obj : Arr; -- { dg-warning "Storage_Error" } + + begin +Index: gcc/testsuite/gnat.dg/object_overflow3.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/object_overflow3.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/object_overflow3.adb (.../branches/gcc-7-branch) +@@ -1,10 +1,12 @@ + -- { dg-do compile } + ++with Interfaces.C; use Interfaces.C; ++ + procedure Object_Overflow3 is + + procedure Proc (x : Boolean) is begin null; end; + +- type Arr is array(0 .. Long_Integer'Last) of Boolean; ++ type Arr is array(0 .. ptrdiff_t'Last) of Boolean; + + type Rec is record + A : Arr; +Index: gcc/testsuite/gnat.dg/object_overflow4.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/object_overflow4.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/object_overflow4.adb (.../branches/gcc-7-branch) +@@ -1,14 +1,16 @@ + -- { dg-do compile } + ++with Interfaces.C; use Interfaces.C; ++ + procedure Object_Overflow4 is + + procedure Proc (x : Integer) is begin null; end; + +- type Index is new Long_Integer range 0 .. Long_Integer'Last; ++ type Index_T is new ptrdiff_t range 0 .. ptrdiff_t'Last; + +- type Arr is array(Index range <>) of Integer; ++ type Arr is array(Index_T range <>) of Integer; + +- type Rec (Size: Index := 6) is record -- { dg-warning "Storage_Error" } ++ type Rec (Size: Index_T := 6) is record -- { dg-warning "Storage_Error" } + A: Arr (0..Size); + end record; + +Index: gcc/testsuite/gnat.dg/opt74_pkg.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt74_pkg.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt74_pkg.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++package body Opt74_Pkg is ++ ++ procedure Proc (Found : out Integer; Index : out Integer) is ++ begin ++ Index := 1; ++ Found := 0; ++ while (Index <= A'Last) and (Found = 0) loop ++ if A (Index) = 2 then ++ Found := 1; ++ else ++ Index := Index + 1; ++ end if; ++ end loop; ++ end; ++ ++end Opt74_Pkg; +Index: gcc/testsuite/gnat.dg/opt74_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt74_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt74_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++package Opt74_Pkg is ++ ++ A : array (1 .. 10) of Integer := (others => 0); ++ ++ procedure Proc (Found : out Integer; Index : out Integer); ++ ++end Opt74_Pkg; +Index: gcc/testsuite/gnat.dg/object_overflow5.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/object_overflow5.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/object_overflow5.adb (.../branches/gcc-7-branch) +@@ -1,14 +1,16 @@ + -- { dg-do compile } + ++with Interfaces.C; use Interfaces.C; ++ + procedure Object_Overflow5 is + + procedure Proc (c : Character) is begin null; end; + +- type Index is new Long_Integer range 0 .. Long_Integer'Last; ++ type Index_T is new ptrdiff_t range 0 .. ptrdiff_t'Last; + +- type Arr is array(Index range <>) of Character; ++ type Arr is array(Index_T range <>) of Character; + +- type Rec (Size: Index := 6) is record -- { dg-warning "Storage_Error" } ++ type Rec (Size: Index_T := 6) is record -- { dg-warning "Storage_Error" } + A: Arr (0..Size); + end record; + +Index: gcc/testsuite/gnat.dg/array11.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/array11.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/array11.adb (.../branches/gcc-7-branch) +@@ -1,15 +1,17 @@ + -- { dg-do compile } + ++with System; ++ + procedure Array11 is + + type Rec is null record; +- type Ptr is access all Rec; ++ type Index_T is mod System.Memory_Size; + +- type Arr1 is array (1..8) of aliased Rec; -- { dg-warning "padded" } +- type Arr2 is array (Long_Integer) of aliased Rec; -- { dg-warning "padded" } ++ type Arr1 is array (1 .. 8) of aliased Rec; -- { dg-warning "padded" } ++ type Arr2 is array (Index_T) of aliased Rec; -- { dg-warning "padded" } + + A1 : Arr1; +- A2 : Arr2; -- { dg-warning "Storage_Error" } ++ A2 : Arr2; + + begin + null; +Index: gcc/testsuite/gnat.dg/aggr24_pkg.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/aggr24_pkg.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/aggr24_pkg.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++package body Aggr24_Pkg is ++ ++ procedure Init (R : out Rec) is ++ begin ++ R := (I1 => 0, ++ I2 => 0, ++ I3 => 0, ++ I4 => 0, ++ I5 => 0, ++ I6 => 0, ++ I7 => 0, ++ S => <>); ++ end; ++ ++end Aggr24_Pkg; +Index: gcc/testsuite/gnat.dg/aggr24_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/aggr24_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/aggr24_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++package Aggr24_Pkg is ++ ++ type Rec is record ++ I1 : Integer; ++ I2 : Integer; ++ I3 : Integer; ++ I4 : Integer; ++ I5 : Integer; ++ I6 : Integer; ++ I7 : Integer; ++ S : String (1 .. 5); ++ end record; ++ ++ procedure Init (R : out Rec); ++ ++end Aggr24_Pkg; +Index: gcc/testsuite/gnat.dg/disp1_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/disp1_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/disp1_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++package Disp1_Pkg is ++ ++ type I1 is interface; ++ type DT_I1 is new I1 with null record; ++ ++end Disp1_Pkg; +Index: gcc/testsuite/gnat.dg/aggr24.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/aggr24.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/aggr24.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++-- { dg-do run } ++ ++with Aggr24_Pkg; use Aggr24_Pkg; ++ ++procedure Aggr24 is ++ V : Rec; ++begin ++ V.S := "Hello"; ++ Init (V); ++ if V.S /= "Hello" then ++ raise Program_Error; ++ end if; ++end; +Index: gcc/testsuite/gnat.dg/disp2_pkg.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/disp2_pkg.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/disp2_pkg.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++package body Disp2_Pkg is ++ ++ function Impl_Of (Self : access Object) return Object_Ptr is ++ begin ++ return Object_Ptr (Self); ++ end Impl_Of; ++ ++end Disp2_Pkg; +Index: gcc/testsuite/gnat.dg/disp2_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/disp2_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/disp2_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++package Disp2_Pkg is ++ ++ type Object is tagged null record; ++ type Object_Ptr is access all Object'CLASS; ++ ++ function Impl_Of (Self : access Object) return Object_Ptr; ++ function Get_Ptr (Self : access Object) return Object_Ptr ++ renames Impl_Of; ++ ++end Disp2_Pkg; ++ +Index: gcc/testsuite/gnat.dg/discr53.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/discr53.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/discr53.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++-- { dg-do compile } ++ ++package body Discr53 is ++ ++ function F return Rec is ++ Data : Rec; ++ begin ++ return Data; ++ end; ++ ++ type Ptr is access Rec; ++ ++ procedure Proc is ++ Local : Ptr; ++ begin ++ Local := new Rec'(F); ++ end; ++ ++end Discr53; +Index: gcc/testsuite/gnat.dg/discr53.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/discr53.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/discr53.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++with Discr53_Pkg; ++ ++package Discr53 is ++ ++ type Rec (D : Boolean := False) is record ++ case D is ++ when True => S : String (1 .. Discr53_Pkg.Max); ++ when False => null; ++ end case; ++ end record; ++ ++ function F return Rec; ++ ++ procedure Proc; ++ ++end Discr53; +Index: gcc/testsuite/gnat.dg/null_pointer_deref1.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/null_pointer_deref1.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/null_pointer_deref1.adb (.../branches/gcc-7-branch) +@@ -1,5 +1,4 @@ + -- { dg-do run } +--- { dg-options "-gnatp" } + + -- This test requires architecture- and OS-specific support code for unwinding + -- through signal frames (typically located in *-unwind.h) to pass. Feel free +@@ -6,6 +5,9 @@ + -- to disable it if this code hasn't been implemented yet. + + procedure Null_Pointer_Deref1 is ++ ++ pragma Suppress (All_Checks); ++ + type Int_Ptr is access all Integer; + + function Ident return Int_Ptr is +@@ -17,5 +19,5 @@ + begin + Data.all := 1; + exception +- when Constraint_Error | Storage_Error => null; ++ when others => null; + end; +Index: gcc/testsuite/gnat.dg/specs/opt3.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/specs/opt3.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/specs/opt3.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++-- { dg-do compile } ++-- { dg-options "-O3" } ++ ++with Ada.Containers.Vectors; ++with Opt3_Pkg; ++ ++package Opt3 is ++ ++ type Arr is array (1 .. Opt3_Pkg.Max) of Integer; ++ ++ package Arr_Container is new Ada.Containers.Vectors (Natural, Arr); ++ ++end Opt3; +Index: gcc/testsuite/gnat.dg/specs/opt3_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/specs/opt3_pkg.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/specs/opt3_pkg.ads (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++-- { dg-excess-errors "no code generated" } ++ ++package Opt3_Pkg is ++ ++ function Max return Natural; ++ ++end Opt3_Pkg; +Index: gcc/testsuite/gnat.dg/null_pointer_deref2.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/null_pointer_deref2.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/null_pointer_deref2.adb (.../branches/gcc-7-branch) +@@ -1,5 +1,4 @@ + -- { dg-do run } +--- { dg-options "-gnatp" } + + -- This test requires architecture- and OS-specific support code for unwinding + -- through signal frames (typically located in *-unwind.h) to pass. Feel free +@@ -7,6 +6,8 @@ + + procedure Null_Pointer_Deref2 is + ++ pragma Suppress (All_Checks); ++ + task T; + + task body T is +@@ -20,7 +21,7 @@ + begin + Data.all := 1; + exception +- when Constraint_Error | Storage_Error => null; ++ when others => null; + end T; + + begin +Index: gcc/testsuite/gnat.dg/discr55.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/discr55.adb (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/discr55.adb (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++-- { dg-do run } ++ ++procedure Discr55 is ++ ++ type Rec (C : Character) is record ++ case C is ++ when 'Z' .. Character'Val (128) => I : Integer; ++ when others => null; ++ end case; ++ end record; ++ ++ R : Rec ('Z'); ++ ++begin ++ R.I := 0; ++end; +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1MB -ftrack-macro-expansion=0" } */ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ __SIZE_TYPE__ n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = 1000 * 1000; /* 1 megabyte (MB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1000001. exceeds maximum object size 1000000" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size 1000000" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size 1000000" } */ ++} +Index: gcc/testsuite/gcc.dg/pr83985.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr83985.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr83985.c (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++/* PR rtl-optimization/83985 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++/* { dg-additional-options "-mcpu=e300c3 -mtune=e300c3" { target { powerpc*-*-* && ilp32 } } } */ ++ ++long long int v; ++ ++void ++foo (int x) ++{ ++ if (x == 0) ++ return; ++ ++ while (v < 2) ++ { ++ signed char *a; ++ v /= x; ++ a = v == 0 ? (signed char *) &x : (signed char *) &v; ++ ++*a; ++ ++v; ++ } ++ ++ while (1) ++ ; ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile { target lp64 } } ++ { dg-options "-O -Walloc-size-larger-than=1PiB -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = (size_t)1024 * 1024 * 1024 * 1024 * 1024; /* 1 pebibyte (PiB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1125899906842625. exceeds maximum object size 1125899906842624" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile { target lp64 } } ++ { dg-options "-O -Walloc-size-larger-than=1TB -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = (size_t)1000 * 1000 * 1000 * 1000; /* 1 terabyte (TB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1000000000001. exceeds maximum object size 1000000000000" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=123456789123456789123456789123456789 -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++/* Verify that an exceedingly large -Walloc-size-larger-than argument ++ with no suffix is accepted and treated as infinite. */ ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); ++ ++ n = __SIZE_MAX__ - 1; ++ T (__builtin_malloc (n)); ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); ++} +Index: gcc/testsuite/gcc.dg/pr84628.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84628.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84628.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++/* PR ipa/84628 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int f0 (void); ++__attribute__((error ("err"))) void f1 (void) { f0 (); f0 (); } ++__attribute__((error ("err"))) void f2 (void) { f0 (); f0 (); } ++/* { dg-bogus "declared with attribute error" "" { target *-*-* } 0 } */ +Index: gcc/testsuite/gcc.dg/pr84853.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84853.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84853.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* PR c/84853 */ ++/* { dg-do compile } */ ++ ++typedef float V __attribute__((__vector_size__ (16))); ++typedef int W __attribute__((__vector_size__ (16))); ++ ++void ++foo (int x, V *y, V *z, W *w) ++{ ++ *y = *y << x; /* { dg-error "invalid operands to binary <<" } */ ++ *z = *z << *w; /* { dg-error "invalid operands to binary <<" } */ ++} ++ ++void ++bar (int x, V *y, V *z, W *w) ++{ ++ *y = *y >> x; /* { dg-error "invalid operands to binary >>" } */ ++ *z = *z >> *w; /* { dg-error "invalid operands to binary >>" } */ ++} +Index: gcc/testsuite/gcc.dg/nested-func-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/nested-func-11.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/nested-func-11.c (.../branches/gcc-7-branch) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-omit-frame-pointer" } */ ++ ++int __attribute__((noclone,noinline)) foo (int i) ++{ ++ int a; ++ ++ void __attribute__((noclone,noinline)) nested2 (int i) ++ { ++ a = i; ++ } ++ ++ void __attribute__((noclone,noinline)) nested1 (int i) ++ { ++ int b[32]; ++ ++ for (int j = 0; j < 32; j++) ++ b[j] = i + j; ++ ++ nested2 (b[i]); ++ } ++ ++ nested1 (i); ++ ++ return a; ++} ++ ++int main (void) ++{ ++ if (foo (4) != 8) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1KiB -ftrack-macro-expansion=0" } ++*/ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ unsigned n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = 1024; /* 1 kibibyte (KB or KiB) */ ++ T (__builtin_malloc (n)); ++ ++ n = 1025; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1025. exceeds maximum object size 1024" } */ ++} +Index: gcc/testsuite/gcc.dg/cpp/trad/pr69869.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/cpp/trad/pr69869.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/cpp/trad/pr69869.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++/* PR preprocessor/69869 */ ++/* { dg-do preprocess } */ ++/* { dg-options "-traditional-cpp" } */ ++ ++#define C(a,b)a/**/b ++C (foo/,**/) ++C (foo/,*) ++/* { dg-error "unterminated comment" "" {target "*-*-*"} .-1 } */ +Index: gcc/testsuite/gcc.dg/pr83605.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr83605.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr83605.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* PR tree-optimization/83605 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -ftrapv -fexceptions -fnon-call-exceptions" } */ ++ ++int a; ++ ++int ++foo (int x) ++{ ++ int b = a; ++ { ++ int c; ++ int *d = (x == 0) ? &c : &b; ++ ++ for (a = 0; a < 2; ++a) ++ c = (x + b) < a; ++ ++ return *d; ++ } ++} +Index: gcc/testsuite/gcc.dg/pr85430.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr85430.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr85430.c (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++/* PR target/85430 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-tree-ccp -fno-tree-fre" } */ ++ ++typedef char V __attribute__((vector_size (4))); ++ ++V ++foo (V v) ++{ ++ v[(V){}[0]] <<= 1; ++ return v; ++} +Index: gcc/testsuite/gcc.dg/rtl/x86_64/final.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/rtl/x86_64/final.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/rtl/x86_64/final.c (.../branches/gcc-7-branch) +@@ -1,5 +1,5 @@ + /* { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } */ +-/* { dg-options "-fdump-rtl-final" } */ ++/* { dg-options "-fdwarf2-cfi-asm -fdump-rtl-final" } */ + + /* Lightly-modified dump of test.c.304r.dwarf2 for x86_64 target, + with various NOTE_INSN_CFI deleted by hand for now. */ +Index: gcc/testsuite/gcc.dg/pr84875.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84875.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84875.c (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++/* PR debug/84875 */ ++/* { dg-do compile } */ ++/* { dg-options "-Os" } */ ++/* { dg-additional-options "-fpie" { target pie } } */ ++/* { dg-additional-options "-march=z196" { target s390*-*-* } } */ ++ ++static long *a[100]; ++static int b[100]; ++long *c; ++int d; ++void foo (long *); ++ ++void ++bar () ++{ ++ long *g = c; ++ g--; ++ d = *g; ++ if (d) ++ if (b[d] < 8) ++ { ++ *(void **)g = a[d]; ++ a[d] = g; ++ b[d]++; ++ return; ++ } ++ foo (g); ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1GiB -ftrack-macro-expansion=0" } */ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ __SIZE_TYPE__ n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = 1024 * 1024 * 1024; /* 1 gigibyte (GiB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1073741825. exceeds maximum object size 1073741824" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/pr83986.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr83986.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr83986.c (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* PR rtl-optimization/83986 */ ++/* { dg-do compile } */ ++/* { dg-options "-g -O2 -fsched2-use-superblocks -funwind-tables --param max-pending-list-length=1" } */ ++ ++int v; ++ ++int ++foo (int x) ++{ ++ v &= !!v && !!x; ++ if (v != 0) ++ foo (0); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c (.../branches/gcc-7-branch) +@@ -3,9 +3,8 @@ + the build not reproducible. Other skipped options could be tested here + as well. */ + /* { dg-do compile } */ +-/* { dg-options "-O2 -gdwarf -dA -fdebug-prefix-map=a=b" } */ +-/* { dg-final { scan-assembler "DW_AT_producer: \"GNU C" { target { { { ! *-*-solaris2* } || gas } && { { ! hppa*64*-*-* } && { ! powerpc-ibm-aix* } } } } } } */ +-/* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" { target { { *-*-solaris2* && { ! gas } } || { hppa*64*-*-* } } } } } */ ++/* { dg-options "-O2 -gdwarf -dA -fno-merge-debug-strings -fdebug-prefix-map=a=b" } */ ++/* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" } } */ + /* { dg-final { scan-assembler-not "debug-prefix-map" } } */ + + void func (void) +Index: gcc/testsuite/gcc.dg/debug/pr85252.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/debug/pr85252.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/debug/pr85252.c (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++/* PR debug/85252 */ ++/* { dg-do compile } */ ++ ++void ++foo (void) ++{ ++ static char a[0] = ""; ++ static char b[0] = "b"; /* { dg-warning "initializer-string for array of chars is too long" } */ ++ static char c[1] = "c"; ++ static char d[1] = "de"; /* { dg-warning "initializer-string for array of chars is too long" } */ ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile { target lp64 } } ++ { dg-options "-O -Walloc-size-larger-than=1PB -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = (size_t)1000 * 1000 * 1000 * 1000 * 1000; /* 1 petabyte (PB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1000000000000001. exceeds maximum object size 1000000000000000" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/pr84607.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84607.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84607.c (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++/* { dg-do run } */ ++ ++extern void exit(int); ++extern void abort(void); ++int a[10]; ++int foo() ++{ ++ exit (0); ++ return 0; ++} ++int main() ++{ ++ if (&a[foo()]) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr85859.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr85859.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr85859.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do run } */ ++/* { dg-options "-ftree-tail-merge -Wno-div-by-zero -O2 -fno-dce -fno-isolate-erroneous-paths-dereference -fno-tree-dce -fno-tree-vrp" } */ ++ ++int b, c, d, e; ++ ++__attribute__ ((noinline, noclone)) ++int foo (short f) ++{ ++ f %= 0; ++ return f; ++} ++ ++int ++main (void) ++{ ++ b = (unsigned char) __builtin_parity (d); ++ e ? foo (0) : (long) &c; ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr82916.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr82916.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr82916.c (.../branches/gcc-7-branch) +@@ -0,0 +1,47 @@ ++/* PR bootstrap/82916 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-tree-dse" } */ ++ ++struct A { struct A *next; }; ++struct C ++{ ++ int *of; ++ struct C *parent, *prev, *next; ++ int depth; ++ int min; ++ struct C *min_occ; ++}; ++ ++__attribute__((noinline, noclone)) struct C * ++foo (int *node) ++{ ++ struct A *p = __builtin_malloc (sizeof (struct C)); ++ if (!p) ++ return 0; ++ p->next = 0; ++ /* Originally placement new. */ ++ struct C *nw = (struct C *)(void *)p; ++ nw->of = node; ++ nw->parent = 0; ++ nw->prev = 0; ++ nw->next = 0; ++ nw->depth = 0; ++ nw->min_occ = nw; ++ nw->min = 0; ++ return nw; ++} ++ ++int ++main () ++{ ++ int o; ++ struct C *p = foo (&o); ++ if (p) ++ { ++ if (p->of != &o || p->parent || p->prev || p->next || p->depth ++ || p->min || p->min_occ != p) ++ __builtin_abort (); ++ } ++ __builtin_free (p); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr86076.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr86076.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr86076.c (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++/* { dg-do compile { target pthread } } */ ++/* { dg-options "-O2 -ftree-parallelize-loops=2 -fno-tree-dce -fno-tree-pre -fno-tree-vrp --param max-loop-header-insns=1" } */ ++ ++int __attribute__ ((noinline)) ++lv (int tm) ++{ ++ (void) tm; ++ ++ return 0; ++} ++ ++void ++o7 (int uu) ++{ ++ while (uu < 1) ++ while (uu != 0) ++ { ++ short int ca; ++ ++ ca = lv (0); ++ (void) ca; ++ ++uu; ++ } ++ ++ lv (lv (0)); ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=123456789123456789123456789123456789gb -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++/* Verify that an exceeingly large -Walloc-size-larger-than argument ++ with a valid suffic is accepted and treated as infinite. */ ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); ++ ++ n = __SIZE_MAX__ - 1; ++ T (__builtin_malloc (n)); ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); ++} +Index: gcc/testsuite/gcc.dg/ubsan/bounds-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/ubsan/bounds-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/ubsan/bounds-3.c (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ + /* PR sanitizer/70875 */ + /* { dg-do run } */ +-/* { dg-options "-fsanitize=bounds" } */ ++/* { dg-options "-fsanitize=bounds -fno-sanitize-recover=bounds" } */ ++/* { dg-shouldfail "ubsan" } */ + + int + foo (int n, int k) +Index: gcc/testsuite/gcc.dg/pr81228.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr81228.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr81228.c (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* PR target/81228. */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fdump-tree-ssa" } */ ++ ++void *a; ++ ++void b () ++{ ++ char c; ++ long d; ++ char *e = a; ++ for (; d; d++) ++ { ++ double f, g; ++ c = g < f || g > f; ++ e[d] = c; ++ } ++} ++ ++/* Let's make sure we do have a LTGT. */ ++/* { dg-final { scan-tree-dump "<>" "ssa" } } */ +Index: gcc/testsuite/gcc.dg/pr85300.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr85300.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr85300.c (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++/* PR rtl-optimization/85300 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -g -funroll-all-loops -fno-tree-ter -fno-web" } */ ++ ++void ++foo (double x, unsigned char y) ++{ ++ while ((int) x < 1) ++ { ++ float a; ++ ++ a = y | 0x100; ++ y = 0; ++ x = a; ++ } ++} +Index: gcc/testsuite/gcc.dg/pr85529.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr85529.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr85529.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* PR tree-optimization/85529 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-ssa-phiopt" } */ ++ ++__attribute__((noinline, noclone)) int ++foo (int x) ++{ ++ x &= 31; ++ x -= 25; ++ x *= 2; ++ if (x < 0) ++ return 1; ++ int y = x >> 2; ++ if (x >= y) ++ return 1; ++ return 0; ++} ++ ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 63; i++) ++ if (foo (i) != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr84941.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84941.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84941.c (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++/* PR inline-asm/84941 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++void ++foo (void) ++{ ++ short *b[1] = { 0 }; ++ asm volatile ("" : "=m,m" (b), "=r,r" (b) : "1,p" (b)); ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than.c (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-Walloc-size-larger-than=0 -ftrack-macro-expansion=0" } */ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ T (__builtin_malloc (0)); ++ T (__builtin_malloc (1)); /* { dg-warning "argument 1 value .1. exceeds maximum object size 0" } */ ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1kB -ftrack-macro-expansion=0" } */ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ unsigned n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = 1000; /* 1 kilobyte (kB, not to be confused with KB or KiB) */ ++ T (__builtin_malloc (n)); ++ ++ n = 1001; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1001. exceeds maximum object size 1000" } */ ++} +Index: gcc/testsuite/gcc.dg/pr87024.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr87024.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr87024.c (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O -fno-tree-dce" } */ ++ ++static inline void __attribute__((always_inline)) ++mp () ++{ ++ (void) __builtin_va_arg_pack_len (); ++} ++ ++void ++ui (void) ++{ ++ mp (); ++} +Index: gcc/testsuite/gcc.dg/pr84956.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84956.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84956.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* { dg-options "-O2 -ftree-tail-merge" } */ ++ ++char a; ++int c; ++unsigned b (); ++ ++unsigned ++setjmp () ++{ ++} ++ ++static void ++d () ++{ ++ if (b ()) ++ c = 3; ++} ++ ++void ++e () ++{ ++ d (); ++ a && ({ setjmp (); }); ++ a && ({ setjmp (); }); ++ a && ({ setjmp (); }); ++} ++ +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1GB -ftrack-macro-expansion=0" } */ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ __SIZE_TYPE__ n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = 1000 * 1000 * 1000; /* 1 gigabyte (GB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1000000001. exceeds maximum object size 1000000000" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile { target lp64 } } ++ { dg-options "-O -Walloc-size-larger-than=1EiB -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = (size_t)1024 * 1024 * 1024 * 1024 * 1024 * 1024; /* 1 exbibyte (EiB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1152921504606846977. exceeds maximum object size 1152921504606846976" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/pr85257.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr85257.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr85257.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* PR tree-optimization/85257 */ ++/* { dg-do run { target int128 } } */ ++/* { dg-options "-O2 -fno-tree-ccp" } */ ++ ++typedef __int128 V __attribute__ ((__vector_size__ (16 * sizeof (__int128)))); ++ ++__int128 __attribute__ ((noinline, noclone)) ++foo (void) ++{ ++ V v = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; ++ return v[5]; ++} ++ ++int ++main () ++{ ++ if (foo () != 6) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1zb -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++/* Verify that an invalid -Walloc-size-larger-than argument is diagnosed ++ and rejected without changing the default setting of PTRDIFF_MAX. */ ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__ - 1; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} ++ ++/* { dg-warning "invalid argument .1zb. to .-Walloc-size-larger-than=." "" { target *-*-* } 0 } */ +Index: gcc/testsuite/gcc.dg/pr84503-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84503-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84503-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,68 @@ ++/* PR tree-optimization/84503 */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++typedef __UINTPTR_TYPE__ uintptr_t; ++ ++struct S { int a; unsigned short b; int c, d, e; long f, g, h; int i, j; }; ++static struct S *k; ++static size_t l = 0; ++int m; ++ ++static int ++bar (void) ++{ ++ unsigned i; ++ int j; ++ if (k[0].c == 0) ++ { ++ ++m; ++ size_t n = l * 2; ++ struct S *o; ++ o = (struct S *) __builtin_realloc (k, sizeof (struct S) * n); ++ if (!o) ++ __builtin_exit (0); ++ k = o; ++ for (i = l; i < n; i++) ++ { ++ void *p = (void *) &k[i]; ++ int q = 0; ++ size_t r = sizeof (struct S); ++ if ((((uintptr_t) p) % __alignof__ (long)) == 0 ++ && r % sizeof (long) == 0) ++ { ++ long __attribute__ ((may_alias)) *s = (long *) p; ++ long *t = (long *) ((char *) s + r); ++ while (s < t) ++ *s++ = 0; ++ } ++ else ++ __builtin_memset (p, q, r); ++ k[i].c = i + 1; ++ k[i].a = -1; ++ } ++ k[n - 1].c = 0; ++ k[0].c = l; ++ l = n; ++ } ++ j = k[0].c; ++ k[0].c = k[j].c; ++ return j; ++} ++ ++int ++main () ++{ ++ k = (struct S *) __builtin_malloc (sizeof (struct S)); ++ if (!k) ++ __builtin_exit (0); ++ __builtin_memset (k, '\0', sizeof (struct S)); ++ k->a = -1; ++ l = 1; ++ for (int i = 0; i < 15; ++i) ++ bar (); ++ if (m != 4) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/lto/pr81440.h +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr81440.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr81440.h (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++typedef struct { ++ int i; ++ int ints[]; ++} struct_t; +Index: gcc/testsuite/gcc.dg/lto/pr81440_0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr81440_0.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr81440_0.c (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++/* { dg-lto-do link } */ ++ ++#include "pr81440.h" ++ ++extern struct_t my_struct; ++ ++int main() { ++ return my_struct.ints[0]; ++} +Index: gcc/testsuite/gcc.dg/lto/pr85248_0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr85248_0.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr85248_0.c (.../branches/gcc-7-branch) +@@ -0,0 +1,45 @@ ++/* PR lto/85248 */ ++/* { dg-lto-do run } */ ++/* { dg-lto-options { { -flto -O2 } } } */ ++ ++extern void test_alias (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test"); ++extern void test_noreturn (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test") ++ __attribute__ ((__noreturn__)); ++ ++extern inline __attribute__ ((__always_inline__, __gnu_inline__)) void ++test (int s, int e) ++{ ++ if (__builtin_constant_p (s) && s != 0) ++ test_noreturn (s, e); ++ else ++ test_alias (s, e); ++} ++ ++int ++foo (void) ++{ ++ static volatile int a; ++ return a; ++} ++ ++static void ++bar (void) ++{ ++ test (0, 1); ++ __builtin_exit (0); ++} ++ ++static void ++baz () ++{ ++ test (1, 0); ++} ++ ++int ++main () ++{ ++ if (foo ()) ++ baz (); ++ bar (); ++ __builtin_abort (); ++} +Index: gcc/testsuite/gcc.dg/lto/pr83954_0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr83954_0.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr83954_0.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++/* { dg-lto-do link } */ ++#include "pr83954.h" ++ ++int main() { ++ // just to prevent symbol removal ++ FOO_PTR_ARR[1] = 0; ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/lto/pr81440_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr81440_1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr81440_1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++#include "pr81440.h" ++ ++struct_t my_struct = { ++ 20, ++ { 1, 2 } ++}; +Index: gcc/testsuite/gcc.dg/lto/pr83954.h +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr83954.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr83954.h (.../branches/gcc-7-branch) +@@ -0,0 +1,3 @@ ++struct foo; ++extern struct foo *FOO_PTR_ARR[1]; ++ +Index: gcc/testsuite/gcc.dg/lto/pr85248_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr85248_1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr85248_1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++/* { dg-options "-fno-lto" } */ ++ ++void ++test (int s, int e) ++{ ++ asm volatile ("" : "+g" (s), "+g" (e) : : "memory"); ++ if (s) ++ __builtin_abort (); ++} +Index: gcc/testsuite/gcc.dg/lto/pr83954_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr83954_1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr83954_1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++#include "pr83954.h" ++ ++struct foo { ++ int x; ++}; ++struct foo *FOO_PTR_ARR[1] = { 0 }; ++ +Index: gcc/testsuite/gcc.dg/pr84739.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84739.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84739.c (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++/* PR tree-optimization/84739 */ ++/* { dg-do compile } */ ++/* { dg-require-weak "" } */ ++/* { dg-options "-O2 -w" } */ ++ ++static void baz (void) __attribute__((weakref("bar"))); ++ ++int ++foo (int x, int y) ++{ ++ if (x) ++ y = 0; ++ if (y) ++ goto lab; ++ y = 0; ++lab: ++ return y; ++} ++ ++void ++bar (int x, int y) ++{ ++ y = foo (x, y); ++ if (y != 0) ++ baz (); ++} +Index: gcc/testsuite/gcc.dg/torture/pr87645.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr87645.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr87645.c (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++ ++typedef unsigned a[8]; ++a b, g; ++int c, d, e, f; ++int h() { ++ unsigned i = 2; ++ for (; i < 8; i++) ++ b[i] = 0; ++ for (; f;) { ++ d = 1; ++ for (; d < 14; d += 3) { ++ e = 0; ++ for (; e < 8; e++) { ++ i = 2; ++ for (; i < 8; i++) ++ b[i] = 5 - (c - g[e] + b[i]); ++ } ++ } ++ } ++} +Index: gcc/testsuite/gcc.dg/torture/pr85244-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85244-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85244-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++struct s { ++ long a; ++ int b; ++ int tab[]; ++}; ++ ++int idx = 1; ++const struct s val = { 0, 0, { 42, 1337 } }; +Index: gcc/testsuite/gcc.dg/torture/pr87665.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr87665.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr87665.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* { dg-do run } */ ++ ++struct X { long x; long y; }; ++ ++struct X a[1024], b[1024]; ++ ++void foo () ++{ ++ for (int i = 0; i < 1024; ++i) ++ { ++ long tem = a[i].x; ++ a[i].x = 0; ++ b[i].x = tem; ++ b[i].y = a[i].y; ++ } ++} ++ ++int main() ++{ ++ for (int i = 0; i < 1024; ++i) ++ a[i].x = i; ++ foo (); ++ for (int i = 0; i < 1024; ++i) ++ if (b[i].x != i) ++ __builtin_abort(); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr85168.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85168.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85168.c (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target indirect_jumps } */ ++ ++typedef struct { ++ struct { ++ char a; ++ } b; ++} c; ++ ++int d, f; ++c *e; ++ ++extern void i(void); ++extern void sejtmp () __attribute__((returns_twice)); ++ ++void g(void) ++{ ++ c *h = e; ++ if (f) ++ { ++ i(); ++ h--; ++ if (d) ++ if (h->b.a) ++ i(); ++ } ++ if (h->b.a) ++ sejtmp(); ++ e = h; ++} +Index: gcc/testsuite/gcc.dg/torture/pr85284.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85284.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85284.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* { dg-do run } */ ++ ++static int p[48], v; ++ ++int ++main () ++{ ++ p[32] = 1; ++ for (int i = 48; i--;) ++ { ++ if (!p[i]) ++ continue; ++ if ((i & 7) > 2) ++ break; ++ v = i & 1; ++ } ++ if (v != 0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr57656.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr57656.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr57656.c (.../branches/gcc-7-branch) +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-fstrict-overflow" } */ ++/* { dg-additional-options "-fstrict-overflow" } */ + + int main (void) + { +Index: gcc/testsuite/gcc.dg/torture/pr85989.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85989.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85989.c (.../branches/gcc-7-branch) +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++ ++#define N 9 ++ ++void __attribute__((noinline, noclone)) ++f (double x, double y, double *res) ++{ ++ y = -y; ++ for (int i = 0; i < N; ++i) ++ { ++ double tmp = y; ++ y = x; ++ x = tmp; ++ res[i] = i; ++ } ++ res[N] = y * y; ++ res[N + 1] = x; ++} ++ ++int ++main (void) ++{ ++ double res[N + 2]; ++ f (10, 20, res); ++ for (int i = 0; i < N; ++i) ++ if (res[i] != i) ++ __builtin_abort (); ++ if (res[N] != 100 || res[N + 1] != -20) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr85244-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85244-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85244-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do run } */ ++/* { dg-additional-sources "pr85244-2.c" } */ ++ ++struct s { ++ long a; ++ int b; ++ int tab[]; ++}; ++ ++extern const struct s val; ++extern int idx; ++extern void abort (void); ++ ++int main() ++{ ++ if (val.tab[0] != 42 || val.tab[1] != 1337 || val.tab[idx] != 1337) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr85588.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85588.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85588.c (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-fwrapv" } */ ++ ++#include "pr57656.c" +Index: gcc/testsuite/gcc.dg/torture/pr86505.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr86505.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr86505.c (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++/* { dg-do run } */ ++ ++static inline __attribute__(( __always_inline__)) int ++funA(unsigned int param, ...) ++{ ++ return __builtin_va_arg_pack_len(); ++} ++ ++static inline __attribute__(( __always_inline__)) int ++funB(unsigned int param, ...) ++{ ++ return funA(param, 2, 4, __builtin_va_arg_pack()); ++} ++ ++int ++testBuiltin(void) ++{ ++ int rc = funB(0,1,2); ++ if (rc != 4) ++ return 1; ++ return 0; ++} ++ ++int ++main() ++{ ++ int rc = testBuiltin(); ++ if (rc == 1) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr79351.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr79351.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr79351.c (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++/* { dg-do run } */ ++ ++static struct state { ++ int k; ++ int dummy; ++} states[256]; ++ ++__attribute((noinline)) ++static void ++ismatch(int n) ++{ ++ for (int j=0; j 8) __builtin_unreachable (); ++ if (y >= 2 && y <= 6) __builtin_unreachable (); ++ /* x is [4, 8], y is ~[2, 6], resulting range of e should be ~[2, 3]. */ ++ int e = (z ? x : y); ++ bar (bar (bar (bar (bar (bar (bar (bar (bar (bar (bar (bar (e)))))))))))); ++ if (e == 2 || e == 3) ++ link_error (); ++ return e; ++} +Index: gcc/testsuite/gcc.dg/tls/pr83945.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tls/pr83945.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tls/pr83945.c (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* PR middle-end/83945 */ ++/* { dg-do compile { target tls } } */ ++/* { dg-options "-O2" } */ ++ ++struct S { int a[1]; }; ++__thread struct T { int c; } e; ++int f; ++void bar (int); ++ ++void ++foo (int f, int x) ++{ ++ struct S *h = (struct S *) &e.c; ++ for (;;) ++ { ++ int *a = h->a, i; ++ for (i = x; i; i--) ++ bar (a[f]); ++ bar (a[f]); ++ } ++} +Index: gcc/testsuite/gcc.dg/pr81661.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr81661.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr81661.c (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++/* PR tree-optimization/81661 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -ftrapv" } */ ++ ++int a, b, c; ++ ++void ++foo (void) ++{ ++ while (a + c > b) ++ a--; ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1MiB -ftrack-macro-expansion=0" } */ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ unsigned n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = 1024 * 1024; /* 1 mebibyte (MiB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1048577. exceeds maximum object size 1048576" } */ ++} +Index: gcc/testsuite/gcc.dg/pr86314.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr86314.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr86314.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++// PR target/86314 ++// { dg-do run { target sync_int_long } } ++// { dg-options "-O2" } ++ ++__attribute__((noinline, noclone)) unsigned long ++foo (unsigned long *p) ++{ ++ unsigned long m = 1UL << ((*p & 1) ? 1 : 0); ++ unsigned long n = __atomic_fetch_or (p, m, __ATOMIC_SEQ_CST); ++ return (n & m) == 0; ++} ++ ++int ++main () ++{ ++ unsigned long v = 1; ++ if (foo (&v) != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile { target lp64 } } ++ { dg-options "-O -Walloc-size-larger-than=1TiB -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = (size_t)1024 * 1024 * 1024 * 1024; /* 1 tebibyte (TiB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1099511627777. exceeds maximum object size 1099511627776" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/pr83930.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr83930.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr83930.c (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++/* PR target/83930 */ ++/* { dg-do compile } */ ++/* { dg-options "-Og -fno-tree-ccp -w" } */ ++ ++unsigned __attribute__ ((__vector_size__ (16))) v; ++ ++static inline void ++bar (unsigned char d) ++{ ++ v /= d; ++} ++ ++__attribute__ ((always_inline)) void ++foo (void) ++{ ++ bar (4); ++} +Index: gcc/testsuite/gcc.dg/pr85167.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr85167.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr85167.c (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++/* PR rtl-optimization/85167 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -w" } */ ++ ++struct A { long b; }; ++int c, d, e; ++int bar (void); ++ ++int ++foo (void) ++{ ++ long g; ++ for (; g == c ? 0 : (e = 1); g = ((struct A *)g)->b) ++ if (bar ()) ++ return d; ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile { target lp64 } } ++ { dg-options "-O -Walloc-size-larger-than=1EB -ftrack-macro-expansion=0" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ size_t n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = (size_t)1000 * 1000 * 1000 * 1000 * 1000 * 1000; /* 1 exabyte (EB) */ ++ T (__builtin_malloc (n)); ++ ++ n += 1; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1000000000000000001. exceeds maximum object size 1000000000000000000" } */ ++ ++ n = __PTRDIFF_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++ ++ n = __SIZE_MAX__; ++ T (__builtin_malloc (n)); /* { dg-warning "exceeds maximum object size" } */ ++} +Index: gcc/testsuite/gcc.dg/pr84899.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84899.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84899.c (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++/* PR target/84899 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -funroll-all-loops -fno-move-loop-invariants" } */ ++ ++void ++foo (int x) ++{ ++ int a = 1 / x, b = 0; ++ ++ while ((a + b + 1) < x) ++ b = __INT_MAX__; ++} +Index: gcc/testsuite/gcc.dg/pr84841.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84841.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84841.c (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++/* PR tree-optimization/84841 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fassociative-math -frounding-math -fno-signed-zeros -fno-trapping-math -fno-tree-forwprop" } */ ++ ++double ++foo (double x) ++{ ++ return -x * 0.1 * 0.1; ++} +Index: gcc/testsuite/gcc.dg/pr84834.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84834.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84834.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* PR middle-end/84834 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++_Complex int ++foo (int a) ++{ ++ return a < 0; ++} ++ ++_Complex int ++bar (int a) ++{ ++ return (a & 8) ? (_Complex int) 16 : (_Complex int) 0; ++} +Index: gcc/testsuite/gcc.dg/pr84503-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84503-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84503-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++/* PR tree-optimization/84503 */ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fno-tree-vectorize -fno-ivopts" } */ ++ ++#include "pr84503-1.c" +Index: gcc/testsuite/gcc.dg/pr84772.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84772.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84772.c (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++/* PR target/84772 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -Wuninitialized" } */ ++ ++#include ++ ++void ++foo (int *x, int y, va_list ap) ++{ ++ __builtin_memset (x, 0, sizeof (int)); ++ for (int i = 0; i < y; i++) ++ va_arg (ap, long double); /* { dg-bogus "uninitialized" } */ ++} +Index: gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* PR middle-end/82063 - issues with arguments enabled by -Wall ++ { dg-do compile } ++ { dg-options "-O -Walloc-size-larger-than=1KB -ftrack-macro-expansion=0" } */ ++ ++void sink (void*); ++ ++#define T(x) sink (x) ++ ++void f (void) ++{ ++ unsigned n = 0; ++ T (__builtin_malloc (n)); ++ ++ n = 1024; /* 1 kibibyte (KB or KiB) */ ++ T (__builtin_malloc (n)); ++ ++ n = 1025; ++ T (__builtin_malloc (n)); /* { dg-warning "argument 1 value .1025. exceeds maximum object size 1024" } */ ++} +Index: gcc/testsuite/gcc.dg/vect/pr85597.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr85597.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr85597.c (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++/* { dg-additional-options "-mfma" { target { x86_64-*-* i?86-*-* } } } */ ++ ++extern double fma (double, double, double); ++ ++static inline void ++bar (int i, double *D, double *S) ++{ ++ while (i-- > 0) ++ { ++ D[0] = fma (1, S[0], D[0]); ++ D[1] = fma (1, S[1], D[1]); ++ D[2] = fma (1, S[2], D[2]); ++ D[3] = fma (1, S[3], D[3]); ++ D += 4; ++ S += 4; ++ } ++} ++ ++void ++foo (double *d, double *s) ++{ ++ bar (10, d, s); ++} ++ +Index: gcc/testsuite/gcc.dg/vect/pr84485.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr84485.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr84485.c (.../branches/gcc-7-branch) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++ ++#include "tree-vect.h" ++ ++#define N 256 ++ ++void __attribute__ ((noinline, noclone)) ++f (unsigned long incx, unsigned long incy, ++ float *restrict dx, float *restrict dy) ++{ ++ unsigned long ix = 0, iy = 0; ++ for (unsigned long i = 0; i < N; ++i) ++ { ++ dy[iy] += dx[ix]; ++ ix += incx; ++ iy += incy; ++ } ++} ++ ++float a = 0.0; ++float b[N]; ++ ++int ++main (void) ++{ ++ check_vect (); ++ ++ for (int i = 0; i < N; ++i) ++ b[i] = i; ++ f (1, 0, b, &a); ++ if (a != N * (N - 1) / 2) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/ChangeLog +=================================================================== +--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,1993 @@ ++2018-11-28 Richard Biener ++ ++ PR tree-optimization/79351 ++ * gcc.dg/torture/pr79351.c: New testcase. ++ ++2018-11-26 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-11-20 Andreas Krebbel ++ ++ * gcc.target/s390/flogr-1.c: New test. ++ ++2018-10-19 Richard Biener ++ ++ PR middle-end/87645 ++ Backport from mainline ++ 2018-07-12 Richard Biener ++ ++ * gcc.dg/torture/pr87645.c: New testcase. ++ ++2018-11-26 Richard Biener ++ ++ Backport from mainline ++ 2018-10-15 Richard Biener ++ ++ PR middle-end/87610 ++ * gcc.dg/torture/restrict-6.c: New testcase. ++ ++ 2018-10-25 Richard Biener ++ ++ PR tree-optimization/87665 ++ PR tree-optimization/87745 ++ * gfortran.dg/20181025-1.f: New testcase. ++ ++ 2018-10-24 Richard Biener ++ ++ PR tree-optimization/87665 ++ * gcc.dg/torture/pr87665.c: New testcase. ++ ++2018-11-26 Richard Biener ++ ++ Backport from mainline ++ 2018-06-15 Richard Biener ++ ++ PR middle-end/86076 ++ * gcc.dg/pr86076.c: New testcase. ++ ++2018-11-26 Matthias Klose ++ ++ * jit.dg/test-long-names.c: Fix build with -Wformat-security. ++ ++2018-11-25 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/88073 ++ * gfortran.dg/where_7.f90: New test. ++ ++2018-11-24 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/88143 ++ * gfortran.dg/associate_46.f90: New test. ++ ++2018-11-22 Eric Botcazou ++ ++ Backport from mainline ++ 2018-11-21 Jakub Jelinek ++ ++ PR rtl-optimization/85925 ++ * gcc.c-torture/execute/20181120-1.c: Require effective target ++ int32plus. ++ (u): New variable. ++ (main): Compare d against u.f1 rather than 0x101. Use 0x4030201 ++ instead of 0x10101. ++ ++2018-11-21 Mihail Ionescu ++ ++ PR target/87867 ++ Backport from mainiline ++ 2018-09-17 Eric Botcazou ++ ++ * g++.dg/other/thunk2a.C: New test. ++ * g++.dg/other/thunk2b.C: Likewise. ++ ++2018-11-20 Richard Biener ++ ++ Backport from mainline ++ 2018-01-26 Richard Biener ++ ++ PR rtl-optimization/84003 ++ * g++.dg/torture/pr77745.C: Mark foo noinline to trigger ++ latent bug in DSE if NOINLINE is appropriately defined. ++ * g++.dg/torture/pr77745-2.C: New testcase including pr77745.C ++ and defining NOINLINE. ++ ++2018-11-20 Eric Botcazou ++ ++ * gcc.c-torture/execute/20181120-1.c: New test. ++ ++2018-11-18 Uros Bizjak ++ ++ Backport from mainline ++ 2018-11-11 Uros Bizjak ++ ++ PR target/87928 ++ * gcc.target/i386/pr87928.c: New test. ++ ++2018-11-15 Nathan Sidwell ++ ++ PR debug/88006 ++ PR debug/87462 ++ * g++.dg/debug/dwarf2/pr87462.C: New. ++ * g++.dg/debug/dwarf2/pr88006.C: New. ++ ++2018-11-11 Uros Bizjak ++ ++ Backport from mainline ++ 2018-11-04 Uros Bizjak ++ ++ PR middle-end/58372 ++ * g++.dg/pr58372.C: New test. ++ ++2018-11-08 Eric Botcazou ++ ++ * gnat.dg/null_pointer_deref1.adb: Remove -gnatp and add pragma. ++ * gnat.dg/null_pointer_deref2.adb: Likewise. ++ * gnat.dg/null_pointer_deref3.adb: Likewise. ++ * gnat.dg/opt74.adb: New test. ++ * gnat.dg/opt74_pkg.ad[sb]: New helper. ++ * gnat.dg/warn12.adb: Delete. ++ * gnat.dg/warn12_pkg.ads: Likewise. ++ ++2018-11-03 Tobias Burnus ++ Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/87597 ++ * gfortran.dg/inline_matmul_24.f90: New. ++ ++2018-10-26 Bill Schmidt ++ ++ Backport from mainline ++ 2018-10-19 Bill Schmidt ++ ++ PR tree-optimization/87473 ++ * gcc.c-torture/compile/pr87473.c: New file. ++ ++2018-10-23 Tom de Vries ++ ++ backport from trunk: ++ 2018-07-31 Tom de Vries ++ ++ PR debug/86687 ++ * g++.dg/guality/pr86687.C: New test. ++ ++2018-10-22 Eric Botcazou ++ ++ * gnat.dg/sso14.adb: New test. ++ * gnat.dg/sso15.adb: Likewise. ++ ++2018-10-19 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-10-15 Andreas Krebbel ++ ++ * g++.dg/vec-init-1.C: New test. ++ ++2018-10-17 Eric Botcazou ++ ++ * gcc.c-torture/execute/pr87623.c: New test. ++ ++2018-10-16 Wilco Dijkstra ++ ++ Backported from mainline ++ PR target/87511 ++ * gcc.target/aarch64/pr87511.c: Add new test. ++ ++2018-10-12 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-10-10 Jakub Jelinek ++ ++ PR target/87550 ++ * gcc.target/i386/pr87550.c: New test. ++ ++ 2018-09-12 Jakub Jelinek ++ ++ PR middle-end/87248 ++ * c-c++-common/torture/pr87248.c: New test. ++ ++ 2018-08-27 Jakub Jelinek ++ ++ PR rtl-optimization/87065 ++ * gcc.target/i386/pr87065.c: New test. ++ ++ 2018-07-24 Jakub Jelinek ++ ++ PR middle-end/86627 ++ * gcc.target/i386/pr86627.c: New test. ++ ++ 2018-07-10 Jakub Jelinek ++ ++ PR fortran/86421 ++ * gfortran.dg/vect/pr86421.f90: New test. ++ ++ 2018-07-16 Jakub Jelinek ++ ++ PR c++/3698 ++ PR c++/86208 ++ * g++.dg/opt/pr3698.C: New test. ++ ++2018-10-12 Richard Biener ++ ++ Backport from mainline ++ 2018-08-23 Richard Biener ++ ++ PR middle-end/87024 ++ * gcc.dg/pr87024.c: New testcase. ++ ++ 2018-08-17 Richard Biener ++ ++ PR middle-end/86505 ++ * gcc.dg/torture/pr86505.c: New testcase. ++ ++2018-10-09 H.J. Lu ++ ++ Backport from mainline ++ 2018-09-29 H.J. Lu ++ ++ PR target/87370 ++ * gcc.target/i386/pr87370.c: New test. ++ ++2018-10-01 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-07-02 Christophe Lyon ++ ++ * gcc.target/arm/arm-soft-strd-even.c: Skip if -mfloat-abi is ++ overriden. ++ 2018-06-29 Kyrylo Tkachov ++ ++ * gcc.target/arm/arm-soft-strd-even.c: New test. ++ ++2018-09-29 Jakub Jelinek ++ ++ PR target/87467 ++ * gcc.target/i386/avx512f-abspd-1.c (SIZE): Divide by two. ++ (CALC): Use double instead of float. ++ (TEST): Adjust to test _mm512_abs_pd and _mm512_mask_abs_pd rather than ++ _mm512_abs_ps and _mm512_mask_abs_ps. ++ ++2018-09-27 Michael Meissner ++ ++ Backport from mainline ++ 2018-08-20 Michael Meissner ++ ++ PR target/87033 ++ * gcc.target/powerpc/pr87033.c: New test. ++ ++2018-09-21 Eric Botcazou ++ ++ * gcc.dg/nested-func-11.c: New test. ++ ++2018-09-13 Paul Thomas ++ ++ Backported from trunk ++ PR fortran/87284 ++ * gfortran.dg/allocate_with_mold_2.f90: New test. ++ ++2018-09-12 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-09-12 Andreas Krebbel ++ ++ * gcc.target/s390/dfp_to_bfp_rounding.c: New test. ++ ++2018-09-07 Janus Weil ++ ++ Backported from trunk ++ PR fortran/86116 ++ * gfortran.dg/generic_34.f90: New test case. ++ ++2018-09-03 Tom de Vries ++ ++ backport from trunk: ++ 2018-06-21 Tom de Vries ++ ++ PR tree-optimization/85859 ++ * gcc.dg/pr85859.c: New test. ++ ++2018-08-21 H.J. Lu ++ ++ Backport from mainline ++ 2018-08-20 H.J. Lu ++ ++ PR target/87014 ++ * g++.dg/torture/pr87014.C: New file. ++ ++2018-08-21 Szabolcs Nagy ++ ++ Backport from mainline ++ 2018-08-21 Szabolcs Nagy ++ ++ * g++.dg/torture/pr86763.C: Restrict to *-*-linux*. ++ ++2018-08-17 Richard Biener ++ ++ Backport from mainline ++ 2018-08-02 Richard Biener ++ ++ PR c++/86763 ++ * g++.dg/torture/pr86763.C: New testcase. ++ ++2018-07-17 Eric Botcazou ++ ++ * gnat.dg/discr55.adb: New test. ++ ++2018-07-16 Fritz Reese ++ ++ PR fortran/83184 ++ Backport from trunk. ++ * gfortran.dg/assumed_rank_14.f90: New testcase. ++ * gfortran.dg/assumed_rank_15.f90: New testcase. ++ * gfortran.dg/dec_structure_8.f90: Update error messages. ++ * gfortran.dg/dec_structure_23.f90: Update error messages. ++ ++2018-07-16 Fritz Reese ++ ++ Backport from trunk: ++ ++ PR fortran/83183 ++ PR fortran/86325 ++ * gfortran.dg/init_flag_18.f90: New testcase. ++ * gfortran.dg/init_flag_19.f03: New testcase. ++ ++2018-07-12 Richard Biener ++ ++ PR target/84829 ++ * gcc.target/i386/pr84829.c: New testcase. ++ ++2018-07-03 Paul Thomas ++ ++ PR fortran/82969 ++ PR fortran/86242 ++ * gfortran.dg/proc_ptr_50.f90: New test. ++ ++2018-06-26 Kelvin Nilsen ++ ++ Backported from mainline ++ 2018-06-20 Kelvin Nilsen ++ ++ * gcc.target/powerpc/builtins-1.c: Add dg directives to scan ++ for vpkudus. ++ ++2018-06-26 Jakub Jelinek ++ ++ PR target/86314 ++ * gcc.dg/pr86314.c: New test. ++ ++2018-06-25 Fritz Reese ++ ++ PR fortran/82972 ++ PR fortran/83088 ++ PR fortran/85851 ++ Backport from trunk. ++ * gfortran.dg/init_flag_17.f90: New testcase. ++ ++2018-06-25 Jakub Jelinek ++ ++ PR target/84786 ++ * gcc.target/i386/avx512f-pr84786-3.c: New test. ++ ++2018-06-25 Paul Thomas ++ ++ PR fortran/83118 ++ Back port from trunk ++ * gfortran.dg/unlimited_polymorphic_30.f03: New test. ++ ++2018-06-23 Richard Sandiford ++ ++ PR tree-optimization/85989 ++ * gcc.dg/torture/pr85989.c: New test. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-06-22 Jakub Jelinek ++ ++ PR c++/85662 ++ * g++.dg/ext/offsetof3.C: New test. ++ ++ 2018-06-20 Jakub Jelinek ++ ++ PR c++/86210 ++ * g++.dg/warn/Wnonnull4.C: New test. ++ ++ PR tree-optimization/86231 ++ * gcc.dg/tree-ssa/vrp119.c: New test. ++ * gcc.c-torture/execute/pr86231.c: New test. ++ ++ 2018-06-15 Jakub Jelinek ++ ++ PR middle-end/85878 ++ * gfortran.fortran-torture/compile/pr85878.f90: New test. ++ ++ 2018-06-14 Jakub Jelinek ++ ++ PR target/85945 ++ * gcc.c-torture/compile/pr85945.c: New test. ++ ++ 2018-06-04 Jakub Jelinek ++ ++ PR c++/86025 ++ * c-c++-common/gomp/pr86025.c: New test. ++ ++ 2018-05-29 Jakub Jelinek ++ ++ PR c++/85952 ++ * g++.dg/warn/Wunused-var-33.C: New test. ++ ++ 2018-05-11 Jakub Jelinek ++ ++ PR c/85696 ++ * c-c++-common/gomp/pr85696.c: New test. ++ ++ 2018-05-10 Jakub Jelinek ++ ++ PR c++/85662 ++ * g++.dg/ext/offsetof2.C: New test. ++ ++ 2018-05-06 Jakub Jelinek ++ ++ PR c++/85659 ++ * g++.dg/ext/asm14.C: New test. ++ * g++.dg/ext/asm15.C: New test. ++ * g++.dg/ext/asm16.C: New test. ++ ++ 2018-04-27 Jakub Jelinek ++ ++ PR tree-optimization/85529 ++ * gcc.c-torture/execute/pr85529-1.c: New test. ++ * gcc.c-torture/execute/pr85529-2.c: New test. ++ * gcc.dg/pr85529.c: New test. ++ ++ 2018-04-18 Jakub Jelinek ++ ++ PR c++/84463 ++ * g++.dg/cpp0x/constexpr-nullptr-1.C: Add -O1 to dg-options. ++ * g++.dg/cpp0x/constexpr-nullptr-2.C: Expect different diagnostics ++ in two cases. Uncomment two other tests and add expected dg-error for ++ them. ++ * g++.dg/init/struct2.C: Cast to int rather than long to avoid ++ -Wnarrowing diagnostics on some targets for c++11. ++ * g++.dg/parse/array-size2.C: Remove xfail. ++ * g++.dg/cpp0x/constexpr-84463.C: New test. ++ ++ 2018-04-17 Jakub Jelinek ++ ++ PR target/85430 ++ * gcc.dg/pr85430.c: New test. ++ ++ 2018-04-10 Jakub Jelinek ++ ++ PR rtl-optimization/85300 ++ * gcc.dg/pr85300.c: New test. ++ ++ PR fortran/85313 ++ * gfortran.dg/gomp/pr85313.f90: New test. ++ ++ 2018-04-07 Jakub Jelinek ++ ++ PR tree-optimization/85257 ++ * gcc.dg/pr85257.c: New test. ++ ++ 2018-04-06 Jakub Jelinek ++ ++ PR debug/85252 ++ * gcc.dg/debug/pr85252.c: New test. ++ ++ PR c++/85210 ++ * g++.dg/cpp1z/decomp42.C: New test. ++ ++ 2018-04-05 Jakub Jelinek ++ ++ PR c++/85208 ++ * g++.dg/cpp1z/decomp41.C: New test. ++ ++ 2018-04-04 Jakub Jelinek ++ ++ PR inline-asm/85172 ++ * g++.dg/ext/builtin13.C: New test. ++ * g++.dg/ext/atomic-4.C: New test. ++ ++ 2018-04-03 Jakub Jelinek ++ ++ PR rtl-optimization/85167 ++ * gcc.dg/pr85167.c: New test. ++ ++ PR c++/85147 ++ * g++.dg/cpp0x/pr85147.C: New test. ++ ++ PR c++/85140 ++ * g++.dg/cpp0x/gen-attrs-64.C: New test. ++ ++ 2018-03-30 Jakub Jelinek ++ ++ PR c++/84791 ++ * g++.dg/gomp/pr84791.C: New test. ++ ++ 2018-03-28 Jakub Jelinek ++ ++ PR target/85095 ++ * gcc.target/i386/pr85095-1.c: New test. ++ * gcc.target/i386/pr85095-2.c: New test. ++ * gcc.c-torture/execute/pr85095.c: New test. ++ ++ 2018-03-27 Jakub Jelinek ++ ++ PR c++/85076 ++ * g++.dg/cpp1y/pr85076.C: New test. ++ ++ PR c++/85068 ++ * g++.dg/inherit/covariant22.C: New test. ++ ++ 2018-03-23 Jakub Jelinek ++ ++ PR inline-asm/85034 ++ * gcc.target/i386/pr85034.c: New test. ++ ++ PR inline-asm/85022 ++ * c-c++-common/torture/pr85022.c: New test. ++ ++ 2018-03-22 Jakub Jelinek ++ ++ PR inline-asm/84941 ++ * gcc.dg/pr84941.c: New test. ++ ++ 2018-03-21 Jakub Jelinek ++ ++ PR c/84999 ++ * c-c++-common/pr84999.c: New test. ++ ++ PR c++/84961 ++ * c-c++-common/pr43690.c: Don't expect errors on "m" (--x) and ++ "m" (++x) in C++. ++ * g++.dg/torture/pr84961-1.C: New test. ++ * g++.dg/torture/pr84961-2.C: New test. ++ ++ 2018-03-20 Jakub Jelinek ++ ++ PR debug/84875 ++ * gcc.dg/pr84875.c: New test. ++ ++ PR c/84953 ++ * gcc.dg/pr84953.c: New test. ++ ++ 2018-03-19 Maxim Ostapenko ++ ++ PR sanitizer/78651 ++ * g++.dg/asan/pr78651.C: New test. ++ ++ 2018-03-16 Jakub Jelinek ++ ++ PR target/84899 ++ * gcc.dg/pr84899.c: New test. ++ ++ PR c++/84874 ++ * g++.dg/cpp1z/desig8.C: New test. ++ ++ PR tree-optimization/84841 ++ * gcc.dg/pr84841.c: New test. ++ ++ PR c++/84874 ++ * g++.dg/cpp1z/desig7.C: New test. ++ ++ 2018-03-15 Jakub Jelinek ++ ++ PR c++/79085 ++ * g++.dg/opt/pr79085.C: New test. ++ ++ PR c++/84222 ++ * g++.dg/warn/deprecated.C (T::member3): Change dg-warning to dg-bogus. ++ * g++.dg/warn/deprecated-6.C (T::member3): Likewise. ++ * g++.dg/warn/deprecated-13.C: New test. ++ ++ PR target/84860 ++ * gcc.c-torture/compile/pr84860.c: New test. ++ ++ PR c/84853 ++ * gcc.dg/pr84853.c: New test. ++ ++ 2018-03-13 Jakub Jelinek ++ ++ PR middle-end/84834 ++ * gcc.dg/pr84834.c: New test. ++ ++ PR target/84827 ++ * gcc.target/i386/pr84827.c: New test. ++ ++ PR target/84786 ++ * gcc.target/i386/avx512f-pr84786-1.c: New test. ++ * gcc.target/i386/avx512f-pr84786-2.c: New test. ++ ++ 2018-03-09 Jakub Jelinek ++ ++ PR target/84772 ++ * gcc.dg/pr84772.c: New test. ++ ++ 2018-03-09 Jason Merrill ++ Jakub Jelinek ++ ++ PR c++/84076 ++ * g++.dg/warn/Wformat-2.C: New test. ++ ++ 2018-03-09 Jakub Jelinek ++ ++ PR c++/84767 ++ * g++.dg/ext/vla18.C: New test. ++ ++ 2018-03-08 Jason Merrill ++ Jakub Jelinek ++ ++ PR c++/80598 ++ * g++.dg/warn/Wunused-function4.C: New test. ++ ++ 2018-03-08 Jakub Jelinek ++ ++ PR tree-optimization/84739 ++ * gcc.dg/pr84739.c: New test. ++ ++ 2018-03-05 Jakub Jelinek ++ ++ PR target/84700 ++ * gcc.target/powerpc/pr84700.c: New test. ++ ++ 2018-03-02 Jakub Jelinek ++ ++ PR c++/84662 ++ * g++.dg/cpp1y/pr84662.C: New test. ++ ++2018-06-22 Andre Vieira ++ ++ Backport from mainline ++ 2018-06-05 Andre Vieira ++ ++ * gcc.target/arm/cmse/cmse-1c99.c: New test. ++ ++2018-06-19 Eric Botcazou ++ ++ * gnat.dg/aggr24.adb: New test. ++ * gnat.dg/aggr24_pkg.ad[sb]: New helper. ++ ++2018-06-18 Martin Sebor ++ ++ PR middle-end/82063 ++ * gcc.dg/Walloc-size-larger-than-1.c: New test. ++ * gcc.dg/Walloc-size-larger-than-10.c: New test. ++ * gcc.dg/Walloc-size-larger-than-11.c: New test. ++ * gcc.dg/Walloc-size-larger-than-12.c: New test. ++ * gcc.dg/Walloc-size-larger-than-13.c: New test. ++ * gcc.dg/Walloc-size-larger-than-14.c: New test. ++ * gcc.dg/Walloc-size-larger-than-15.c: New test. ++ * gcc.dg/Walloc-size-larger-than-16.c: New test. ++ * gcc.dg/Walloc-size-larger-than-2.c: New test. ++ * gcc.dg/Walloc-size-larger-than-3.c: New test. ++ * gcc.dg/Walloc-size-larger-than-4.c: New test. ++ * gcc.dg/Walloc-size-larger-than-5.c: New test. ++ * gcc.dg/Walloc-size-larger-than-6.c: New test. ++ * gcc.dg/Walloc-size-larger-than-7.c: New test. ++ * gcc.dg/Walloc-size-larger-than-8.c: New test. ++ * gcc.dg/Walloc-size-larger-than-9.c: New test. ++ * gcc.dg/Walloc-size-larger-than.c: New test. ++ ++2018-06-13 Steven G. Kargl ++ ++ PR fortran/86110 ++ * gfortran.dg/pr86110.f90: New test. ++ ++2018-06-12 Steven G. Kargl ++ ++ PR fortran/44491 ++ * gfortran.dg/pr44491.f90: New testcase ++ ++2018-06-11 Peter Bergner ++ ++ Backport from mainline ++ 2018-06-08 Peter Bergner ++ ++ PR target/85755 ++ * gcc.target/powerpc/pr85755.c: New test. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/38351 ++ * gfortran.dg/pr38351.f90: New test. ++ * gfortran.dg/typebound_operator_4.f03: Adjust for new error message. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/63514 ++ * gfortran.dg/pr63514.f90: New test. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/78278 ++ * gfortran.dg/data_bounds_1.f90: Add -std=gnu option. ++ * gfortran.dg/data_char_1.f90: Ditto. ++ * gfortran.dg/pr78571.f90: Ditto. ++ * gfortran.dg/pr78278.f90: New test. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/86059 ++ * gfortran.dg/associate_30.f90: Remove code tested ... ++ * gfortran.dg/pr67803.f90: Ditto. ++ * gfortran.dg/pr67805.f90: Ditto. ++ * gfortran.dg/pr86059.f90: ... here. New test. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/85138 ++ PR fortran/85996 ++ PR fortran/86051 ++ * gfortran.dg/pr85138_1.f90: New test. ++ * gfortran.dg/pr85138_2.f90: Ditto. ++ * gfortran.dg/pr85996.f90: Ditto. ++ ++2018-06-07 Steven G. Kargl ++ ++ PR fortran/86045 ++ Backport from trunk. ++ * gfortran.dg/pr86045.f90: New test. ++ ++2018-06-07 Thomas Koenig ++ ++ PR fortran/85641 ++ Backport from trunk. ++ * gfortran.dg/realloc_on_assign_30.f90: New test. ++ ++2018-06-07 Richard Biener ++ ++ Backport from mainline ++ 2018-05-04 Richard Biener ++ ++ PR middle-end/85588 ++ * gcc.dg/torture/pr85588.c: New testcase. ++ * gcc.dg/torture/pr57656.c: Use dg-additional-options. ++ ++ 2018-05-02 Richard Biener ++ ++ PR middle-end/85567 ++ * gcc.dg/torture/pr85567.c: New testcase. ++ ++ 2018-05-02 Richard Biener ++ ++ PR tree-optimization/85597 ++ * gcc.dg/vect/pr85597.c: New testcase. ++ ++2018-06-05 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-06-05 Andreas Krebbel ++ ++ * gcc.target/s390/htm-builtins-compile-4.c: New test. ++ ++2018-06-04 Steven G. Kargl ++ ++ PR fortran/85981 ++ * gfortran.dg/allocate_alloc_opt_14.f90: New test. ++ * gfortran.dg/allocate_alloc_opt_1.f90: Update error string. ++ * gfortran.dg/allocate_stat_2.f90: Ditto. ++ * gfortran.dg/deallocate_alloc_opt_1.f90: Ditto. ++ ++2018-06-02 Eric Botcazou ++ ++ * gnat.dg/specs/opt3.ads: New test. ++ * gnat.dg/specs/opt3_pkg.ads: New helper. ++ ++2018-06-02 Eric Botcazou ++ ++ * gnat.dg/discr53.ad[sb]: New test. ++ * gnat.dg/discr53_pkg.ads: New helper. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85543 ++ Backport from trunk ++ * gfortran.dg/pr85543.f90: New test. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85779 ++ Backport from trunk ++ * gfortran.dg/pr85779_1.f90: New test. ++ * gfortran.dg/pr85779_2.f90: Ditto. ++ * gfortran.dg/pr85779_3.f90: Ditto. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85780 ++ Backport from trunk ++ * gfortran.dg/pr85780.f90: New test. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85895 ++ Backport from trunk ++ * gfortran.dg/coarray_3.f90: Fix invalid testcase. ++ * gfortran.dg/pr85895.f90: New test. ++ ++2018-05-24 Uros Bizjak ++ ++ * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Update scan string. ++ * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. ++ ++2018-05-21 Pat Haugen ++ ++ Backport from mainline: ++ 2018-05-17 Pat Haugen ++ ++ PR target/85698 ++ * gcc.target/powerpc/pr85698.c: New test. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/80657 ++ Backport from trunk ++ * gfortran.dg/char_result_18.f90: New test. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/82275 ++ Backport from trunk ++ * gfortran.dg/select_type_42.f90: New test. ++ ++2018-05-19 Paul Thomas ++ ++ PR fortran/82923 ++ Backport from trunk ++ * gfortran.dg/allocate_assumed_charlen_4.f90: New test. Note ++ that the patch fixes PR66694 & PR82617, although the testcases ++ are not explicitly included. ++ ++2017-05-17 Paul Thomas ++ ++ PR fortran/82814 ++ Backport from trunk ++ * gfortran.dg/submodule_31.f08: New test. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/83149 ++ Backport from trunk ++ * gfortran.dg/pr83149_1.f90: New test. ++ * gfortran.dg/pr83149.f90: Additional source for previous. ++ * gfortran.dg/pr83149_b.f90: New test. ++ * gfortran.dg/pr83149_a.f90: Additional source for previous. ++ ++2018-16-05 Paul Thomas ++ ++ PR fortran/83898 ++ Backport from trunk ++ * gfortran.dg/associate_33.f03 : New test. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/84546 ++ Backport from trunk ++ * gfortran.dg/unlimited_polymorphic_29.f90 : New test. ++ ++2018-05-12 Steven G. Kargl ++ ++ PR fortran/85542 ++ Backport from trunk ++ * gfortran.dg/pr85542.f90: New test. ++ ++2018-05-12 Paul Thomas ++ ++ PR fortran/68846 ++ Backport from trunk ++ * gfortran.dg/temporary_3.f90 : New test. ++ ++ PR fortran/70864 ++ Backport from trunk ++ * gfortran.dg/temporary_2.f90 : New test. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/70870 ++ Backport from trunk ++ * gfortran.dg/pr70870_1.f90: New test. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85521 ++ Backport from trunk ++ * gfortran.dg/pr85521_1.f90: New test. ++ * gfortran.dg/pr85521_2.f90: New test. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85687 ++ Backport from trunk ++ * gfortran.dg/pr85687.f90: new test. ++ ++2018-05-06 Andre Vehreschild ++ ++ PR fortran/85507 ++ Backport from trunk. ++ * gfortran.dg/coarray_dependency_1.f90: New test. ++ * gfortran.dg/coarray_lib_comm_1.f90: Fix counting caf-expressions. ++ ++2018-05-01 Kyrylo Tkachov ++ ++ Backport from trunk ++ 2018-04-27 Kyrylo Tkachov ++ ++ PR target/82518 ++ * lib/target-supports.exp (check_effective_target_vect_load_lanes): ++ Use check_effective_target_arm_little_endian. ++ ++2018-04-28 Andre Vehreschild ++ ++ PR fortran/81773 ++ PR fortran/83606 ++ Backport from trunk. ++ * gfortran.dg/coarray/get_to_indexed_array_1.f90: New test. ++ * gfortran.dg/coarray/get_to_indirect_array.f90: New test. ++ ++2018-04-26 Richard Biener ++ ++ Backport from mainline ++ 2018-04-09 Richard Biener ++ ++ PR tree-optimization/85284 ++ * gcc.dg/torture/pr85284.c: New testcase. ++ ++ 2018-04-06 Richard Biener ++ ++ PR middle-end/85244 ++ * gcc.dg/torture/pr85244-1.c: New testcase. ++ * gcc.dg/torture/pr85244-2.c: Likewise. ++ ++ 2018-04-04 Richard Biener ++ ++ PR tree-optimization/85168 ++ * gcc.dg/torture/pr85168.c: New testcase. ++ ++ 2018-03-15 Richard Biener ++ ++ PR c/84873 ++ * c-c++-common/pr84873.c: New testcase. ++ ++2018-04-24 Steven G. Kargl ++ ++ PR fortran/85520 ++ * gfortran.dg/pr85520.f90: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-10 Jakub Jelinek ++ ++ PR lto/85248 ++ * gcc.dg/lto/pr85248_0.c: New test. ++ * gcc.dg/lto/pr85248_1.c: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-28 Jakub Jelinek ++ Martin Liska ++ ++ PR sanitizer/85081 ++ * g++.dg/asan/pr85081.C: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-21 Martin Liska ++ ++ PR ipa/84963 ++ * gfortran.dg/goacc/pr84963.f90: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-13 Martin Liska ++ ++ PR ipa/84658. ++ * g++.dg/ipa/pr84658.C: New test. ++ ++2018-04-23 Aaron Sawdey ++ ++ Backport from mainline ++ 2018-04-16 Aaron Sawdey ++ ++ PR target/83660 ++ * gcc.target/powerpc/pr83660.C: New test. ++ ++2018-04-23 Eric Botcazou ++ ++ * g++.dg/torture/pr85496.C: New test. ++ ++2018-04-20 Peter Bergner ++ ++ PR target/85436 ++ * go.dg/pr85436.go: New test. ++ ++ Backport from mainline ++ 2018-03-09 Peter Bergner ++ ++ PR target/83969 ++ * gcc.target/powerpc/pr83969.c: New test. ++ ++2018-04-19 Jonathan Wakely ++ ++ PR c++/85464 - missing location for -Wignored-qualifiers diagnostic ++ * g++.dg/diagnostic/pr85464.C: New. ++ ++2018-04-18 Thomas Preud'homme ++ ++ Backport from mainline ++ 2018-04-11 Thomas Preud'homme ++ ++ PR target/85261 ++ * gcc.target/arm/fpscr.c: Add call to __builtin_arm_set_fpscr with ++ literal value. Expect 2 MCR instruction. Fix function prototype. ++ Remove volatile keyword. ++ ++2018-04-12 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-04-12 Andreas Krebbel ++ ++ * gcc.target/s390/nobp-no-dwarf2-cfi.c: New test. ++ ++2018-04-11 Thomas Preud'homme ++ ++ Backport from mainline ++ 2018-04-04 Thomas Preud'homme ++ ++ PR target/85203 ++ * gcc.target/arm/cmse/cmse-1.c: Tighten cmse_nonsecure_caller RTL scan ++ to match a single insn of the baz function. Move scan directives at ++ the end of the file below the functions they are trying to test for ++ better readability. ++ * gcc.target/arm/cmse/cmse-16.c: New testcase. ++ ++2018-04-10 Thomas Schwinge ++ ++ PR target/85056 ++ * gcc.target/nvptx/pr85056.c (main): Initialize "sum". ++ ++2018-04-10 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-03-08 Kyrylo Tkachov ++ ++ PR target/84748 ++ * gcc.c-torture/execute/pr84748.c: New test. ++ ++2018-04-06 Eric Botcazou ++ ++ * g++.dg/opt/pr85196.C: New test. ++ ++2018-04-05 Uros Bizjak ++ ++ PR target/85193 ++ * gcc.target/i386/pr85193.c: New test. ++ ++2018-04-04 Peter Bergner ++ ++ Backport from mainline ++ 2018-04-04 Peter Bergner ++ ++ PR rtl-optimization/84878 ++ * gcc.target/powerpc/pr84878.c: New test. ++ ++2018-04-03 Cesar Philippidis ++ ++ Backport from mainline ++ 2018-03-27 Cesar Philippidis ++ ++ PR target/85056 ++ * testsuite/gcc.target/nvptx/pr85056.c: New test. ++ * testsuite/gcc.target/nvptx/pr85056a.c: New test. ++ ++2018-04-02 Peter Bergner ++ ++ Backport from mainline ++ 2018-03-28 Peter Bergner ++ ++ PR target/84912 ++ * gcc.target/powerpc/extend-divide-1.c (div_weo): Remove test for ++ deleted builtin function. ++ (div_weuo): Likewise. ++ * gcc.target/powerpc/extend-divide-2.c (div_deo): Likewise. ++ (div_deuo): Likewise. ++ ++2018-04-02 Peter Bergner ++ ++ Backport from mainline ++ 2018-02-08 Peter Bergner ++ ++ PR target/81143 ++ * gcc.target/powerpc/pr79799-2.c: Use __LITTLE_ENDIAN__. ++ ++2018-03-29 Sebastian Peryt ++ ++ PR c++/84783 ++ * gcc.target/i386/avx512vl-vpermd-1.c (_mm256_permutexvar_epi32): ++ Test new intrinsic. ++ * gcc.target/i386/avx512vl-vpermq-imm-1.c (_mm256_permutex_epi64): ++ Ditto. ++ * gcc.target/i386/avx512vl-vpermq-var-1.c (_mm256_permutexvar_epi64): ++ Ditto. ++ * gcc.target/i386/avx512f-vpermd-2.c: Do not check for AVX512F_LEN. ++ * gcc.target/i386/avx512f-vpermq-imm-2.c: Ditto. ++ * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. ++ ++2018-03-29 Sudakshina Das ++ ++ * gcc.target/arm/pr84826.c: Change dg-option to -fstack-check. ++ ++ Backport from mainline ++ 2018-03-23 Sudakshina Das ++ ++ PR target/84826 ++ * gcc.target/arm/pr84826.c: Add dg directive. ++ ++ Backport from mainline ++ 2018-03-22 Sudakshina Das ++ ++ PR target/84826 ++ * gcc.target/arm/pr84826.c: New test. ++ ++2018-03-28 Carl Love ++ ++ * gcc.target/powerpc/crypto-builtin-1-runnable: Add ++ p8vector_hw to dg-do run. ++ ++2018-03-28 Thomas Koenig ++ ++ PR fortran/85084 ++ Backport from trunk. ++ * gfortran.dg/matmul_rank_1.f90: New test. ++ ++2018-03-28 Sudakshina Das ++ Christophe Lyon ++ ++ 2018-03-20 Christophe Lyon ++ ++ PR target/81647 ++ * gcc.target/aarch64/pr81647.c: Require fenv_exceptions. ++ ++ 2018-03-19 Sudakshina Das ++ ++ PR target/81647 ++ * gcc.target/aarch64/pr81647.c: New. ++ ++2018-03-28 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-03-23 Kyrylo Tkachov ++ ++ PR target/85026 ++ * g++.dg/pr85026.C: New test. ++ ++2018-03-28 Segher Boessenkool ++ ++ Backport from mainline ++ 2018-03-08 Segher Boessenkool ++ ++ PR target/82411 ++ * gcc.target/powerpc/ppc-sdata-2.c: Skip if -mno-readonly-in-sdata. ++ ++2018-03-27 Sudakshina Das ++ ++ Backport from mainline: ++ 2018-03-20 Sudakshina Das ++ ++ PR target/82989 ++ * gcc.target/arm/pr82989.c: New test. ++ ++ Backport from mainline: ++ 2018-03-21 Sudakshina Das ++ ++ PR target/82989 ++ * gcc.target/arm/pr82989.c: Change dg scan-assembly directives. ++ ++2018-03-27 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2018-03-20 Kyrylo Tkachov ++ ++ PR target/82518 ++ * lib/target-supports.exp (check_effective_target_vect_load_lanes): ++ Disable for armeb targets. ++ * gcc.target/arm/pr82518.c: New test. ++ ++2018-03-23 Carl Love ++ ++ * gcc.target/powerpc/crypto-builtin-1-runnable.c: New test file. ++ ++2018-03-22 Tom de Vries ++ ++ backport from trunk: ++ 2018-03-22 Tom de Vries ++ ++ PR tree-optimization/84956 ++ * gcc.dg/pr84956.c: New test. ++ ++2018-03-20 Steven G. Kargl ++ ++ PR fortran/85001 ++ * gfortran.dg/interface_41.f90: New test. ++ ++2018-03-19 Thomas Koenig ++ ++ PR fortran/84931 ++ Backport from trunk ++ * gfortran.dg/array_constructor_52.f90: New test. ++ ++2018-03-19 Steven G. Kargl ++ ++ PR fortran/77414 ++ * gfortran.dg/pr77414.f90: New test. ++ * gfortran.dg/internal_references_1.f90: Adjust error message. ++ ++2018-03-19 Steven G. Kargl ++ ++ PR fortran/65453 ++ * gfortran.dg/pr65453.f90: New test. ++ ++2018-03-19 H.J. Lu ++ ++ Backport from mainline ++ 2018-03-15 H.J. Lu ++ ++ PR target/84574 ++ * gcc.target/i386/ret-thunk-9.c: Expect __x86_return_thunk ++ label instead of __x86_indirect_thunk label. ++ ++2018-03-15 Steven G. Kargl ++ ++ PR fortran/78741 ++ * gfortran.dg/pr78741.f90: New test. ++ ++2018-03-12 Steven G. Kargl ++ ++ PR fortran/83939 ++ * gfortran.dg/pr83939.f90 ++ ++2018-03-12 Richard Sandiford ++ ++ PR tree-optimization/84485 ++ * gcc.dg/vect/pr84485.c: New test. ++ ++2018-03-10 Steven G. Kargl ++ ++ PR fortran/84734 ++ * gfortran.dg/pr84734.f90: New test. ++ ++2018-03-10 Eric Botcazou ++ ++ * gnat.dg/prot3.adb: New test. ++ * gnat.dg/prot3_pkg.ad[sb]: New helper. ++ ++2018-03-09 Kugan Vivekanandarajah ++ ++ Backport from mainline ++ 2017-09-13 Kugan Vivekanandarajah ++ ++ * gcc.target/aarch64/pr63304_1.c: Remove-mno-fix-cortex-a53-843419. ++ ++2018-03-08 Steven G. Kargl ++ ++ PR fortran/64124 ++ PR fortran/70409 ++ * gfortran.dg/pr64124.f90: New tests. ++ * gfortran.dg/pr70409.f90: New tests. ++ ++2018-03-06 Carl Love ++ ++ Backport from mainline ++ 2/16/18 commit 257748 Carl Love ++ ++ * gcc.target/powerpc/p9-vinsert4b-1.c: Remove test file for non-ABI ++ tests. ++ * gcc.target/powerpc/p9-vinsert4b-2.c: Remove test file for non-ABI ++ tests. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-23 Segher Boessenkool ++ ++ PR testsuite/80551 ++ * c-c++-common/tsan/race_on_mutex.c: Change regexp to allow ++ __GI___pthread_mutex_init as well. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-20 Martin Liska ++ ++ PR c/84310 ++ PR target/79747 ++ * gcc.target/i386/pr84310.c: New test. ++ * gcc.target/i386/pr84310-2.c: Likewise. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-01-23 Martin Liska ++ ++ PR lto/81440 ++ * gcc.dg/lto/pr81440.h: New test. ++ * gcc.dg/lto/pr81440_0.c: New test. ++ * gcc.dg/lto/pr81440_1.c: New test. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2017-04-27 Martin Liska ++ ++ PR testsuite/79455 ++ * c-c++-common/tsan/race_on_mutex.c: Make the scanned pattern ++ more generic. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-01-30 Jan Hubicka ++ ++ PR lto/83954 ++ * gcc.dg/lto/pr83954.h: New testcase. ++ * gcc.dg/lto/pr83954_0.c: New testcase. ++ * gcc.dg/lto/pr83954_1.c: New testcase. ++ ++2018-03-06 Steven G. Kargl ++ ++ PR fortran/56667 ++ * gfortran.dg/implied_do_2.f90: New test. ++ * gfortran.dg/coarray_8.f90: Update for new error message. ++ ++2018-03-06 Peter Bergner ++ ++ Backport from mainline ++ 2018-02-22 Vladimir Makarov ++ ++ PR target/81572 ++ * gcc.target/powerpc/pr81572.c: New. ++ ++2018-03-06 Richard Biener ++ ++ Backport from mainline ++ 2018-02-28 Richard Biener ++ ++ PR middle-end/84607 ++ * gcc.dg/pr84607.c: New testcase. ++ ++2018-03-05 Will Schmidt ++ ++ Backport from trunk. ++ ++ 2018-02-16 Will Schmidt ++ ++ PR target/84371 ++ * gcc.target/powerpc/builtins-3.c: Update dg-options and dg-skip-if ++ stanzas. ++ * gcc.target/powerpc/builtins-3.p8.c: Add dg-skip-if stanza. ++ * gcc.target/powerpc/builtins-3.p9.c: Add dg-skip-if stanza. ++ ++2018-03-05 Jakub Jelinek ++ ++ PR target/84524 ++ * gcc.c-torture/execute/pr84524.c: New test. ++ * gcc.target/i386/avx512bw-pr84524.c: New test. ++ ++2018-03-04 Paul Thomas ++ ++ PR fortran/83076 ++ * gfortran.dg/coarray_45.f90: New test. ++ ++ PR fortran/83319 ++ * gfortran.dg/coarray_46.f90: New test. ++ ++2018-03-03 Harald Anlauf ++ ++ PR fortran/71085 ++ * gfortran.dg/pr71085.f90: New test. ++ ++2018-03-03 Steven G. Kargl ++ ++ PR fortran/51434 ++ * gfortran.dg/pr51434.f90: New test. ++ ++2018-03-03 Paul Thomas ++ ++ PR fortran/80965 ++ * gfortran.dg/select_type_41.f90: New test. ++ ++2018-03-03 Paul Thomas ++ ++ Backported from trunk. ++ PR fortran/78990 ++ * gfortran.dg/class_67.f90: New test. ++ ++2018-03-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-03-02 Jakub Jelinek ++ ++ PR ipa/84628 ++ * gcc.dg/pr84628.c: New test. ++ ++ PR inline-asm/84625 ++ * gcc.target/i386/pr84625.c: New test. ++ ++ 2018-03-02 Jakub Jelinek ++ ++ PR sanitizer/70875 ++ * gcc.dg/ubsan/bounds-3.c: Add -fno-sanitize-recover=bounds to ++ dg-options and dg-shouldfail "ubsan" directive. ++ ++ 2018-02-26 Jakub Jelinek ++ ++ PR c++/84558 ++ * g++.dg/cpp1y/pr84558.C: New test. ++ ++ PR c++/84557 ++ * g++.dg/gomp/pr84557.C: New test. ++ ++ PR c++/84556 ++ * g++.dg/gomp/pr84556.C: New test. ++ * g++.dg/vect/pr84556.cc: New test. ++ ++ 2018-02-22 Jakub Jelinek ++ ++ PR tree-optimization/84503 ++ * gcc.dg/pr84503-1.c: New test. ++ * gcc.dg/pr84503-2.c: New test. ++ ++ 2017-11-10 Jakub Jelinek ++ ++ PR bootstrap/82916 ++ * gcc.dg/pr82916.c: New test. ++ ++ 2018-02-20 Jakub Jelinek ++ ++ PR c++/84445 ++ * g++.dg/cpp1z/launder7.C: New test. ++ ++ PR c++/84449 ++ * g++.dg/cpp0x/constexpr-84449.C: New test. ++ ++ 2018-02-19 Jakub Jelinek ++ ++ PR c++/84444 ++ * g++.dg/cpp1z/launder8.C: New test. ++ ++ PR c++/84448 ++ * g++.dg/gomp/pr84448.C: New test. ++ ++ PR c++/84430 ++ * g++.dg/gomp/pr84430.C: New test. ++ ++ 2018-02-16 Jakub Jelinek ++ ++ PR ipa/84425 ++ * gcc.c-torture/compile/pr84425.c: New test. ++ ++ 2018-02-16 Marek Polacek ++ Jakub Jelinek ++ ++ PR c++/84192 ++ * g++.dg/cpp1y/constexpr-84192.C: New test. ++ ++ 2018-02-13 Jakub Jelinek ++ ++ PR c/82210 ++ * gcc.c-torture/execute/pr82210.c: New test. ++ ++ 2018-02-12 Jakub Jelinek ++ ++ PR c++/84341 ++ * c-c++-common/gomp/pr84341.c: New test. ++ ++ 2018-02-10 Jakub Jelinek ++ ++ PR sanitizer/83987 ++ * g++.dg/ubsan/pr83987-2.C: New test. ++ ++ 2018-02-09 Marek Polacek ++ Jakub Jelinek ++ ++ PR c++/83659 ++ * g++.dg/torture/pr83659.C: New test. ++ ++ 2018-02-07 Jakub Jelinek ++ ++ PR c++/84082 ++ * g++.dg/template/incomplete11.C: New test. ++ * g++.dg/parse/crash67.C: Expect an incomplete type diagnostics too. ++ ++ 2018-02-01 Jakub Jelinek ++ ++ PR tree-optimization/81661 ++ PR tree-optimization/84117 ++ * gcc.dg/pr81661.c: New test. ++ * gfortran.dg/pr84117.f90: New test. ++ ++ 2018-01-31 Jakub Jelinek ++ ++ PR fortran/84116 ++ * gfortran.dg/gomp/pr84116.f90: New test. ++ ++ PR c++/83993 ++ * g++.dg/init/pr83993-2.C: New test. ++ ++ PR preprocessor/69869 ++ * gcc.dg/cpp/trad/pr69869.c: New test. ++ ++ 2018-01-30 Jakub Jelinek ++ ++ PR rtl-optimization/83986 ++ * gcc.dg/pr83986.c: New test. ++ ++ 2018-01-25 Jakub Jelinek ++ ++ PR c++/84031 ++ * g++.dg/cpp1z/decomp36.C: New test. ++ ++ 2018-01-24 Jakub Jelinek ++ ++ PR middle-end/83977 ++ * c-c++-common/gomp/pr83977-1.c: New test. ++ * c-c++-common/gomp/pr83977-2.c: New test. ++ * c-c++-common/gomp/pr83977-3.c: New test. ++ * gfortran.dg/gomp/pr83977.f90: New test. ++ ++ 2018-01-23 Jakub Jelinek ++ ++ PR sanitizer/83987 ++ * g++.dg/ubsan/pr83987.C: New test. ++ ++ PR c++/83958 ++ * g++.dg/cpp1z/decomp35.C: New test. ++ ++ 2018-01-20 Jakub Jelinek ++ ++ PR middle-end/83945 ++ * gcc.dg/tls/pr83945.c: New test. ++ ++ PR target/83930 ++ * gcc.dg/pr83930.c: New test. ++ ++ 2018-01-18 Jakub Jelinek ++ ++ PR c++/83824 ++ * g++.dg/cpp0x/pr83824.C: New test. ++ ++ 2018-01-16 Jakub Jelinek ++ ++ PR c++/83817 ++ * g++.dg/cpp1y/pr83817.C: New test. ++ ++ 2018-01-05 Jakub Jelinek ++ ++ PR tree-optimization/83605 ++ * gcc.dg/pr83605.c: New test. ++ ++2018-03-01 H.J. Lu ++ ++ Backport from mainline ++ 2018-02-26 H.J. Lu ++ ++ PR target/84039 ++ * gcc.target/i386/indirect-thunk-1.c: Updated. ++ * gcc.target/i386/indirect-thunk-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-5.c: Likewise. ++ * gcc.target/i386/indirect-thunk-6.c: Likewise. ++ * gcc.target/i386/indirect-thunk-7.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. ++ * gcc.target/i386/indirect-thunk-bnd-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-bnd-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-5.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-6.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-5.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-6.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. ++ * gcc.target/i386/ret-thunk-9.c: Likewise. ++ * gcc.target/i386/ret-thunk-10.c: Likewise. ++ * gcc.target/i386/ret-thunk-11.c: Likewise. ++ * gcc.target/i386/ret-thunk-12.c: Likewise. ++ * gcc.target/i386/ret-thunk-13.c: Likewise. ++ * gcc.target/i386/ret-thunk-14.c: Likewise. ++ * gcc.target/i386/ret-thunk-15.c: Likewise. ++ ++2018-03-01 H.J. Lu ++ ++ Backport from mainline ++ 2018-02-26 H.J. Lu ++ ++ PR target/84530 ++ * gcc.target/i386/ret-thunk-22.c: New test. ++ * gcc.target/i386/ret-thunk-23.c: Likewise. ++ * gcc.target/i386/ret-thunk-24.c: Likewise. ++ * gcc.target/i386/ret-thunk-25.c: Likewise. ++ * gcc.target/i386/ret-thunk-26.c: Likewise. ++ ++2017-03-02 Thomas Schwinge ++ ++ Backport from trunk r256891: ++ 2018-01-19 Cesar Philippidis ++ ++ PR target/83790 ++ * gcc.target/nvptx/indirect_call.c: New test. ++ ++2017-03-01 Thomas Preud'homme ++ ++ Backport from mainline ++ 2017-12-05 Matthew Gretton-Dann ++ with follow-up r255433 commit. ++ ++ * gcc.c-torture/unsorted/dump-noaddr.x: Generate dump files in ++ tmpdir. ++ ++2018-02-28 Alan Modra ++ ++ * lib/prune.exp (prune_gcc_output): Match lower case "in function" ++ GNU ld message. ++ * g++.dg/other/anon5.C: Match lower case "bad value" GNU ld message. ++ ++2018-02-26 Carl Love ++ ++ Backport from mainline: commit 257747 on 2018-02-16. ++ ++ * gcc.target/powerpc/builtins-7-p9-runnable.c: New runnable test file ++ for the ABI definitions for vec_extract4b and vec_insert4b. ++ ++2018-02-26 Eric Botcazou ++ ++ * gcc.c-torture/execute/20180226-1.c: New test. ++ ++2018-02-25 Steven G. Kargl ++ ++ ChangeLog for r257972 ++ PR fortran/83633 ++ * gfortran.dg/explicit_shape_1.f90: New test. ++ * gfortran.dg/automatic_module_variable.f90: Update regex. ++ * gfortran.dg/bad_automatic_objects_1.f90: Ditto. ++ ++2018-02-25 Thomas Koenig ++ ++ PR fortran/78238 ++ Backport from trunk ++ * gfortran.dg/select_type_40.f90: New test. ++ ++2018-02-24 Steven G. Kargl ++ ++ PR fortran/30792 ++ * gfortran.dg/data_substring.f90: New test. ++ ++2018-02-23 Steven G. Kargl ++ ++ PR fortran/84346 ++ * gfortran.dg/statement_function_1.f90: Update test. ++ ++2018-02-23 Jerry DeLisle ++ ++ Backport from trunk ++ PR fortran/84506 ++ * gfortran.dg/inquire_19.f90: New test. ++ ++2018-02-22 Thomas Koenig ++ ++ PR fortran/81116 ++ PR fortran/84495 ++ * gfortran.dg/realloc_on_assignment_29.f90: New test. ++ ++2017-02-22 Sudakshina Das ++ ++ Backport from mainline: ++ 2017-12-14 Sudakshina Das ++ ++ PR target/81228 ++ * gcc.dg/pr81228.c: New. ++ ++2018-02-19 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-01-02 Marek Polacek ++ ++ PR c++/81860 ++ * g++.dg/cpp0x/inh-ctor30.C: New test. ++ ++2018-02-18 Jerry DeLisle ++ ++ Backport from trunk ++ PR libgfortran/84412 ++ * gfortran.dg/inquire_18.f90: New test. ++ ++2018-02-17 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/84270 ++ * gfortran.dg/inline_matmul_22.f90: New test. ++ ++2018-02-16 Jozef Lawrynowicz ++ ++ PR target/79242 ++ gcc.target/msp430/pr79242.c: New test. ++ ++2018-02-16 Eric Botcazou ++ ++ PR ada/84277 ++ * gnat.dg/array11.adb (Array11): Tweak index and remove warning. ++ * gnat.dg/dispatch1.adb: Rename into... ++ * gnat.dg/disp1.adb: ...this. ++ * gnat.dg/dispatch1_p.ads: Rename into... ++ * gnat.dg/disp1_pkg.ads: ...this. ++ * gnat.dg/disp2.adb: Rename into... ++ * gnat.dg/dispatch2.adb: ...this. ++ * gnat.dg/dispatch2_p.ads: Rename into... ++ * gnat.dg/disp2_pkg.ads: ...this. ++ * gnat.dg/dispatch2_p.adb: Rename into... ++ * gnat.dg/disp2_pkg.adb: this. ++ * gnat.dg/generic_dispatch.adb: Rename into... ++ * gnat.dg/generic_disp.adb: this. ++ * gnat.dg/generic_dispatch_p.ads: Rename into... ++ * gnat.dg/generic_disp_pkg.ads: ...this. ++ * gnat.dg/generic_dispatch_p.adb: Rename into... ++ * gnat.dg/generic_disp_pkg.adb: ...this. ++ * gnat.dg/null_pointer_deref1.adb (Null_Pointer_Deref1): Robustify. ++ * gnat.dg/null_pointer_deref2.adb (Null_Pointer_Deref2): Likewise. ++ * gnat.dg/object_overflow1.adb: Tweak index. ++ * gnat.dg/object_overflow2.adb: Likewise. ++ * gnat.dg/object_overflow3.adb: Likewise. ++ * gnat.dg/object_overflow4.adb: Likewise. ++ * gnat.dg/object_overflow5.adb: Likewise. ++ ++2018-02-16 Sudakshina Das ++ ++ Backport from trunk ++ 2018-01-12 Sudakshina Das ++ ++ * gcc.c-torture/compile/pr82096.c: Add dg-skip-if ++ directive. ++ ++ Backport from trunk ++ 2018-01-10 Sudakshina Das ++ ++ PR target/82096 ++ * gcc.c-torture/compile/pr82096.c: New test. ++ ++2018-02-16 Richard Biener ++ ++ PR tree-optimization/84190 ++ * g++.dg/torture/pr84190.C: New testcase. ++ ++2018-02-15 Michael Meissner ++ ++ Back port from trunk ++ 2018-02-07 Michael Meissner ++ ++ PR target/84154 ++ * gcc.target/powerpc/pr84154-1.c: New tests. ++ * gcc.target/powerpc/pr84154-2.c: Likewise. ++ * gcc.target/powerpc/pr84154-3.c: Likewise. ++ ++2018-02-15 Will Schmidt ++ ++ PR target/84388 ++ * gcc.target/powerpc/fold-vec-mult-int128-p8.c: Update dg-options ++ and scan-assembler stanzas. ++ * gcc.target/powerpc/fold-vec-mult-int128-p9.c: Same. ++ ++2018-02-14 Peter Bergner ++ ++ PR target/84390 ++ * gcc.target/powerpc/vsxcopy.c: Also match lxv when compiling ++ with -mcpu=power9. ++ ++2018-02-14 Peter Bergner ++ ++ Back port from mainline ++ 2018-02-13 Peter Bergner ++ ++ PR target/84279 ++ * g++.dg/pr84279.C: New test. ++ ++2018-02-12 Thomas Koenig ++ ++ PR fortran/68560 ++ * gfortran.dg/shape_9.f90: New test. ++ ++2018-02-12 Francois-Xavier Coudert ++ ++ PR fortran/35299 ++ ChangeLog for r257566 ++ * gfortran.dg/statement_function_3.f: New test. ++ ++2018-02-12 Steven G. Kargl ++ ++ PR fortran/54223 ++ PR fortran/84276 ++ * gfortran.dg/statement_function_1.f90: New test. ++ * gfortran.dg/statement_function_2.f90: New test. ++ ++2018-02-09 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-02-09 Andreas Krebbel ++ ++ PR target/PR84295 ++ * gcc.target/s390/pr84295.c: New test. ++ ++2018-02-08 Andreas Krebbel ++ ++ Backport from mainline ++ 2018-02-08 Andreas Krebbel ++ ++ * gcc.target/s390/nobp-function-pointer-attr.c: New test. ++ * gcc.target/s390/nobp-function-pointer-nothunk.c: New test. ++ * gcc.target/s390/nobp-function-pointer-z10.c: New test. ++ * gcc.target/s390/nobp-function-pointer-z900.c: New test. ++ * gcc.target/s390/nobp-indirect-jump-attr.c: New test. ++ * gcc.target/s390/nobp-indirect-jump-inline-attr.c: New test. ++ * gcc.target/s390/nobp-indirect-jump-inline-z10.c: New test. ++ * gcc.target/s390/nobp-indirect-jump-inline-z900.c: New test. ++ * gcc.target/s390/nobp-indirect-jump-nothunk.c: New test. ++ * gcc.target/s390/nobp-indirect-jump-z10.c: New test. ++ * gcc.target/s390/nobp-indirect-jump-z900.c: New test. ++ * gcc.target/s390/nobp-return-attr-all.c: New test. ++ * gcc.target/s390/nobp-return-attr-neg.c: New test. ++ * gcc.target/s390/nobp-return-mem-attr.c: New test. ++ * gcc.target/s390/nobp-return-mem-nothunk.c: New test. ++ * gcc.target/s390/nobp-return-mem-z10.c: New test. ++ * gcc.target/s390/nobp-return-mem-z900.c: New test. ++ * gcc.target/s390/nobp-return-reg-attr.c: New test. ++ * gcc.target/s390/nobp-return-reg-mixed.c: New test. ++ * gcc.target/s390/nobp-return-reg-nothunk.c: New test. ++ * gcc.target/s390/nobp-return-reg-z10.c: New test. ++ * gcc.target/s390/nobp-return-reg-z900.c: New test. ++ * gcc.target/s390/nobp-table-jump-inline-z10.c: New test. ++ * gcc.target/s390/nobp-table-jump-inline-z900.c: New test. ++ * gcc.target/s390/nobp-table-jump-z10.c: New test. ++ * gcc.target/s390/nobp-table-jump-z900.c: New test. ++ ++2018-02-08 Richard Biener ++ ++ PR tree-optimization/84233 ++ * g++.dg/torture/pr84233.C: New testcase. ++ ++2018-02-07 Steven G. Kargl ++ ++ PR fortran/82994 ++ * gfortran.dg/deallocate_error_3.f90: New test. ++ * gfortran.dg/deallocate_error_4.f90: New test. ++ ++2018-02-07 Steven G. Kargl ++ ++ PR fortran/82049 ++ * gfortran.dg/assumed_charlen_parameter.f90: New test. ++ ++2018-02-07 Bill Schmidt ++ ++ Backport from mainline ++ 2018-02-06 Bill Schmidt ++ ++ * gcc.target/powerpc/safe-indirect-jump-1.c: Detect deprecation ++ warning for -mno-speculate-indirect-jumps. ++ * gcc.target/powerpc/safe-indirect-jump-2.c: Likewise. ++ * gcc.target/powerpc/safe-indirect-jump-3.c: Likewise. ++ * gcc.target/powerpc/safe-indirect-jump-4.c: Likewise. ++ * gcc.target/powerpc/safe-indirect-jump-5.c: Likewise. ++ * gcc.target/powerpc/safe-indirect-jump-6.c: Likewise. ++ * gcc.target/powerpc/safe-indirect-jump-7.c: Likewise. ++ ++2018-02-06 Rainer Orth ++ ++ PR target/79975 ++ * gcc.dg/rtl/x86_64/final.c: Add -fdwarf2-cfi-asm to dg-options. ++ ++2017-02-02 Uros Bizjak ++ ++ * gfortran.dg/dec_parameter_1.f (sub1): Remove statement with no effect. ++ * gfortran.dg/dec_parameter_2.f90 (sub1): Ditto. ++ ++2018-02-01 Renlin Li ++ ++ Backport from mainline ++ 2018-02-01 Richard Sandiford ++ ++ PR target/83370 ++ * gcc.target/aarch64/pr83370.c: New. ++ ++2018-02-01 Richard Biener ++ ++ Backport from mainline ++ 2017-11-02 Richard Biener ++ ++ PR tree-optimization/82795 ++ * gcc.target/i386/pr82795.c: New testcase. ++ ++2018-02-01 Rainer Orth ++ ++ Backport from mainline ++ 2018-01-12 Rainer Orth ++ ++ * lib/target-supports.exp (check_effective_target_avx512f): Also ++ check for __builtin_ia32_addsd_round, ++ __builtin_ia32_getmantsd_round. ++ * gcc.target/i386/i386.exp (check_effective_target_avx512f): ++ Remove. ++ ++2018-01-31 Eric Botcazou ++ ++ * gcc.c-torture/execute/20180131-1.c: New test. ++ ++2018-01-29 Alan Modra ++ ++ PR target/84033 ++ * gcc.target/powerpc/swaps-p8-46.c: New. ++ ++2018-01-26 Segher Boessenkool ++ ++ Backport from trunk ++ 2018-01-26 Segher Boessenkool ++ ++ * gcc.target/powerpc/safe-indirect-jump-1.c: Build on all targets. ++ Make expected output depend on whether we expect sibcalls or not. ++ * gcc.target/powerpc/safe-indirect-jump-8.c: Delete (merged into ++ safe-indirect-jump-1.c). ++ ++ Backport from trunk ++ 2018-01-21 Bill Schmidt ++ ++ PR target/83946 ++ * gcc.target/powerpc/safe-indirect-jump-8.c: Skip for AIX. ++ ++2018-01-26 Nathan Sidwell ++ ++ PR c++/82878 ++ * g++.dg/cpp0x/pr82878.C: New. ++ * g++.dg/cpp1z/inh-ctor38.C: Check moves too. ++ ++2018-01-26 Jakub Jelinek ++ ++ PR rtl-optimization/83985 ++ * gcc.dg/pr83985.c: New test. ++ ++2018-01-25 Michael Meissner ++ ++ Back port from trunk ++ 2018-01-22 Michael Meissner ++ ++ PR target/83862 ++ * gcc.target/powerpc/pr83862.c: New test. ++ ++2018-01-25 Peter Bergner ++ ++ Back port from mainline ++ 2018-01-10 Peter Bergner ++ ++ PR target/83399 ++ * gcc.target/powerpc/pr83399.c: New test. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +@@ -920,7 +2910,7 @@ + + Backported from trunk + PR fortran/80850 +- * gfortran.dg/class_64_f90 : New test. ++ * gfortran.dg/class_64_f90: New test. + + 2017-10-30 Paolo Carlini + +@@ -971,7 +2961,7 @@ + + Backport from trunk + PR fortran/82312 +- * gfortran.dg/typebound_proc_36.f90 : New test. ++ * gfortran.dg/typebound_proc_36.f90: New test. + + 2017-10-20 Thomas Koenig + +Index: gcc/testsuite/go.dg/pr85436.go +=================================================================== +--- a/src/gcc/testsuite/go.dg/pr85436.go (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/go.dg/pr85436.go (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mcpu=power9" { target { powerpc*-*-* } } } */ ++ ++package main ++import ( ++ "go/ast" ++ "go/parser" ++ "go/token" ++) ++type testFuncs struct { } ++func (t *testFuncs) load(filename, pkg string, doImport, seen *bool) { ++ var testFileSet = token.NewFileSet() ++ f, err := parser.ParseFile(testFileSet, filename, nil, parser.ParseComments) ++ if err != nil { } ++ for _, d := range f.Decls { ++ n, ok := d.(*ast.FuncDecl) ++ if !ok { } ++ ptr := n.Type.Params.List[0].Type.(*ast.StarExpr) ++ if sel := ptr.X.(*ast.SelectorExpr); sel.Sel.Name == "M" { } ++ } ++} +Index: gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! PR middle-end/85878 ++ ++program pr85878 ++ real :: a ++ complex :: c = (2.0, 3.0) ++ print *, c ++ print *, transfer (a, c) ++end +Index: gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++// { dg-additional-options "-dA -std=gnu++17 -gdwarf-4 -O1 -fdebug-types-section" } ++// reject .pseudo label, but "label" is ok. ++// { dg-final { scan-assembler-not "\[^\"\]_ZN3Foo4mfunEv" } } ++// undefined ref to _ZN3Foo4mfunEv ++ ++struct Foo { ++ void mfun () {} ++}; ++ ++struct A { static constexpr bool Value = false; }; ++ ++template struct B { typedef int Type; }; ++ ++class Arg ++{ ++ template struct Local : A {}; ++ ++public: ++ template ::Value>::Type> ++ Arg (Init) {} ++}; ++ ++class Lambda { ++ static constexpr int Unused = 0; ++ ++public: ++ Lambda (Arg); ++}; ++ ++// Generated ref to Foo::mfun in the type die of an instantiation of this ++template struct Callable {}; ++ ++class I { ++ I() : lamb ([this] {}) {} ++ ++ Lambda lamb; ++ ++ Callable<&Foo::mfun> bm; ++}; +Index: gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++// { dg-additional-options "-dA -std=gnu++17 -gdwarf-4 -O1 -fdebug-types-section" } ++// reject .pseudo label, but "label" is ok. ++// { dg-final { scan-assembler-not "\[^L\"\]_ZN5Test18testFuncEv" } } ++// undefined ref to _ZN5Test18testFuncEv ++ ++class Test1 { ++public: ++ static int testFunc() { return 1; } ++}; ++ ++template ++class TestWrapper { ++public: ++ static T func() __attribute((noinline)) { return (*funcImpl)(); } ++}; ++ ++int main() { ++ return TestWrapper::func(); ++} +Index: gcc/testsuite/g++.dg/opt/pr85196.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr85196.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr85196.C (.../branches/gcc-7-branch) +@@ -0,0 +1,89 @@ ++// PR target/85196 ++// Testcase by Rainer Orth ++ ++// { dg-do compile } ++// { dg-options "-O -fpermissive -w" } ++// { dg-additional-options "-fPIC" { target fpic } } ++ ++class a; ++template class b; ++template class d : public b {}; ++class e {}; ++void f(int); ++template class g { ++public: ++ h(); ++ a i(); ++}; ++template <> class b : public g {}; ++typedef (*j)(d); ++template class l { ++public: ++ k operator->() { return 0; } ++}; ++enum m { n, aa, o, ab, q, p }; ++inline s(m ac) { ++ switch (ac) { ++ case n: ++ case aa: ++ case p: ++ return 1; ++ case o: ++ case ab: ++ return 2; ++ } ++} ++class D { ++ int ad; ++ ++public: ++ *ae() { return &ad; } ++}; ++class a { ++ l af; ++ ++public: ++ *r() { return af->ae(); } ++ t(int *c) { ++ int *w = af->ae(); ++ return w == c; ++ } ++}; ++class F : a { ++public: ++ static int ah[]; ++ static e v(F *); ++ unsigned long ai() const; ++}; ++inline unsigned long F::ai() const { ++ m aj = r() - &ah[0]; ++ return s(aj); ++} ++inline e F::v(F *ak) { ++ long al = ak->ai(); ++ f(al); ++} ++template am() { return q; } ++class an : F { ++public: ++ static ao(d u) { ++ int *ap; ++ m aq = am(); ++ ap = &ah[aq]; ++ return u.h() && u.i().t(ap); ++ } ++ template static as() { ++ F at; ++ ar(&at); ++ } ++ template static au(int *, unsigned, e *) { ++ j av = ao; ++ d aw; ++ if (av(aw)) ++ as(); ++ } ++}; ++int *ax; ++int ay; ++e az; ++ba() { an::au(ax, ay, &az); } +Index: gcc/testsuite/g++.dg/opt/pr79085.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr79085.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr79085.C (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++// PR c++/79085 ++// { dg-do compile } ++// { dg-options "-Os" } ++// { dg-additional-options "-mstrict-align" { target { aarch64*-*-* powerpc*-*-linux* powerpc*-*-elf* } } } ++ ++void *operator new (__SIZE_TYPE__, void *p) { return p; } ++ ++struct S ++{ ++ S (); ++ S (const S &); ++ ~S (void); ++ int i; ++}; ++ ++S foo (); ++ ++static char buf [sizeof (S) + 1]; ++ ++S * ++bar () ++{ ++ return new (buf + 1) S (foo ()); ++} +Index: gcc/testsuite/g++.dg/opt/pr3698.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr3698.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr3698.C (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++// PR c++/3698 ++// { dg-do link } ++// { dg-options "-O0" } ++ ++struct X { ++ int i; ++}; ++ ++inline const int& ++OHashKey (const X& x) ++{ ++ return x.i; ++} ++ ++int ++main () ++{ ++ extern const int& OHashKey (const X& x); ++ X x; ++ return OHashKey (x); ++} +Index: gcc/testsuite/g++.dg/guality/pr86687.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/guality/pr86687.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/guality/pr86687.C (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// PR debug/86687 ++// { dg-do run } ++// { dg-options "-g" } ++ ++class string { ++public: ++ string (int p) { this->p = p ; } ++ string (const string &s) { this->p = s.p; } ++ ++ int p; ++}; ++ ++class foo { ++public: ++ foo (string dir_hint) { ++ p = dir_hint.p; // { dg-final { gdb-test 16 "dir_hint.p" 3 } } ++ } ++ ++ int p; ++}; ++ ++int ++main (void) ++{ ++ string s = 3; ++ foo bar(s); ++ return !(bar.p == 3); ++} +Index: gcc/testsuite/g++.dg/pr85026.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr85026.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pr85026.C (.../branches/gcc-7-branch) +@@ -0,0 +1,61 @@ ++/* PR target/85026. */ ++/* { dg-do assemble } */ ++/* { dg-options "-O2 -std=gnu++11" } */ ++ ++template class a; ++class b; ++struct c { ++ typedef a &g; ++}; ++template struct e { typedef typename d::f iter; }; ++class h { ++public: ++ void __attribute__((noreturn)) i(); ++} ab; ++template class a { ++public: ++ typedef b *f; ++ b &operator[](unsigned m) { ++ if (ac) ++ ab.i(); ++ return ad[m]; ++ } ++ f n() { return ad; } ++ f m_fn3(); ++ b *ad; ++ unsigned ac; ++}; ++class b { ++public: ++ short j; ++ short k; ++ signed l; ++} __attribute__((__packed__)); ++void o(a &m, b &p2, b &p) { ++ p2 = p = m[0]; ++ if (bool at = false) ++ ; ++ else ++ for (c::g au(m);; at = true) ++ if (bool av = false) ++ ; ++ else ++ for (e>::iter aw = au.n(), ax = au.m_fn3(); ax; ++ av ? (void)0 : (void)0) ++ if (bool ay = 0) ++ ; ++ else ++ for (b az = *aw; !ay; ay = true) { ++ if (p2.j) ++ p2.j = az.j; ++ else if (p.j) ++ p.j = az.j; ++ if (p2.k) ++ p2.k = az.k; ++ else if (az.k > p.k) ++ p.k = az.k; ++ if (az.l < p2.l) ++ if (az.l > p.l) ++ p.l = az.l; ++ } ++} +Index: gcc/testsuite/g++.dg/ubsan/pr83987-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ubsan/pr83987-2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ubsan/pr83987-2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++// PR sanitizer/83987 ++// { dg-do compile { target fopenmp } } ++// { dg-options "-fopenmp -fsanitize=vptr" } ++ ++struct A ++{ ++ int i; ++}; ++ ++struct B : virtual A ++{ ++ void foo(); ++}; ++ ++void B::foo() ++{ ++#pragma omp parallel ++ { ++ #pragma omp sections lastprivate (i) ++ { ++ i = 0; ++ } ++ } ++} +Index: gcc/testsuite/g++.dg/ubsan/pr83987.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ubsan/pr83987.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ubsan/pr83987.C (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++// PR sanitizer/83987 ++// { dg-do compile { target fopenmp } } ++// { dg-options "-fopenmp -fsanitize=vptr -O0" } ++ ++struct A { int i; }; ++struct B : virtual A { void foo (); }; ++ ++void ++B::foo () ++{ ++#pragma omp sections lastprivate (i) ++ { ++ i = 0; ++ } ++} +Index: gcc/testsuite/g++.dg/pr58372.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr58372.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pr58372.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++/* PR target/58372 */ ++/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ ++/* { dg-options "-O2" } */ ++/* { dg-require-effective-target c++14 } */ ++ ++__attribute__ ((__target__ ("rdrnd"))) ++void f (unsigned int *b) noexcept ++{ ++ __builtin_ia32_rdrand32_step (b); ++} +Index: gcc/testsuite/g++.dg/pr84279.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr84279.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pr84279.C (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } } */ ++/* { dg-require-effective-target powerpc_p8vector_ok } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-options "-O3 -mcpu=power8 -g -fPIC -fvisibility=hidden -fstack-protector-strong" } */ ++ ++template struct E { T e; }; ++struct J { ++ unsigned k, l; ++ J (unsigned x, unsigned y) : k(x), l(y) {} ++}; ++typedef struct A { ++ J n, p; ++ A (); ++ A (J x, J y) : n(x), p(y) {} ++} *S; ++S t; ++struct B { ++ struct C { ++ S q, r; ++ int u, v; ++ bool m1 (S, A &); ++ J m2 () const; ++ J m3 () const; ++ A m4 () const; ++ }; ++ typedef E D; ++ void m5 (D *); ++ void m6 (unsigned, A); ++}; ++bool B::C::m1 (S, A &x) { bool o; x = m4 (); return o; } ++J B::C::m2 () const { unsigned g (u == 0); unsigned h (v); return J (g, h); } ++J B::C::m3 () const { unsigned g (q != t); unsigned h (r != t); return J (g, h); } ++A B::C::m4 () const { return A (m2 (), m3 ()); } ++void B::m5 (D *c) { unsigned x; C ar; A am; if (ar.m1 (c->e, am)) m6 (x, am); } +Index: gcc/testsuite/g++.dg/diagnostic/pr85464.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/diagnostic/pr85464.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/diagnostic/pr85464.C (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++// { dg-options "-Wignored-qualifiers" } ++struct Test { ++ operator int const(); // { dg-warning "type qualifiers ignored" } ++ operator int const() const; // { dg-warning "type qualifiers ignored" } ++}; +Index: gcc/testsuite/g++.dg/parse/crash67.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/parse/crash67.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/parse/crash67.C (.../branches/gcc-7-branch) +@@ -2,4 +2,4 @@ + + class x0; + template x2() { // { dg-error "declared|type" } +-x0 x3 = x3. // { dg-error "expected" } ++x0 x3 = x3. // { dg-error "expected|incomplete type" } +Index: gcc/testsuite/g++.dg/parse/array-size2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/parse/array-size2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/parse/array-size2.C (.../branches/gcc-7-branch) +@@ -15,6 +15,6 @@ + foo (void) + { + char g[(char *) &((struct S *) 0)->b - (char *) 0]; // { dg-error "constant" } +- char h[(__SIZE_TYPE__) &((struct S *) 8)->b]; // { dg-error "constant" "" { xfail *-*-* } } ++ char h[(__SIZE_TYPE__) &((struct S *) 8)->b]; // { dg-error "constant" } + bar (g, h); + } +Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++// { dg-do compile { target c++11 } } ++// { dg-final { scan-assembler "_ZZN1AIiEC4IiEET_S2_Ed_NKUlvE_clEv" } } ++ ++template struct A ++{ ++ template ++ A(U, U = []{ return 42; }()); ++}; ++ ++struct B: A ++{ ++ using A::A; ++}; ++ ++B b(24); +Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++// PR c++/85815 ++// { dg-do compile { target c++11 } } ++ ++template ++class A { ++ static A* INSTANCE; ++ void foobar(); ++ void moo() {} ++}; ++ ++template ++A* A::INSTANCE = nullptr; ++ ++template ++void A::foobar() { ++ auto x = []() { ++ INSTANCE->moo(); ++ }; ++} +Index: gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++// PR c++/85140 ++// { dg-do compile { target c++11 } } ++ ++namespace N alignas() {} // { dg-error "expected" } +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C (.../branches/gcc-7-branch) +@@ -0,0 +1,22 @@ ++// PR c++/84463 ++// { dg-do compile { target c++11 } } ++ ++struct S { int r; const unsigned char s[5]; }; ++static constexpr S a[] = { { 0, "abcd" } }; ++struct T { const unsigned char s[5]; }; ++static constexpr T b[] = { { "abcd" } }; ++ ++constexpr int ++foo (const unsigned char *x) ++{ ++ return x[0]; ++} ++ ++constexpr static const S *j = &a[0]; ++constexpr static const int k = j->s[0]; ++constexpr static int l = foo (a[0].s); ++constexpr static int m = foo (j->s); ++constexpr static const T *n = &b[0]; ++constexpr static const int o = n->s[0]; ++constexpr static int p = foo (b[0].s); ++constexpr static int q = foo (n->s); +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/84449 ++// { dg-do compile { target c++11 } } ++ ++struct A ++{ ++ constexpr A (int) {} ++ ~A () = delete; ++}; ++ ++struct B ++{ ++ A a; ++ constexpr B () : a (0) {} // { dg-error "use of deleted function" } ++}; +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C (.../branches/gcc-7-branch) +@@ -192,12 +192,11 @@ + constexpr S* ps1 = ps; + constexpr S* ps2 = ps1; + +-// The following aren't diagnosed due to a bug. +-// constexpr int* pi0 = &((S*)0)->i; +-// constexpr int* pi1 = &((S*)nullptr)->i; ++constexpr int* pi0 = &((S*)0)->i; // { dg-error "null pointer|not a constant" } ++constexpr int* pi1 = &((S*)nullptr)->i; // { dg-error "null pointer|not a constant" } + +-constexpr int* pj0 = &((S*)0)->j; // { dg-error "not a constant expression" } +-constexpr int* pj1 = &((S*)nullptr)->j; // { dg-error "not a constant expression" } ++constexpr int* pj0 = &((S*)0)->j; // { dg-error "null pointer|not a constant" } ++constexpr int* pj1 = &((S*)nullptr)->j; // { dg-error "null pointer|not a constant" } + + constexpr int* psi = &ps->i; // { dg-error "null pointer|not a constant" } + constexpr int* psj = &ps->j; // { dg-error "null pointer|not a constant" } +Index: gcc/testsuite/g++.dg/cpp0x/pr83824.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/pr83824.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/pr83824.C (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++// PR c++/83824 ++// { dg-do compile { target c++11 } } ++ ++void ++foo () ++{ ++ if (alignas(1 alignas(1))) // { dg-error "expected" } ++ ; ++} +Index: gcc/testsuite/g++.dg/cpp0x/extern_template-4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C (.../branches/gcc-7-branch) +@@ -0,0 +1,23 @@ ++// PR c++/85470 ++// { dg-do compile { target c++11 } } ++ ++template ++struct StaticObject ++{ ++ static T& create() ++ { ++ static T t; ++ return t; ++ } ++ ++ static T & instance; ++}; ++ ++template T & StaticObject::instance = StaticObject::create(); ++ ++extern template class StaticObject; ++ ++void test() ++{ ++ StaticObject::instance; ++} +Index: gcc/testsuite/g++.dg/cpp0x/decltype43.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/decltype43.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype43.C (.../branches/gcc-7-branch) +@@ -22,6 +22,6 @@ + int main() + { + int x = B::a(1))>::b(A::a(1)); +- int y = B::b(A::a(2)); // { dg-error "template argument" } ++ int y = B::b(A::a(2)); // { dg-error "template" } + return x + y; + } +Index: gcc/testsuite/g++.dg/cpp0x/ref-qual18.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual18.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual18.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR c++/71784 ++// { dg-do compile { target c++11 } } ++ ++template struct A { ++ template void f(U const&) & { } ++ template void f(U const&) && { } ++}; ++ ++template void A::f(int const&) &; ++template void A::f(int const&) &&; ++ ++template struct B { ++ void f(int const&) & { } ++ void f(int const&) && { } ++}; ++ ++template void B::f(int const&) &; ++template void B::f(int const&) &&; +Index: gcc/testsuite/g++.dg/cpp0x/sfinae60.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/sfinae60.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/sfinae60.C (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++// PR c++/78489 ++// { dg-do compile { target c++11 } } ++ ++template struct enable_if { using type = T; }; ++template struct enable_if {}; ++ ++template struct use_type { using type = int; }; ++ ++template ++struct get_type { ++ static_assert(Pred, ""); ++ using type = int; ++}; ++ ++template ::type, // Evaluation/Substitution should end here ++ class ValT = typename get_type::type, // This should not be instantiated ++ typename use_type::type = 0 // This NTTP causes ValT to be required ++ > ++constexpr bool test(int) { return false; } ++ ++template ++constexpr bool test(long) { return true; } ++ ++static_assert(test(0), ""); // should call test(long) +Index: gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/80227 ++// { dg-do compile { target c++11 } } ++ ++template ++int foo (T); ++ ++template ++int foo (T, U* = 0); ++ ++int i = foo (123); +Index: gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/71834 ++// { dg-do compile { target c++11 } } ++ ++template < typename ... Ts > struct A ++{ ++ template < Ts ..., typename U > struct B {}; ++}; ++ ++// should be, e.g.: A < int >::B < 0, int > e; ++A < int >::B < 0 > e; // { dg-error "wrong number of template arguments" } +Index: gcc/testsuite/g++.dg/cpp0x/decltype67.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/decltype67.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype67.C (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++// PR c++/85279 ++// { dg-do compile { target c++11 } } ++ ++template struct A ++{ ++ void foo(decltype(T())::Y); // { dg-error {decltype\(T\(\)\)::Y} } ++}; +Index: gcc/testsuite/g++.dg/cpp0x/noexcept33.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/noexcept33.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/noexcept33.C (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// PR c++/86378 ++// { dg-do compile { target c++11 } } ++ ++struct Pepper {}; ++struct Apple { Apple(int) {} }; ++ ++struct Combination : Apple, Pepper ++{ ++ Combination(Pepper p, Apple a) ++ : Apple(a), Pepper(p) ++ {} ++}; ++ ++struct MyCombination ++{ ++ using Spice = Pepper; ++ using Fruit = Apple; ++ ++ Combination combination; ++ ++ template ++ constexpr MyCombination(T&& t) ++ noexcept(noexcept(Combination(Spice(), Fruit(t)))) ++ : combination(Spice(), Fruit(t)) ++ {} ++}; ++ ++MyCombination obj(Apple(4)); +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++// PR c++/82461 ++// { dg-do compile { target c++11 } } ++ ++class A { ++private: ++public: ++ constexpr A() {} ++ ~A() {} ++}; ++ ++class B { ++private: ++ A a; ++public: ++ constexpr B() : a{} {} ++// works ++// constexpr B() : a() {} ++ ++ ~B() {} ++}; +Index: gcc/testsuite/g++.dg/cpp0x/elision3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/elision3.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/elision3.C (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++// PR c++/84441 ++// { dg-do compile { target c++11 } } ++ ++struct B { ++ int *b; ++}; ++struct A { ++ B b; ++ A (A &&); ++}; ++struct C { ++ A c; ++ int d; ++}; ++C bar (); ++struct D : C { ++ D () ++ : C (0 ? bar () : bar ()) ++ {} ++}; ++D d; +Index: gcc/testsuite/g++.dg/cpp0x/initlist98.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist98.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist98.C (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++// PR c++/83227 ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++template struct f { ++ f(std::initializer_list) {} ++}; ++ ++struct h {}; ++struct i : h { ++ i(); ++}; ++void foo(f); ++int main() { ++ foo({i{}}); ++} +Index: gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C (.../branches/gcc-7-branch) +@@ -0,0 +1,27 @@ ++// PR c++/81860 ++// { dg-do compile { target c++11 } } ++// { dg-final { scan-assembler "_ZN1AIjEC\[12\]Ev" } } ++ ++template ++struct A ++{ ++ A() {} ++}; ++ ++struct B ++{ ++ template ++ B(D, const A& a = A()) : a(a) {} ++ ++ A a; ++}; ++ ++struct C : B ++{ ++ using B::B; ++}; ++ ++int main() ++{ ++ C c(0); ++} +Index: gcc/testsuite/g++.dg/cpp0x/pr85147.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/pr85147.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/pr85147.C (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++// PR c++/85147 ++// { dg-do compile { target c++11 } } ++ ++template struct A ++{ ++ template class...> struct B {}; // { dg-error "expected|mismatch" } ++}; ++ ++A::B<> b; // { dg-error "does not name a template type" } +Index: gcc/testsuite/g++.dg/cpp0x/range-for9.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/range-for9.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for9.C (.../branches/gcc-7-branch) +@@ -5,6 +5,6 @@ + void test() + { + int a[] = {0,1,2}; +- for (int x : a) // { dg-error "range-based 'for'" } ++ for (int x : a) // { dg-error "range-based 'for'|forming reference" } + ; + } +Index: gcc/testsuite/g++.dg/cpp0x/auto51.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/auto51.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/auto51.C (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++// PR c++/84798 ++// { dg-do compile { target c++11 } } ++ ++template ++struct S { ++ static constexpr T value = 0; ++}; ++ ++constexpr auto x = S::value; // { dg-error "auto" } +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C (.../branches/gcc-7-branch) +@@ -6,7 +6,7 @@ + // c++/67376 on gcc-patches for additional background. + + // { dg-do compile { target c++11 } } +-// { dg-options "-fdelete-null-pointer-checks -fdump-tree-optimized" } ++// { dg-options "-O1 -fdelete-null-pointer-checks -fdump-tree-optimized" } + + // Runtime assert. Used for potentially invalid expressions. + #define RA(e) ((e) ? (void)0 : __builtin_abort ()) +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++// PR c++/83835 ++// { dg-do compile { target c++11 } } ++ ++struct Z ++{ ++ void const * p_; ++ constexpr Z( void const * p ): p_( p ) {} ++ ~Z(); ++}; ++ ++struct Y ++{ ++ Z z_; ++ constexpr Y() noexcept: z_( this ) {} ++}; +Index: gcc/testsuite/g++.dg/cpp0x/decltype-33837.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/decltype-33837.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype-33837.C (.../branches/gcc-7-branch) +@@ -2,6 +2,6 @@ + // PR c++/33837 + void foo() + { +- __decltype (A::foo()); // { dg-error "was not declared|expected" } +- __decltype (B); // { dg-error "was not declared" } ++ __decltype (A::foo()); // { dg-error "A" } ++ __decltype (B); // { dg-error "B" } + } +Index: gcc/testsuite/g++.dg/cpp0x/range-for13.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/range-for13.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for13.C (.../branches/gcc-7-branch) +@@ -3,16 +3,6 @@ + + // { dg-do compile { target c++11 } } + +-//These should not be used +-template int *begin(T &t) +-{ +- T::fail; +-} +-template int *end(T &t) +-{ +- T::fail; +-} +- + struct container1 + { + int *begin(); +@@ -87,10 +77,37 @@ + static function end; + }; + ++namespace N ++{ ++template int *begin(T &t) ++{ ++ return 0; ++} ++template int *end(T &t) ++{ ++ return 0; ++} ++struct container11 ++{ ++ int *begin(); ++ //no end ++}; ++ ++struct container12 ++{ ++ int *end(); ++ //no begin ++}; ++ ++struct container13 ++{ ++}; ++} ++ + void test1() + { +- for (int x : container1()); // { dg-error "member but not" } +- for (int x : container2()); // { dg-error "member but not" } ++ for (int x : container1()); // { dg-error "'begin' was not declared|'end' was not declared" } ++ for (int x : container2()); // { dg-error "'begin' was not declared|'end' was not declared" } + for (int x : container3()); // { dg-error "within this context" } + for (int x : container4()); // { dg-error "cannot be used as a function" } + for (int x : container5()); // { dg-error "invalid use of" } +@@ -99,4 +116,7 @@ + for (int x : container8()); + for (int x : container9()); // { dg-error "within this context" } + for (int x : container10()); ++ for (int x : N::container11()); ++ for (int x : N::container12()); ++ for (int x : N::container13()); + } +Index: gcc/testsuite/g++.dg/cpp0x/nsdmi14.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/nsdmi14.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/nsdmi14.C (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++// PR c++/71638 ++// { dg-do compile { target c++11 } } ++// { dg-options "-Wall" } ++ ++struct A { ++ struct { ++ int i; ++ int &j = i; ++ } b; ++ int a = b.j; ++}; ++ ++void bar (A); ++ ++void ++foo () ++{ ++ bar (A{}); ++} +Index: gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++// PR c++/84839 ++// { dg-do compile { target c++11 } } ++ ++template ++struct S { ++ using fptr = void(*)(T... x, decltype(x)... y); ++}; ++ ++using F = S::fptr; +Index: gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR c++/82764 ++// { dg-do compile { target c++11 } } ++ ++struct Empty {}; ++struct Empty2 : Empty {}; ++ ++struct A : Empty2 ++{ ++ int x {1}; ++ int y {2}; ++}; ++ ++struct B ++{ ++ A a {}; ++}; ++ ++B b; +Index: gcc/testsuite/g++.dg/cpp0x/auto-60626.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/auto-60626.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/auto-60626.C (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++// PR c++/60626 ++// { dg-do compile { target c++14 } } ++ ++struct A {}; ++ ++void (*A::p)(auto) = 0; // { dg-error "auto|static data member|template" } +Index: gcc/testsuite/g++.dg/cpp0x/range-for35.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/range-for35.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for35.C (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++// PR c++/86060 ++// { dg-options -Wpedantic } ++ ++template void foo(T (&a)[8]) { ++ for (int i : a) // { dg-warning "range-based" "" { target c++98_only } } ++ i; ++} ++void fn1() { foo; } +Index: gcc/testsuite/g++.dg/cpp0x/noexcept32.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/noexcept32.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/noexcept32.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/84045 ++// { dg-do compile { target c++11 } } ++ ++template struct K { ++ static const bool d = true; ++}; ++template struct B { ++ typedef K D; ++ void foo () noexcept (D::d); ++}; ++template struct P { ++ P () noexcept (K::d); ++}; ++P p; +Index: gcc/testsuite/g++.dg/cpp0x/pr82878.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/pr82878.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/pr82878.C (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++// { dg-do compile { target c++11 } } ++// { dg-additional-options "-O" } ++// pr 82878 erroneously unwrapped a reference parm in the lambda::_FUN ++// thunk. ++ ++struct A { ++ ~A(); ++ operator int (); ++}; ++ ++void baz (); ++ ++void ++bar (A b) ++{ ++ void (*lam) (A) = [](A) { baz (); }; ++ ++ if (auto c = b) ++ lam (c); ++} +Index: gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++// PR c++/82336 ++// { dg-do link { target c++11 } } ++ ++struct foo { int x = 5; }; ++struct bar : foo { bar() = default; }; ++struct baz { bar x; }; ++void qux(baz = {}){} ++int main() { qux(); } +Index: gcc/testsuite/g++.dg/torture/pr86763.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr86763.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr86763.C (.../branches/gcc-7-branch) +@@ -0,0 +1,37 @@ ++// { dg-do run { target { *-*-linux* } } } ++// { dg-additional-options "-fschedule-insns2 -fstrict-aliasing" } ++// { dg-additional-options "-lrt" } ++ ++#include ++#include ++#include ++struct ID { ++ uint64_t value; ++}; ++uint64_t value(ID id) { return id.value; } ++uint64_t gen { 1000 }; ++struct Msg { ++ uint64_t time; ++ ID id; ++}; ++struct V { ++ V() { } ++ V(Msg const & msg) : msg(msg) { } ++ Msg & get() { return msg; } ++ Msg msg; ++ char pad[237 - sizeof(Msg)]; ++}; ++struct T : V { using V::V; }; ++Msg init_msg() { ++ Msg msg; ++ timespec t; ++ clock_gettime(CLOCK_REALTIME, &t); ++ msg.time = t.tv_sec + t.tv_nsec; ++ msg.id.value = ++gen; ++ return msg; ++} ++int main() { ++ T t; ++ t = init_msg(); ++ assert(value(t.get().id) == 1001); ++} +Index: gcc/testsuite/g++.dg/torture/pr84190.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr84190.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr84190.C (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++// { dg-do compile } ++// For slim LTO there's no optimized dump ++// { dg-skip-if "" { *-*-* } { "-flto" } { "" } } ++// { dg-additional-options "-fdump-tree-optimized" } ++ ++typedef double T; ++static int equalfn (volatile T* x, volatile T* y); ++T gx, gy; ++int main () ++{ ++ T x = gx, y = gy; ++ return equalfn (&x, &y); ++} ++static int equalfn (volatile T* x, volatile T* y) ++{ ++ return (*x == *y); ++} ++ ++// There should be exactly two volatile accesses (ignoring clobbers). ++// { dg-final { scan-tree-dump-times " ={v} \[^\{\]" 2 "optimized" } } +Index: gcc/testsuite/g++.dg/torture/pr84961-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr84961-1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr84961-1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++// PR c++/84961 ++// { dg-do compile } ++ ++short a; ++volatile int b; ++int c, d; ++ ++void ++foo () ++{ ++ asm volatile ("" : "=r" (b = a)); ++} ++ ++void ++bar () ++{ ++ asm volatile ("" : "=r" (++c, ++d, b = a)); ++} ++ ++void ++baz () ++{ ++ asm volatile ("" : "=r" (--b)); ++} +Index: gcc/testsuite/g++.dg/torture/pr84961-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr84961-2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr84961-2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++// PR c++/84961 ++// { dg-do compile } ++ ++short a; ++volatile int b; ++int c, d; ++ ++void ++foo () ++{ ++ asm volatile ("" : : "m" (b = a)); ++} ++ ++void ++bar () ++{ ++ asm volatile ("" : : "m" (++c, ++d, b = a)); ++} ++ ++void ++baz () ++{ ++ asm volatile ("" : : "m" (--b)); ++} +Index: gcc/testsuite/g++.dg/torture/pr83659.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr83659.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr83659.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR c++/83659 ++// { dg-do compile } ++ ++typedef int V __attribute__ ((__vector_size__ (16))); ++V a; ++V b[2]; ++ ++int ++foo () ++{ ++ return reinterpret_cast (&a)[-1] += 1; ++} ++ ++int ++bar () ++{ ++ return reinterpret_cast (&a[1])[-1]; ++} +Index: gcc/testsuite/g++.dg/torture/pr84233.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr84233.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr84233.C (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++// { dg-do compile } ++// { dg-additional-options "-w" } ++ ++void a(const char *, int, const char *, const char *); ++template void c(b); ++struct d { ++ long e; ++ template union f; ++ template union f { ++ f(h *i) : j(i) {} ++ h *j; ++ long bits; ++ }; ++ static int k(volatile long &i) { return *(int *)f(&i).bits; } ++ typedef long g; ++ operator g() volatile { ++ int l = k(e); ++ c(l); ++ } ++}; ++struct : d { ++ } m, n; ++bool o; ++void p() { (o ? m : n) ? (void)0 : a("", 5, "", ""); } ++ +Index: gcc/testsuite/g++.dg/torture/pr77745-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr77745-2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr77745-2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++// { dg-do run } ++ ++#define NOINLINE __attribute__((noinline)) ++#include "pr77745.C" +Index: gcc/testsuite/g++.dg/torture/pr87014.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr87014.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr87014.C (.../branches/gcc-7-branch) +@@ -0,0 +1,37 @@ ++// { dg-do run } ++ ++void ++fillstack () ++{ ++ long long foo[] = ++ { ++ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ++ }; ++} ++ ++void ++f (long long=-1,long long=-1,long long=-1,long long=-1, ++ long long=-1,long long=-1,long long arg7_on_stack=-1) ++{ ++ throw 0; ++} ++ ++void ++g() ++{ ++ try ++ { ++ f (); ++ } ++ catch (int) ++ { ++ } ++} ++ ++int ++main() ++{ ++ fillstack (); ++ g (); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/torture/pr77745.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr77745.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr77745.C (.../branches/gcc-7-branch) +@@ -1,8 +1,12 @@ + // { dg-do run } + ++#ifndef NOINLINE ++#define NOINLINE /* */ ++#endif ++ + inline void* operator new(__SIZE_TYPE__, void* __p) noexcept { return __p; } + +-long foo(char *c1, char *c2) ++long NOINLINE foo(char *c1, char *c2) + { + long *p1 = new (c1) long; + *p1 = 100; +Index: gcc/testsuite/g++.dg/torture/pr85496.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr85496.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr85496.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR middle-end/85496 ++// Reported by Marek Polacek ++ ++template class complex; ++template complex<_Tp> operator*(complex<_Tp>, complex<_Tp>); ++template <> struct complex { _Complex float _M_value; }; ++class A { ++ complex _f0, _f1; ++ ++public: ++ complex &m_fn1() { return _f1; } ++}; ++complex a; ++void cos() { ++ A b; ++ complex c; ++ b.m_fn1() = c * a; ++} +Index: gcc/testsuite/g++.dg/ipa/pr84658.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ipa/pr84658.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ipa/pr84658.C (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++/* PR ipa/84658 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fmerge-all-constants -std=c++11" } */ ++ ++const int kTestCasesFoo[] = { 0, 1, 2, 3, 4, 5, 8, 15, 16, 17, 512, 1020, 1021, 1022, 1023, 1024 }; ++const int kTestCasesBar[] = { 0, 1, 2, 3, 4, 5, 8, 15, 16, 17, 512, 1020, 1021, 1022, 1023, 1024 }; ++ ++void Foo() { ++ __builtin_printf("foo:"); ++ for (int count : kTestCasesFoo) { ++ __builtin_printf("%d,", count); ++ } ++ __builtin_printf(";\n"); ++} ++ ++void Bar() { ++ __builtin_printf("bar:"); ++ for (int count : kTestCasesBar) { ++ __builtin_printf("%d,", count); ++ } ++ __builtin_printf(";\n"); ++} ++ ++int main() { ++ Foo(); ++ Bar(); ++} ++ ++/* { dg-output "foo:0,1,2,3,4,5,8,15,16,17,512,1020,1021,1022,1023,1024,;(\n|\n\r|\r)*" } */ ++/* { dg-output "bar:0,1,2,3,4,5,8,15,16,17,512,1020,1021,1022,1023,1024,;(\n|\n\r|\r)*" } */ +Index: gcc/testsuite/g++.dg/cpp1y/pr60626.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr60626.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr60626.C (.../branches/gcc-7-branch) +@@ -1,7 +0,0 @@ +-// PR c++/60626 +-// { dg-do compile { target c++14 } } +-// { dg-options "" } +- +-struct A {}; +- +-void (*A::p)(auto) = 0; // { dg-error "static data member|template" } +Index: gcc/testsuite/g++.dg/cpp1y/pr84662.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr84662.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr84662.C (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++// PR c++/84662 ++// { dg-do compile { target c++14 } } ++// { dg-options "" } ++ ++double b; ++a (__attribute__((c (0 && int() - ([] {} && b) || auto)))); // { dg-error "expected constructor, destructor, or type conversion before" } +Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++// PR c++/86728 ++// { dg-do compile { target c++14 } } ++ ++auto c = [](auto x ...) { }; +Index: gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++// PR c++/71638 ++// { dg-do compile { target c++14 } } ++ ++struct { ++ int &&a; ++ int b{a}; ++} c[] { { 2 } }; +Index: gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++// PR c++/85148 ++// { dg-do compile { target c++14 } } ++ ++template struct A ++{ ++ T x[1]{(__PTRDIFF_TYPE__)this}; ++}; ++ ++void foo() ++{ ++ A> a{}; ++} +Index: gcc/testsuite/g++.dg/cpp1y/pr84558.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr84558.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr84558.C (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++// PR c++/84558 ++// { dg-do compile { target c++14 } } ++ ++struct A { static int i; constexpr A () { i = 0; } }; ++struct B { A a[2][3][4]; }; ++B b; +Index: gcc/testsuite/g++.dg/cpp1y/var-templ58a.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ58a.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ58a.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/71569 ++// { dg-do compile { target c++14 } } ++ ++template ++struct A { ++ template ++ static const U u; ++}; ++ ++template ++template ++const U* A::u = 0; ++ ++const int *p = A::u; +Index: gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/84927 - ICE with NSDMI and reference ++// { dg-do compile { target c++14 } } ++ ++struct A ++{ ++ int& r; ++ int i = r; ++}; ++ ++void foo() ++{ ++ int j; ++ A a = A{j}; ++} +Index: gcc/testsuite/g++.dg/cpp1y/pr85076.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr85076.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr85076.C (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++// PR c++/85076 ++// { dg-do compile { target c++14 } } ++ ++template struct A*; // { dg-error "expected unqualified-id before" } ++ ++auto a = [](A) {}; // { dg-error "is not a template|has incomplete type" } +Index: gcc/testsuite/g++.dg/cpp1y/pr84496.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr84496.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr84496.C (.../branches/gcc-7-branch) +@@ -0,0 +1,44 @@ ++// PR c++/84496 ++// { dg-do compile { target c++14 } } ++ ++template struct C { static constexpr T D = n; }; ++struct E : C {}; ++template struct F : C {}; ++template T foo (); ++template struct H { typedef int G; }; ++template class I; ++struct L; ++template struct J; ++template struct K; ++struct R { ++ template ++ static J () (foo...)), L> o; ++}; ++template struct K : R { ++ typedef decltype (o) G; ++}; ++template ++struct D : K::G>::D, P, Q...> {}; ++template struct I

: D {}; ++template class function; ++template struct function { ++ template ::G> struct C; ++ template using U = int; ++ template , typename = U, void>> ++ function (P); ++}; ++template ++template ++function::function (P) ++{ ++} ++void bar (function); ++ ++void ++baz () ++{ ++ auto a = [] { ++ static int counter; ++ bar ([] (auto) { counter++; }); ++ }; ++} +Index: gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C (.../branches/gcc-7-branch) +@@ -85,4 +85,4 @@ + // { dg-final { scan-assembler "_Z3eatIZ3FoovEUlPT_PT0_E4_Z3FoovEUlS1_S3_E5_EvRS0_RS2_:" } } + // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPfS3_E_EvRT_RT0_:" } } + // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPT_PT0_E0_EvRS3_RS5_:" } } +-// { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPT_zE1_EvRS3_RT0_:" } } ++// { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsDpPT_E1_EvRT_RT0_:" } } +Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++// PR c++/64095 ++// { dg-do compile { target c++14 } } ++ ++void f() ++{ ++ [](auto...){}(); ++ [](auto&&...){}(); ++} +Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++// PR c++/84520 ++// { dg-do compile { target c++14 } } ++ ++struct A ++{ ++ static void foo(int); ++ void (*f)(int) = [](auto i) { foo(i); }; ++}; +Index: gcc/testsuite/g++.dg/cpp1y/var-templ58.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ58.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ58.C (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++// PR c++/71569 ++// { dg-do compile { target c++14 } } ++ ++template ++struct A { ++ template ++ static const U u; ++}; ++ ++template ++template ++const U A::u = 0; // { dg-error "does not specialize" } +Index: gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// PR c++/87075 ++// { dg-do compile { target c++14 } } ++ ++template ++struct vec ++{ ++ struct { T y; } n; ++ vec() = default; ++}; ++ ++template ++struct S ++{ ++ vec value[2]; ++ template ++ constexpr S(const U&); ++}; ++ ++template ++template ++constexpr S::S(const X&) ++{ ++ value[0] = vec(); ++} ++ ++Sm(0); +Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C (.../branches/gcc-7-branch) +@@ -0,0 +1,125 @@ ++// PR c++/85118 ++// { dg-do compile { target c++14 } } ++ ++namespace std ++{ ++ template ++ struct remove_const ++ { typedef _Tp type; }; ++ ++ template ++ struct remove_const<_Tp const> ++ { typedef _Tp type; }; ++ ++ ++ template ++ struct remove_volatile ++ { typedef _Tp type; }; ++ ++ template ++ struct remove_volatile<_Tp volatile> ++ { typedef _Tp type; }; ++ ++ ++ template ++ struct remove_cv ++ { ++ typedef typename ++ remove_const::type>::type type; ++ }; ++ ++ template ++ struct remove_reference ++ { typedef _Tp type; }; ++ ++ template ++ struct remove_reference<_Tp&> ++ { typedef _Tp type; }; ++ ++ template ++ struct remove_reference<_Tp&&> ++ { typedef _Tp type; }; ++ ++ template ++ struct decay ++ { ++ using type = typename remove_reference::type>::type; ++ }; ++ ++ template ++ _Tp&& ++ declval() noexcept; ++ ++ template ++ constexpr _Tp&& ++ forward(typename std::remove_reference<_Tp>::type& __t) noexcept ++ { return static_cast<_Tp&&>(__t); } ++ ++ ++ template ++ struct _Mu ++ { ++ template ++ _CVArg&& ++ operator()(_CVArg&& __arg, _Tuple&) const volatile ++ { return std::forward<_CVArg>(__arg); } ++ }; ++ ++ template ++ struct _Bind ++ { ++ _Functor _M_f; ++ _Bound_args _M_bound_args; ++ ++ template()( ++ _Mu<_Bound_args>()( std::declval<_Bound_args&>(), ++ std::declval<_Args&>() ) ) )> ++ _Result ++ operator()(_Args&& __args) { return {}; } ++ ++ template()( ++ _Mu<_Bound_args>()( std::declval(), ++ std::declval<_Args&>() ) ) )> ++ _Result ++ operator()(_Args&& __args) volatile; ++ ++ }; ++ ++ template ++ _Bind::type, typename decay<_BoundArgs>::type> ++ bind(_Func&& __f, _BoundArgs&& __args) ++ { ++ return { ++ std::forward<_Func>(__f), ++ std::forward<_BoundArgs>(__args) ++ }; ++ } ++ ++} // namespace std ++ ++ ++template ++bool isOneOf(const T& ) ++{ ++ return false; ++} ++ ++template ++bool isOneOf(const T& t, const FirstType& firstValue, const Tail&... tail) ++{ ++ return t == firstValue || isOneOf(t, tail...); ++} ++ ++int main() ++{ ++ const auto isOneOfHelper = [](auto&&... params) ++ { ++ return isOneOf(std::forward(params)...); ++ }; ++ ++ auto isO = std::bind(isOneOfHelper, 'o'); ++ ++ isO('o'); ++} +Index: gcc/testsuite/g++.dg/cpp1y/pr83817.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr83817.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr83817.C (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++// PR c++/83817 ++// { dg-do compile { target c++14 } } ++ ++struct A; ++struct B { template using C = A; }; ++struct D : B { struct F { typedef C E; }; }; ++struct G { ++ struct I { I (D, A &); } h; ++ D::F::E &k (); ++ D j; ++ G (G &&) : h (j, k ()) {} ++}; ++struct N { G l; }; ++typedef N (*M)(N &); ++struct H { const char *o; M s; }; ++N foo (N &); ++H r { "", [](auto &x) { return foo (x); }}; +Index: gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C (.../branches/gcc-7-branch) +@@ -0,0 +1,41 @@ ++// PR c++/84192 ++// { dg-do compile { target c++14 } } ++// { dg-options "" } ++ ++bool ++f1 () ++{ ++ return ({ return true; }) && false; // { dg-error "could not convert" } ++} ++ ++void ++f2 () ++{ ++ for (;;) ++ constexpr bool b = ({ break; false; }) && false; // { dg-error "statement is not a constant expression" } ++} ++ ++constexpr bool ++f3 (int n) ++{ ++ bool b = false; ++ for (int i = 0; i < n; i++) ++ b = ({ break; }); // { dg-error "void value not ignored as it ought to be" } ++ return b; ++} ++ ++constexpr bool b = f3 (4); ++ ++bool ++f4 () ++{ ++ constexpr bool b = ({ return true; }) && false; // { dg-error "could not convert" } ++ return false; ++} ++ ++constexpr bool ++f5 (int x) ++{ ++ constexpr bool b = ({ switch (x) case 0: true; }) && false; // { dg-error "could not convert" } ++ return false; ++} +Index: gcc/testsuite/g++.dg/cpp1y/var-templ59.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ59.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ59.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/71569 ++// { dg-do compile { target c++14 } } ++ ++template ++struct A { ++ template ++ static U u; ++}; ++ ++int main() ++{ ++ decltype(A::u) a; // { dg-error "missing template arguments" } ++ return a; ++} +Index: gcc/testsuite/g++.dg/cpp1y/pr60393.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr60393.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr60393.C (.../branches/gcc-7-branch) +@@ -1,8 +1,7 @@ + // PR c++/60393 + // { dg-do compile { target c++14 } } +-// { dg-options "" } + +-void (*f)(auto) + 0; // { dg-error "expected" } ++void (*f)(auto) + 0; // { dg-error "auto|expected" } + + struct A + { +Index: gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/84420 ++// { dg-additional-options -std=c++17 } ++ ++int main(){ ++ int a[1]{}; ++ [&a]{ ++ auto [v] = a; ++ (void)v; ++ }(); ++} +Index: gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++// { dg-do compile { target c++11 } } ++ ++#include "noexcept-type19.h" ++ ++extern "C" void *malloc (size_t); ++ ++template void f(T*); ++ ++int main() ++{ ++ f(operator new); ++} +Index: gcc/testsuite/g++.dg/cpp1z/class-deduction51.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++// PR c++/84937 ++// { dg-additional-options -std=c++17 } ++ ++template struct A {}; ++ ++template struct B ++{ ++ template B(A); ++}; ++ ++B b(A<0,0>{}); +Index: gcc/testsuite/g++.dg/cpp1z/launder7.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/launder7.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/launder7.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/84445 ++// { dg-do compile } ++ ++struct A { virtual void foo (); }; ++ ++void ++bar (A *p) ++{ ++ __builtin_launder (p)->foo (); ++} +Index: gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h (.../branches/gcc-7-branch) +@@ -0,0 +1,4 @@ ++#pragma GCC system_header ++ ++typedef decltype(sizeof(0)) size_t; ++extern "C" void *malloc (size_t) throw(); +Index: gcc/testsuite/g++.dg/cpp1z/decomp41.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp41.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp41.C (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++// PR c++/85208 ++// { dg-do compile { target c++11 } } ++// { dg-require-weak "" } ++// { dg-options "" } ++ ++#pragma weak _ZDC1d1e1fE ++struct A { int i, j, k; }; ++auto [a, b, c] = A (); // { dg-warning "decomposition declaration only available with" "" { target c++14_down } } ++auto [d, e, f] = A (); // { dg-warning "decomposition declaration only available with" "" { target c++14_down } } +Index: gcc/testsuite/g++.dg/cpp1z/decomp4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp4.C (.../branches/gcc-7-branch) +@@ -18,10 +18,10 @@ + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } + auto [ k ] { b }; // { dg-error "cannot decompose class type 'B' because it has an anonymous union member" } + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } +- auto [ l, l2 ] = c; // { dg-error "cannot decompose non-public member 'C::b' of 'C'" } ++ auto [ l, l2 ] = c; // { dg-error "cannot decompose inaccessible member 'C::b' of 'C'" } + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } + auto [ m ] = d; // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } } +- auto [ n ] { e }; // { dg-error "cannot decompose non-public member 'E::a' of 'E'" } ++ auto [ n ] { e }; // { dg-error "cannot decompose inaccessible member 'E::a' of 'E'" } + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } + auto [ o ] { f }; // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } } + auto & [ p ] { g }; // { dg-error "cannot decompose class type 'G': both it and its base class 'F' have non-static data members" } +Index: gcc/testsuite/g++.dg/cpp1z/desig7.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/desig7.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/desig7.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR c++/84874 ++// { dg-do compile { target c++11 } } ++// { dg-options "" } ++ ++struct A { int a, b; }; ++struct B { A d; }; ++ ++void ++foo (B *x) ++{ ++ *x = { .d = { .b = 5 } }; // { dg-message "non-trivial designated initializers not supported" } ++} ++ ++void ++bar (A *x) ++{ ++ *x = { .b = 6 }; // { dg-message "non-trivial designated initializers not supported" } ++} +Index: gcc/testsuite/g++.dg/cpp1z/launder8.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/launder8.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/launder8.C (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++// PR c++/84444 ++// { dg-do compile } ++// { dg-options "-O2" } ++ ++struct A {}; ++ ++__UINTPTR_TYPE__ ++foo (A *p) ++{ ++ return (__UINTPTR_TYPE__) __builtin_launder (p); ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp42.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp42.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp42.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR c++/85210 ++// { dg-do compile { target c++11 } } ++// { dg-options "" } ++ ++struct A { int i; }; ++ ++template ++void ++foo (int j) ++{ ++ auto [j] = A{j}; // { dg-error "shadows a parameter" } ++} // { dg-warning "decomposition declaration only available with" "" { target c++14_down } .-1 } ++ ++void ++bar () ++{ ++ foo<0> (0); ++} +Index: gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C (.../branches/gcc-7-branch) +@@ -0,0 +1,163 @@ ++// PR c++/84684 ++// { dg-options -std=c++17 } ++ ++typedef decltype (sizeof (0)) size_t; ++ ++namespace std { ++ template ++ struct initializer_list ++ { ++ typedef _E value_type; ++ typedef const _E& reference; ++ typedef const _E& const_reference; ++ typedef size_t size_type; ++ typedef const _E* iterator; ++ typedef const _E* const_iterator; ++ iterator _M_array; ++ size_type _M_len; ++ constexpr initializer_list(const_iterator __a, size_type __l) : _M_array(__a), _M_len(__l) { } ++ constexpr initializer_list() noexcept : _M_array(0), _M_len(0) { } ++ constexpr size_type size() const noexcept { return _M_len; } ++ constexpr const_iterator begin() const noexcept { return _M_array; } ++ constexpr const_iterator end() const noexcept { return begin() + size(); } ++ }; ++} ++ ++template ++struct array ++{ ++ constexpr E &operator[](size_t n) noexcept { return elems[n]; } ++ constexpr const E &operator[](size_t n) const noexcept { return elems[n]; } ++ constexpr size_t size() const { return N; } ++ E elems[N]; ++}; ++ ++template ++constexpr ++inline T ++max (std::initializer_list i) ++{ ++ const T *b = i.begin (); ++ const T *e = i.end (); ++ if (b == e) return *b; ++ const T *r = b; ++ while (++b != e) ++ if (*r < *b) ++ r = b; ++ return *r; ++} ++ ++template ++constexpr char to_char(alphabet_type const alph) ++{ ++ return alph.to_char(); ++} ++ ++template ++struct union_composition ++{ ++ static constexpr size_t value_size = (alphabet_types::value_size + ... ); ++ unsigned char _value; ++ template ++ static constexpr auto value_to_char_helper(alphabet_t alphabet) ++ { ++ array value_to_char{}; ++ for (size_t i = 0u; i < alphabet_t::value_size; ++i) ++ value_to_char[i] = to_char(alphabet.assign_rank(i)); ++ return value_to_char; ++ } ++ ++ static constexpr auto make_value_to_char() ++ { ++ constexpr auto N = sizeof...(alphabet_types); ++ constexpr array alphabet_sizes { alphabet_types::value_size... }; ++ constexpr size_t fixed_size = max({alphabet_types::value_size...}); ++ array value_to_char_tables = array, N> { ++ value_to_char_helper(alphabet_types{})... ++ }; ++ array value_to_char{}; ++ for (size_t i = 0u, value = 0u; i < N; ++i) ++ for (size_t k = 0u; k < alphabet_sizes[i]; ++k, ++value) ++ value_to_char[value] = value_to_char_tables[i][k]; ++ return value_to_char; ++ } ++}; ++ ++struct gap ++{ ++ constexpr char to_char() const noexcept { return '-'; } ++ constexpr gap & assign_rank([[maybe_unused]] bool const i) noexcept { return *this; } ++ static constexpr size_t value_size{1}; ++}; ++ ++struct dna4 ++{ ++ constexpr char to_char() const noexcept { return value_to_char[_value]; } ++ constexpr dna4 & assign_rank(unsigned char const c) { _value = c; return *this; } ++ static constexpr size_t value_size{4}; ++ static constexpr char value_to_char[value_size] { 'A', 'C', 'G', 'T' }; ++ unsigned char _value; ++}; ++ ++struct dna5 ++{ ++ constexpr char to_char() const noexcept { return value_to_char[_value]; } ++ constexpr dna5 & assign_rank(unsigned char const c) { _value = c; return *this; } ++ static constexpr size_t value_size{5}; ++ static constexpr char value_to_char[value_size] { 'A', 'C', 'G', 'T', 'N' }; ++ unsigned char _value; ++}; ++ ++constexpr array value_to_char1 = union_composition::make_value_to_char(); ++static_assert(value_to_char1.size() == 4u); ++static_assert(value_to_char1[0] == 'A'); ++static_assert(value_to_char1[1] == 'C'); ++static_assert(value_to_char1[2] == 'G'); ++static_assert(value_to_char1[3] == 'T'); ++ ++constexpr array value_to_char2 = union_composition::make_value_to_char(); ++static_assert(value_to_char2.size() == 5u); ++static_assert(value_to_char2[0] == 'A'); ++static_assert(value_to_char2[1] == 'C'); ++static_assert(value_to_char2[2] == 'G'); ++static_assert(value_to_char2[3] == 'T'); ++static_assert(value_to_char2[4] == '-'); ++ ++constexpr array value_to_char3 = union_composition::make_value_to_char(); ++static_assert(value_to_char3.size() == 10u); ++static_assert(value_to_char3[0] == 'A'); ++static_assert(value_to_char3[1] == 'C'); ++static_assert(value_to_char3[2] == 'G'); ++static_assert(value_to_char3[3] == 'T'); ++static_assert(value_to_char3[4] == '-'); ++static_assert(value_to_char3[5] == 'A'); ++static_assert(value_to_char3[6] == 'C'); ++static_assert(value_to_char3[7] == 'G'); ++static_assert(value_to_char3[8] == 'T'); ++static_assert(value_to_char3[9] == 'N'); ++ ++constexpr array value_to_char4 = union_composition::make_value_to_char(); ++static_assert(value_to_char4.size() == 10u); ++static_assert(value_to_char4[0] == 'A'); ++static_assert(value_to_char4[1] == 'C'); ++static_assert(value_to_char4[2] == 'G'); ++static_assert(value_to_char4[3] == 'T'); ++static_assert(value_to_char4[4] == 'N'); ++static_assert(value_to_char4[5] == '-'); ++static_assert(value_to_char4[6] == 'A'); ++static_assert(value_to_char4[7] == 'C'); ++static_assert(value_to_char4[8] == 'G'); ++static_assert(value_to_char4[9] == 'T'); ++ ++constexpr array value_to_char5 = union_composition::make_value_to_char(); ++static_assert(value_to_char5.size() == 10u); ++static_assert(value_to_char5[0] == '-'); ++static_assert(value_to_char5[1] == 'A'); ++static_assert(value_to_char5[2] == 'C'); ++static_assert(value_to_char5[3] == 'G'); ++static_assert(value_to_char5[4] == 'T'); ++static_assert(value_to_char5[5] == 'A'); ++static_assert(value_to_char5[6] == 'C'); ++static_assert(value_to_char5[7] == 'G'); ++static_assert(value_to_char5[8] == 'T'); ++static_assert(value_to_char5[9] == 'N'); +Index: gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++// PR c++/84854 ++// { dg-options -std=c++17 } ++ ++constexpr int foo () { return 1; } ++constexpr int foo (int) { return 2; } ++ ++template ++void a() ++{ ++ if constexpr(foo) { }; ++} +Index: gcc/testsuite/g++.dg/cpp1z/desig8.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/desig8.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/desig8.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR c++/84874 ++// { dg-do compile { target c++1z } } ++// { dg-options "" } ++ ++struct A { int a; struct { int b; }; }; ++struct B { A d; }; ++ ++void ++foo (B *x) ++{ ++ *x = { .d = { .b = 5 } }; // { dg-message "non-trivial designated initializers not supported" } ++} ++ ++void ++bar (A *x) ++{ ++ *x = { .b = 6 }; // { dg-message "non-trivial designated initializers not supported" } ++} +Index: gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C (.../branches/gcc-7-branch) +@@ -1,17 +1,19 @@ + // { dg-do run { target c++11 } } + // PR78495 failed to propagate pass-by-value struct to base ctor. + ++static int moves = 0; ++ + struct Ptr { + void *ptr = 0; + + Ptr() {} + Ptr(Ptr const&) = delete; +- Ptr(Ptr&& other) : ptr (other.ptr) {} ++ Ptr(Ptr&& other) : ptr (other.ptr) {moves++;} + }; + + struct Base { + Ptr val; +- Base(Ptr val_) : val(static_cast(val_)) {} ++ Base(Ptr val_); + }; + + struct Derived: Base { +@@ -27,5 +29,13 @@ + } + + int main () { +- return Foo () != 0; ++ if (Foo ()) ++ return 1; ++ ++ if (moves != 2) ++ return 2; ++ ++ return 0; + } ++ ++Base::Base(Ptr val_) : val(static_cast(val_)) {} +Index: gcc/testsuite/g++.dg/cpp1z/class-deduction54.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++// PR c++/82152 ++// { dg-additional-options -std=c++17 } ++ ++struct Base {}; ++ ++template ++struct Derived : public Base { ++ using Base::Base; ++}; ++ ++Derived() -> Derived< void >; ++ ++int main() { ++ Derived x; ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp10.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp10.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp10.C (.../branches/gcc-7-branch) +@@ -20,7 +20,7 @@ + + struct A3a { int i,j; int get(); } a3a; + template<> struct std::tuple_size { enum { value = 1 }; }; +-void f3a() { auto [ x ] = a3a; } // { dg-error "get<0>" } ++void f3a() { auto [ x ] = a3a; } // { dg-error "get" } + + struct A3b { int i,j; } a3b; + int get(A3b&&); +Index: gcc/testsuite/g++.dg/cpp1z/decomp35.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp35.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp35.C (.../branches/gcc-7-branch) +@@ -0,0 +1,35 @@ ++// PR c++/83958 ++// { dg-do compile { target c++11 } } ++// { dg-options "" } ++ ++template struct A; ++class B; ++template > class C; ++template struct D; ++template ++struct E { ++ using X = W; ++ X operator* (); ++ T operator++ (); ++ template ++ bool operator!= (E); ++}; ++template ++struct F { ++ class G; ++ using H = D; ++ using I = E; ++ class G : public I {}; ++ G begin (); ++ G end (); ++}; ++template struct C : F { ++ using J = F; ++ using J::begin; ++ using J::end; ++}; ++using K = class L; ++struct M { ++ void foo () { for (auto & [ a ] : m) {} } // { dg-error "incomplete type" } ++ C m; // { dg-warning "only available with" "" { target c++14_down } .-1 } ++}; +Index: gcc/testsuite/g++.dg/cpp1z/decomp36.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp36.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp36.C (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++// PR c++/84031 ++// { dg-do compile { target c++11 } } ++// { dg-options "" } ++ ++struct A { unsigned char : 1, a1 : 1, a2 : 2, : 1, a3 : 3; }; ++struct B { unsigned char : 1, : 7; }; ++struct C : B { constexpr C () : c1 (1), c2 (2), c3 (3) {} unsigned char : 1, c1 : 1, c2 : 2, : 1, c3 : 3; }; ++struct D : C { constexpr D () {} unsigned char : 1, : 7; }; ++ ++int ++main () ++{ ++ static constexpr A a { 1, 2, 3 }; ++ const auto &[a1, a2, a3] = a; // { dg-warning "only available with" "" { target c++14_down } } ++ static_assert (a1 == 1 && a2 == 2 && a3 == 3, ""); ++ static constexpr D d; ++ const auto &[d1, d2, d3] = d; // { dg-warning "only available with" "" { target c++14_down } } ++ static_assert (d1 == 1 && d2 == 2 && d3 == 3, ""); ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp37.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp37.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp37.C (.../branches/gcc-7-branch) +@@ -0,0 +1,62 @@ ++// { dg-additional-options -std=c++17 } ++// { dg-do compile } ++ ++#include ++#include ++#include ++ ++struct X : private std::shared_ptr ++{ ++ std::string fun_payload; ++}; ++ ++template std::string& get(X& x) ++{ ++ if constexpr(N==0) return x.fun_payload; ++} ++ ++namespace std { ++ template<> class tuple_size : public std::integral_constant {}; ++ template<> class tuple_element<0, X> {public: using type = std::string;}; ++} ++ ++struct X2 : private std::shared_ptr ++{ ++ int fun_payload; ++ template void get(); ++}; ++ ++template int& get(X2& x) ++{ ++ if constexpr(N==0) return x.fun_payload; ++} ++ ++namespace std { ++ template<> class tuple_size : public std::integral_constant {}; ++ template<> class tuple_element<0, X2> {public: using type = int;}; ++} ++ ++class X3 ++{ ++ double fun_payload; ++public: ++ template double& get() ++ { ++ if constexpr(N==0) return fun_payload; ++ } ++}; ++ ++namespace std { ++ template<> class tuple_size : public std::integral_constant {}; ++ template<> class tuple_element<0, X3> {public: using type = double;}; ++} ++ ++int main() ++{ ++ X x; ++ auto& [b1] = x; ++ X2 x2; ++ auto& [b2] = x2; ++ X3 x3; ++ auto& [b3] = x3; ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp38.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp38.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp38.C (.../branches/gcc-7-branch) +@@ -0,0 +1,48 @@ ++// { dg-additional-options -std=c++17 } ++// { dg-do compile } ++ ++class X ++{ ++ int a, b; ++ void f() ++ { ++ auto[x,y] = *this; ++ } ++}; ++ ++class X2 ++{ ++ int a, b; ++ void f(X2& other) ++ { ++ auto[x,y] = other; ++ } ++}; ++ ++struct X3 ++{ ++ friend void foo(); ++private: ++ int a; ++}; ++ ++void foo() ++{ ++ X3 x; ++ auto [a] = x; ++} ++ ++struct X4 ++{ ++ int a; ++}; ++ ++struct X5 : private X4 ++{ ++ friend void foo2(); ++}; ++ ++void foo2() { ++ X5 x; ++ auto [a] = x; ++} +Index: gcc/testsuite/g++.dg/cpp1z/class-deduction49.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++// PR c++/84015 ++// { dg-additional-options -std=c++17 } ++ ++template ++struct A { }; ++ ++template ++struct B ++{ ++ templateclass T> ++ B(T); ++}; ++ ++A<42> a; ++B b (a); +Index: gcc/testsuite/g++.dg/cpp1z/class-deduction50.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C (.../branches/gcc-7-branch) +@@ -0,0 +1,22 @@ ++// PR c++/84355 ++// { dg-additional-options -std=c++17 } ++ ++template struct same; ++template struct same {}; ++ ++template struct A ++{ ++ template struct B ++ { ++ B(U); ++ }; ++ ++ A() { ++ B b(0); ++ same>{}; ++ } ++}; ++ ++struct C {}; ++ ++A a; +Index: gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/81589 ++ ++template ++struct z { ++ z() { ++ k::error; ++ } ++}; ++ ++int x = __is_trivially_constructible(z); +Index: gcc/testsuite/g++.dg/ext/offsetof2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/offsetof2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/offsetof2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++// PR c++/85662 ++// { dg-do compile { target c++11 } } ++ ++struct S { unsigned long x[31]; }; ++struct T { bool b; S f; }; ++static_assert (__builtin_offsetof (T, f.x[31 - 1]) == __builtin_offsetof (T, f.x[30]), ""); +Index: gcc/testsuite/g++.dg/ext/visibility/lambda1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/visibility/lambda1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/visibility/lambda1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/85646 ++// { dg-do compile { target c++11 } } ++// { dg-additional-options -fvisibility=hidden } ++ ++template ++void foo() { ++ struct inner { ++ inner() { ++ (void)([this] { }); ++ } ++ }; ++} ++ ++int main() { foo(); } +Index: gcc/testsuite/g++.dg/ext/stmtexpr22.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/stmtexpr22.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/stmtexpr22.C (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++// PR c++/81853 ++// { dg-do compile { target c++11 } } ++// { dg-options "" } ++ ++namespace N { ++ enum { i }; ++} ++ ++int g () ++{ ++ constexpr int j = ({ using namespace N; i; }); ++ return j; ++} +Index: gcc/testsuite/g++.dg/ext/offsetof3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/offsetof3.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/offsetof3.C (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++// PR c++/85662 ++// { dg-do compile { target c++11 } } ++// { dg-options "-O2" } ++ ++#include "offsetof2.C" +Index: gcc/testsuite/g++.dg/ext/vla18.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/vla18.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/vla18.C (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++// PR c++/84767 ++// { dg-do compile } ++// { dg-options "" } ++ ++int v[1][10]; ++ ++struct A ++{ ++ A (int); ++}; ++ ++A::A (int i) ++{ ++ typedef int T[1][i]; ++ T *x = (T *) v; ++ (*x)[0][0] = 0; ++} ++ ++A a = 10; +Index: gcc/testsuite/g++.dg/ext/builtin12.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/builtin12.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/builtin12.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/85113 ++// { dg-do compile { target c++14 } } ++ ++template struct A {}; ++ ++constexpr int foo() ++{ ++ A<__builtin_constant_p(0)> a{}; ++ return 0; ++} +Index: gcc/testsuite/g++.dg/ext/builtin13.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/builtin13.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/builtin13.C (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++// PR inline-asm/85172 ++// { dg-do compile } ++// { dg-options "" } ++ ++int ++foo () ++{ ++ return !__builtin_constant_p (({ __asm (""); 0; })); ++} +Index: gcc/testsuite/g++.dg/ext/atomic-4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/atomic-4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/atomic-4.C (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++// PR inline-asm/85172 ++// { dg-do compile } ++// { dg-options "" } ++ ++int ++foo (int *p) ++{ ++ return !__atomic_always_lock_free (4, ({ __asm (""); p; })); ++} +Index: gcc/testsuite/g++.dg/ext/asm14.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/asm14.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/asm14.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/85659 ++// { dg-do compile } ++ ++struct S { S (); ~S (); int s; }; ++ ++void ++foo (S &s) ++{ ++ __asm volatile ("" : "+m,r" (s) : : "memory"); ++} +Index: gcc/testsuite/g++.dg/ext/asm15.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/asm15.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/asm15.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/85659 ++// { dg-do compile } ++ ++struct S { S (); ~S (); int s; }; ++ ++void ++foo (S &s) ++{ ++ __asm volatile ("" : "+r" (s) : : "memory"); // { dg-error "" } ++} +Index: gcc/testsuite/g++.dg/ext/asm16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/asm16.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/asm16.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/85659 ++// { dg-do compile } ++ ++struct S { S (); ~S (); int s[64]; } s; ++ ++void ++foo () ++{ ++ __asm volatile ("" : "=r" (s) : : "memory"); // { dg-error "" } ++} +Index: gcc/testsuite/g++.dg/ext/attr-noinline-4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/attr-noinline-4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/attr-noinline-4.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/84665 ++ ++struct S {} a[1]; ++ ++template ++void ++foo () ++{ ++ __attribute__ ((noinline (a[0]))) int c = 0; // { dg-error "wrong number of arguments" } ++} +Index: gcc/testsuite/g++.dg/vect/pr84556.cc +=================================================================== +--- a/src/gcc/testsuite/g++.dg/vect/pr84556.cc (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/vect/pr84556.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++// PR c++/84556 ++// { dg-do run { target c++11 } } ++// { dg-options "-O2 -fopenmp-simd" } ++// { dg-additional-options "-mavx" { target avx_runtime } } ++ ++int ++main () ++{ ++ int y[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; ++ auto x = [&y] () ++ { ++ #pragma omp simd ++ for (int i = 0; i < 8; ++i) ++ y[i]++; ++ }; ++ x (); ++ x (); ++ for (int i = 0; i < 8; ++i) ++ if (y[i] != i + 3) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/vec-init-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/vec-init-1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/vec-init-1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++/* On S/390 this ends up calling the vec_init RTL expander with a ++ parallel of two symbol_refs. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fPIC" } */ ++ ++ ++struct test ++{ ++ struct base ++ { ++ int key; ++ }; ++ struct derived : public base ++ { ++ int key; ++ }; ++ ++ derived core; ++ derived &dRef; ++ base &bRef; ++ ++ test() : dRef (core), bRef (core) {} ++}; ++ ++test test; +Index: gcc/testsuite/g++.dg/gomp/pr84556.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/pr84556.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/pr84556.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/84556 ++// { dg-do compile } ++// { dg-options "-std=c++17 -fopenmp-simd" } ++ ++void ++foo () ++{ ++ auto x = [] () ++ { ++ #pragma omp simd ++ for (int i = 0; i < 8; ++i) ++ ; ++ }; ++} +Index: gcc/testsuite/g++.dg/gomp/pr84430.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/pr84430.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/pr84430.C (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++// PR c++/84430 ++// { dg-do compile { target c++11 } } ++ ++void ++foo () ++{ ++ auto a = [] { ++ #pragma omp simd ++ for (int i = 0; i < 10; ++i) ++ ; ++ }; ++} +Index: gcc/testsuite/g++.dg/gomp/pr84791.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/pr84791.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/pr84791.C (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++// PR c++/84791 ++// { dg-do compile } ++ ++typedef int I; ++ ++template ++void ++foo () ++{ ++ I i; ++ #pragma omp parallel reduction (I::I: i) // { dg-error "'I' is not a class, namespace, or enumeration" "" { target c++11 } } ++ ; // { dg-error "'I' is not a class or namespace" "" { target c++98_only } .-1 } ++} ++ ++template void foo<0> (); +Index: gcc/testsuite/g++.dg/gomp/pr84557.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/pr84557.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/pr84557.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/84557 ++// { dg-do compile } ++ ++template struct A {}; ++template struct B {}; ++ ++void ++foo () ++{ ++ #pragma omp parallel firstprivate (A) // { dg-error "is not a variable in clause" } ++ ; ++ #pragma omp parallel firstprivate (B<0>) // { dg-error "is not a variable in clause" } ++ ; ++} +Index: gcc/testsuite/g++.dg/gomp/pr84448.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/pr84448.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/pr84448.C (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++// PR c++/84448 ++// { dg-do compile } ++ ++struct A ++{ ++ operator int () const; ++ A& operator += (int); ++ A& operator ++ (); ++}; ++ ++void ++foo (A a, A b) ++{ ++ #pragma omp for ++ for (A i = a; i <=; ++i) // { dg-error "expected primary-expression before" } ++ ; // { dg-error "invalid controlling predicate" "" { target *-*-* } .-1 } ++} +Index: gcc/testsuite/g++.dg/init/pr83993-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/init/pr83993-2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/init/pr83993-2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/83993 ++// { dg-do compile } ++// { dg-options "-w" } ++ ++int a[5]; ++extern int b[]; ++int *const c = &a[6]; ++int *const d = &b[1]; ++ ++int ++foo () ++{ ++ return c[-4] + d[-1]; ++} +Index: gcc/testsuite/g++.dg/init/new44.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/init/new44.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/init/new44.C (.../branches/gcc-7-branch) +@@ -87,10 +87,10 @@ + static void __attribute__ ((used)) + test_two_dim_char_array () + { +- p = new char [1][MAX]; // { dg-error "size of unnamed array" } +- p = new char [1][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new char [1][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new char [1][MAX - 99]; // { dg-error "size of unnamed array" } ++ p = new char [1][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][MAX - 99]; // { dg-error "size of (unnamed )?array" } + p = new char [1][MAX / 2]; // { dg-error "size of array" } + p = new char [1][MAX / 2 - 1]; // { dg-error "size of array" } + p = new char [1][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -104,9 +104,9 @@ + p = new char [1][MAX / 2 - 7]; // okay + p = new char [1][MAX / 2 - 8]; // okay + +- p = new char [2][MAX]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX - 2]; // { dg-error "size of unnamed array" } ++ p = new char [2][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX - 2]; // { dg-error "size of (unnamed )?array" } + p = new char [2][MAX / 2]; // { dg-error "size of array" } + p = new char [2][MAX / 2 - 1]; // { dg-error "size of array" } + p = new char [2][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -113,9 +113,9 @@ + p = new char [2][MAX / 2 - 7]; // { dg-error "size of array" } + p = new char [2][MAX / 2 - 8]; // { dg-error "size of array" } + +- p = new char [MAX][MAX]; // { dg-error "size of unnamed array" } +- p = new char [MAX][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new char [MAX][MAX - 2]; // { dg-error "size of unnamed array" } ++ p = new char [MAX][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [MAX][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [MAX][MAX - 2]; // { dg-error "size of (unnamed )?array" } + p = new char [MAX][MAX / 2]; // { dg-error "size of array" } + p = new char [MAX][MAX / 2 - 1]; // { dg-error "size of array" } + p = new char [MAX][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -142,10 +142,10 @@ + static __attribute__ ((used)) void + test_three_dim_char_array () + { +- p = new char [1][1][MAX]; // { dg-error "size of unnamed array" } +- p = new char [1][1][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new char [1][1][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new char [1][1][MAX - 99]; // { dg-error "size of unnamed array" } ++ p = new char [1][1][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][1][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][1][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][1][MAX - 99]; // { dg-error "size of (unnamed )?array" } + p = new char [1][1][MAX / 2]; // { dg-error "size of array" } + p = new char [1][1][MAX / 2 - 1]; // { dg-error "size of array" } + p = new char [1][1][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -159,19 +159,19 @@ + p = new char [1][1][MAX / 2 - 7]; // okay + p = new char [1][1][MAX / 2 - 8]; // okay + +- p = new char [1][2][MAX]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX - 99]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 1]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 2]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 3]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 4]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 5]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 6]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 7]; // { dg-error "size of unnamed array" } +- p = new char [1][2][MAX / 2 - 8]; // { dg-error "size of unnamed array" } ++ p = new char [1][2][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX - 99]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 3]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 4]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 5]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 6]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 7]; // { dg-error "size of (unnamed )?array" } ++ p = new char [1][2][MAX / 2 - 8]; // { dg-error "size of (unnamed )?array" } + p = new char [1][2][MAX / 4]; // { dg-error "size of array" } + + // Avoid exercising data model-dependent expressions. +@@ -181,10 +181,10 @@ + p = new char [1][2][MAX / 4 - 3]; // okay + p = new char [1][2][MAX / 4 - 4]; // okay + +- p = new char [2][1][MAX]; // { dg-error "size of unnamed array" } +- p = new char [2][1][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new char [2][1][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new char [2][1][MAX - 99]; // { dg-error "size of unnamed array" } ++ p = new char [2][1][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][1][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][1][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][1][MAX - 99]; // { dg-error "size of (unnamed )?array" } + p = new char [2][1][MAX / 2]; // { dg-error "size of array" } + p = new char [2][1][MAX / 2 - 1]; // { dg-error "size of array" } + p = new char [2][1][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -203,19 +203,19 @@ + p = new char [2][1][MAX / 4 - 3]; // okay + p = new char [2][1][MAX / 4 - 4]; // okay + +- p = new char [2][2][MAX]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX - 99]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 1]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 2]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 3]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 4]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 5]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 6]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 7]; // { dg-error "size of unnamed array" } +- p = new char [2][2][MAX / 2 - 8]; // { dg-error "size of unnamed array" } ++ p = new char [2][2][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX - 99]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 3]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 4]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 5]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 6]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 7]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][2][MAX / 2 - 8]; // { dg-error "size of (unnamed )?array" } + p = new char [2][2][MAX / 4]; // { dg-error "size of array" } + p = new char [2][2][MAX / 4 - 1]; // { dg-error "size of array" } + p = new char [2][2][MAX / 4 - 2]; // { dg-error "size of array" } +@@ -227,19 +227,19 @@ + p = new char [2][2][MAX / 8 - 2]; + p = new char [2][2][MAX / 8 - 3]; + +- p = new char [2][MAX][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX - 1][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX - 2][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX - 99][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 1][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 2][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 3][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 4][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 5][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 6][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 7][2]; // { dg-error "size of unnamed array" } +- p = new char [2][MAX / 2 - 8][2]; // { dg-error "size of unnamed array" } ++ p = new char [2][MAX][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX - 1][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX - 2][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX - 99][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 1][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 2][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 3][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 4][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 5][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 6][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 7][2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [2][MAX / 2 - 8][2]; // { dg-error "size of (unnamed )?array" } + p = new char [2][MAX / 4][2]; // { dg-error "size of array" } + p = new char [2][MAX / 4 - 1][2]; // { dg-error "size of array" } + p = new char [2][MAX / 4 - 2][2]; // { dg-error "size of array" } +@@ -275,11 +275,11 @@ + p = new char [MAX / 8 - 2][2][2]; + p = new char [MAX / 8 - 3][2][2]; + +- p = new char [MAX][MAX][MAX]; // { dg-error "size of unnamed array" } +- p = new char [MAX][MAX][MAX / 2]; // { dg-error "size of unnamed array" } +- p = new char [MAX][MAX / 2][MAX]; // { dg-error "size of unnamed array" } +- p = new char [MAX][MAX / 2][MAX / 2]; // { dg-error "size of unnamed array" } +- p = new char [MAX / 2][MAX / 2][MAX / 2]; // { dg-error "size of unnamed array" } ++ p = new char [MAX][MAX][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [MAX][MAX][MAX / 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [MAX][MAX / 2][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new char [MAX][MAX / 2][MAX / 2]; // { dg-error "size of (unnamed )?array" } ++ p = new char [MAX / 2][MAX / 2][MAX / 2]; // { dg-error "size of (unnamed )?array" } + } + + // Exercise new expression with N-dimensional arrays where N is +@@ -342,10 +342,10 @@ + static void __attribute__ ((used)) + test_placement_two_dim_byte_struct_array (void *p) + { +- p = new (p) B [1][MAX]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][MAX - 99]; // { dg-error "size of unnamed array" } ++ p = new (p) B [1][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][MAX - 99]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [1][MAX / 2]; // { dg-error "size of array" } + p = new (p) B [1][MAX / 2 - 1]; // { dg-error "size of array" } + p = new (p) B [1][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -359,9 +359,9 @@ + p = new (p) B [1][MAX / 2 - 7]; // okay + p = new (p) B [1][MAX / 2 - 8]; // okay + +- p = new (p) B [2][MAX]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX - 2]; // { dg-error "size of unnamed array" } ++ p = new (p) B [2][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX - 2]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [2][MAX / 2]; // { dg-error "size of array" } + p = new (p) B [2][MAX / 2 - 1]; // { dg-error "size of array" } + p = new (p) B [2][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -368,9 +368,9 @@ + p = new (p) B [2][MAX / 2 - 7]; // { dg-error "size of array" } + p = new (p) B [2][MAX / 2 - 8]; // { dg-error "size of array" } + +- p = new (p) B [MAX][MAX]; // { dg-error "size of unnamed array" } +- p = new (p) B [MAX][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [MAX][MAX - 2]; // { dg-error "size of unnamed array" } ++ p = new (p) B [MAX][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [MAX][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [MAX][MAX - 2]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [MAX][MAX / 2]; // { dg-error "size of array" } + p = new (p) B [MAX][MAX / 2 - 1]; // { dg-error "size of array" } + p = new (p) B [MAX][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -397,10 +397,10 @@ + static __attribute__ ((used)) void + test_placement_three_dim_byte_struct_array (void *p) + { +- p = new (p) B [1][1][MAX]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][1][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][1][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][1][MAX - 99]; // { dg-error "size of unnamed array" } ++ p = new (p) B [1][1][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][1][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][1][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][1][MAX - 99]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [1][1][MAX / 2]; // { dg-error "size of array" } + p = new (p) B [1][1][MAX / 2 - 1]; // { dg-error "size of array" } + p = new (p) B [1][1][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -414,19 +414,19 @@ + p = new (p) B [1][1][MAX / 2 - 7]; // okay + p = new (p) B [1][1][MAX / 2 - 8]; // okay + +- p = new (p) B [1][2][MAX]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX - 99]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 3]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 4]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 5]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 6]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 7]; // { dg-error "size of unnamed array" } +- p = new (p) B [1][2][MAX / 2 - 8]; // { dg-error "size of unnamed array" } ++ p = new (p) B [1][2][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX - 99]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 3]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 4]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 5]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 6]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 7]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [1][2][MAX / 2 - 8]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [1][2][MAX / 4]; // { dg-error "size of array" } + + // Avoid exercising data model-dependent expressions. +@@ -436,10 +436,10 @@ + p = new (p) B [1][2][MAX / 4 - 3]; // okay + p = new (p) B [1][2][MAX / 4 - 4]; // okay + +- p = new (p) B [2][1][MAX]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][1][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][1][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][1][MAX - 99]; // { dg-error "size of unnamed array" } ++ p = new (p) B [2][1][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][1][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][1][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][1][MAX - 99]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [2][1][MAX / 2]; // { dg-error "size of array" } + p = new (p) B [2][1][MAX / 2 - 1]; // { dg-error "size of array" } + p = new (p) B [2][1][MAX / 2 - 2]; // { dg-error "size of array" } +@@ -458,19 +458,19 @@ + p = new (p) B [2][1][MAX / 4 - 3]; // okay + p = new (p) B [2][1][MAX / 4 - 4]; // okay + +- p = new (p) B [2][2][MAX]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX - 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX - 99]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 1]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 3]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 4]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 5]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 6]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 7]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][2][MAX / 2 - 8]; // { dg-error "size of unnamed array" } ++ p = new (p) B [2][2][MAX]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX - 99]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 1]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 3]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 4]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 5]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 6]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 7]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][2][MAX / 2 - 8]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [2][2][MAX / 4]; // { dg-error "size of array" } + p = new (p) B [2][2][MAX / 4 - 1]; // { dg-error "size of array" } + p = new (p) B [2][2][MAX / 4 - 2]; // { dg-error "size of array" } +@@ -482,19 +482,19 @@ + p = new (p) B [2][2][MAX / 8 - 2]; + p = new (p) B [2][2][MAX / 8 - 3]; + +- p = new (p) B [2][MAX][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX - 1][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX - 2][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX - 99][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 1][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 2][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 3][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 4][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 5][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 6][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 7][2]; // { dg-error "size of unnamed array" } +- p = new (p) B [2][MAX / 2 - 8][2]; // { dg-error "size of unnamed array" } ++ p = new (p) B [2][MAX][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX - 1][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX - 2][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX - 99][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 1][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 2][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 3][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 4][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 5][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 6][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 7][2]; // { dg-error "size of (unnamed )?array" } ++ p = new (p) B [2][MAX / 2 - 8][2]; // { dg-error "size of (unnamed )?array" } + p = new (p) B [2][MAX / 4][2]; // { dg-error "size of array" } + p = new (p) B [2][MAX / 4 - 1][2]; // { dg-error "size of array" } + p = new (p) B [2][MAX / 4 - 2][2]; // { dg-error "size of array" } +Index: gcc/testsuite/g++.dg/init/struct2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/init/struct2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/init/struct2.C (.../branches/gcc-7-branch) +@@ -15,7 +15,7 @@ + }; + + SaveLoadEntry trackEntries = { +- ((long) (__SIZE_TYPE__) (&((Track *) 42)->soundName[0])) - 42, ++ ((int) (__SIZE_TYPE__) (&((Track *) 42)->soundName[0])) - 42, + 0, 1 + }; + saveLoadEntries(&trackEntries); +Index: gcc/testsuite/g++.dg/other/vthunk1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/vthunk1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/vthunk1.C (.../branches/gcc-7-branch) +@@ -1,26 +0,0 @@ +-// PR c++/12007 Multiple inheritance float pass by value fails +-// { dg-do run } +- +-extern "C" void abort (void); +- +-class gvImpl +-{ +-public: +- virtual void PutVal(float value){} +-}; +- +-class foo { public: virtual void Bar(){} }; +- +-class myGv: public foo, public gvImpl +-{ +- void PutVal(float value){ if (value != 3.14159f) abort (); } +-}; +- +-myGv x; +-gvImpl* object = &x; +- +-int main() +-{ +- object->PutVal(3.14159f); +- return 0; +-} +Index: gcc/testsuite/g++.dg/other/thunk1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/thunk1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/thunk1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// PR c++/12007 Multiple inheritance float pass by value fails ++// { dg-do run } ++ ++extern "C" void abort (void); ++ ++class gvImpl ++{ ++public: ++ virtual void PutVal(float value){} ++}; ++ ++class foo { public: virtual void Bar(){} }; ++ ++class myGv: public foo, public gvImpl ++{ ++ void PutVal(float value){ if (value != 3.14159f) abort (); } ++}; ++ ++myGv x; ++gvImpl* object = &x; ++ ++int main() ++{ ++ object->PutVal(3.14159f); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/other/thunk2a.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/thunk2a.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/thunk2a.C (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++// { dg-do compile { target arm*-*-* } } ++// { dg-options "-mlong-calls -ffunction-sections" } ++ ++class a { ++public: ++ virtual ~a(); ++}; ++ ++class b : virtual a {}; ++ ++class c : b { ++ ~c(); ++}; ++ ++c::~c() {} +Index: gcc/testsuite/g++.dg/other/thunk2b.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/thunk2b.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/thunk2b.C (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++// { dg-do compile { target arm*-*-* } } ++// { dg-options "-mlong-calls -ffunction-sections" } ++// { dg-additional-options "-fPIC" { target fpic } } ++ ++class a { ++public: ++ virtual ~a(); ++}; ++ ++class b : virtual a {}; ++ ++class c : b { ++ ~c(); ++}; ++ ++c::~c() {} +Index: gcc/testsuite/g++.dg/other/anon5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/anon5.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/anon5.C (.../branches/gcc-7-branch) +@@ -4,7 +4,7 @@ + // Ignore additional message on powerpc-ibm-aix + // { dg-prune-output "obtain more information" } */ + // Ignore additional messages on Linux/x86 with PIE +-// { dg-prune-output "Bad value" } */ ++// { dg-prune-output "\[Bb\]ad value" } */ + + namespace { + struct c +Index: gcc/testsuite/g++.dg/tree-ssa/volatile2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tree-ssa/volatile2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tree-ssa/volatile2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++// PR c++/84686 ++// { dg-additional-options -fdump-tree-gimple } ++// { dg-final { scan-tree-dump-times "= i" 10 "gimple" } } ++ ++volatile int i; ++ ++int main() ++{ ++ i; //evaluated (a load is performed) ++ (i); //unevaluated => the load shall be performed ++ ++ (void)i; //evaluated (a load is performed) ++ (void)(i); //unevaluated => the load shall be performed ++ ++ (void)i; //evaluated (a load is performed) ++ (void)(i); //unevaluated => the load shall be performed ++ ++ (i,i); // the two subexpression are evaluated ++ ((i),(i)); // no evaluation, => two loads shall happen ++} +Index: gcc/testsuite/g++.dg/tree-ssa/volatile1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tree-ssa/volatile1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tree-ssa/volatile1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++// PR c++/84151 ++// { dg-additional-options "-fdump-tree-gimple" } ++// { dg-final { scan-tree-dump-not {\*this} "gimple" } } ++ ++struct A { ++ static int& bar(int& a) { ++ return a; ++ } ++ static int i; ++ ++ int foo() volatile { ++ int v = c; ++ return i + bar(v); ++ } ++ ++ int c; ++}; ++ ++int A::i = 0; ++ ++A a; ++ ++int main() { ++ a.c = 2; ++ a.foo(); ++ ++ return 0; ++} +Index: gcc/testsuite/g++.dg/warn/Wunused-function4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/Wunused-function4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/Wunused-function4.C (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++// PR c++/80598 ++// { dg-do compile } ++// { dg-options "-Wunused-function" } ++ ++static void ++foo () // { dg-bogus "defined but not used" } ++{ ++} ++ ++static void ++bar () // { dg-warning "defined but not used" } ++{ ++} ++ ++template ++int ++baz (T x) ++{ ++ foo (); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/warn/Wnonnull4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/Wnonnull4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/Wnonnull4.C (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++// PR c++/86210 ++// { dg-do compile } ++// { dg-options "-Wnonnull" } ++ ++void *declared_not_defined (void *p) __attribute__((nonnull)); ++ ++inline void *declared_and_defined (void *p) __attribute__((nonnull)); ++ ++int ++main () ++{ ++ int *const p = 0; ++ declared_not_defined (p); // { dg-warning "null argument where non-null required" } ++ declared_and_defined (p); // { dg-warning "null argument where non-null required" } ++} ++ ++void * ++declared_and_defined (void *p) ++{ ++ return p; ++} +Index: gcc/testsuite/g++.dg/warn/Wunused-var-33.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/Wunused-var-33.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/Wunused-var-33.C (.../branches/gcc-7-branch) +@@ -0,0 +1,37 @@ ++// PR c++/85952 ++// { dg-do compile { target c++11 } } ++// { dg-options "-Wunused-but-set-variable" } ++ ++int ++foo () ++{ ++ int a[2] = {1, 2}; // { dg-bogus "set but not used" } */ ++ auto [x, y] = a; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } } ++ return x + y; ++} ++ ++struct S { int d, e; }; ++ ++int ++bar () ++{ ++ S a = {1, 2}; ++ auto [x, y] = a; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } } ++ return x + y; ++} ++ ++int ++baz () ++{ ++ S a = {1, 2}; ++ auto & [x, y] = a; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } } ++ return x + y; ++} ++ ++int ++qux () ++{ ++ int a[2] = {1, 2}; ++ auto & [x, y] = a; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } } ++ return x + y; ++} +Index: gcc/testsuite/g++.dg/warn/deprecated-6.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/deprecated-6.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/deprecated-6.C (.../branches/gcc-7-branch) +@@ -98,7 +98,7 @@ + + inline void T::member1(int) {} + +-int T::member3(T *p) // { dg-warning "'T' is deprecated: Please avoid T" } ++int T::member3(T *p) // { dg-bogus "'T' is deprecated: Please avoid T" } + { + p->member1(1); /* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */ + (*p).member1(2); /* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */ +Index: gcc/testsuite/g++.dg/warn/Wformat-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/Wformat-2.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/Wformat-2.C (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++// PR c++/84076 ++// { dg-do compile } ++// { dg-options "-Wformat" } ++ ++struct S { ~S (); }; ++struct T { T (); T (const T &); }; ++ ++void ++foo () ++{ ++ S s; ++ T t; ++ __builtin_printf ("%s\n", s); // { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'S'" } ++ __builtin_printf ("%s\n", t); // { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'T'" } ++ __builtin_printf ("%s\n", &s);// { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'S\\*'" } ++ __builtin_printf ("%s\n", &t);// { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'T\\*'" } ++} +Index: gcc/testsuite/g++.dg/warn/deprecated.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/deprecated.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/deprecated.C (.../branches/gcc-7-branch) +@@ -102,7 +102,7 @@ + + inline void T::member1(int) {} + +-int T::member3(T *p) // { dg-warning "'T' is deprecated" } ++int T::member3(T *p) // { dg-bogus "'T' is deprecated" } + { + p->member1(1); /* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */ + (*p).member1(2); /* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */ +@@ -113,5 +113,3 @@ + return f1(); /* { dg-warning "'INT1 f1\\(\\)' is deprecated" "" } */ + } + #endif +- +- +Index: gcc/testsuite/g++.dg/warn/deprecated-13.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/deprecated-13.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/deprecated-13.C (.../branches/gcc-7-branch) +@@ -0,0 +1,44 @@ ++// PR c++/84222 ++// { dg-do compile } ++ ++struct __attribute__((deprecated)) C { // { dg-message "declared here" } ++ C () {} ++ C (const C &); // { dg-bogus "'C' is deprecated" } ++ C (const C &x, const C &y) { C z = x; } // { dg-bogus "'C' is deprecated" } ++ void foo (const C &x, const C &y); // { dg-bogus "'C' is deprecated" } ++}; ++ ++void ++C::foo (const C &x, const C &y) // { dg-bogus "'C' is deprecated" } ++{ ++ C z = x; // { dg-bogus "'C' is deprecated" } ++} ++ ++void ++bar (const C &x, const C &y) // { dg-warning "'C' is deprecated" } ++{ ++ C z = x; // { dg-warning "'C' is deprecated" } ++} ++ ++template ++struct __attribute__((deprecated)) D { // { dg-message "declared here" } ++ D () {} ++ D (const D &); // { dg-bogus "is deprecated" } ++ D (const D &x, const D &y) { D z = x; } // { dg-bogus "is deprecated" } ++ void foo (const D &x, const D &y); // { dg-bogus "is deprecated" } ++}; ++ ++template ++void ++D::foo // { dg-bogus "is deprecated" "" { xfail *-*-* } } ++(const D &x, const D &y) // { dg-bogus "is deprecated" } ++{ ++ D z = x; // { dg-bogus "is deprecated" } ++} ++ ++template ++void ++bar (const D &x, const D &y) // { dg-warning "is deprecated" } ++{ ++ D z = x; // { dg-warning "is deprecated" } ++} +Index: gcc/testsuite/g++.dg/concepts/auto4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/concepts/auto4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/concepts/auto4.C (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++// PR c++/85006 ++// { dg-additional-options "-std=c++17 -fconcepts" } ++ ++template struct A {}; ++ ++template A foo() { return A{}; } ++ ++void bar() ++{ ++ foo(); ++} +Index: gcc/testsuite/g++.dg/asan/pr85081.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/asan/pr85081.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/asan/pr85081.C (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* PR sanitizer/85081 */ ++/* { dg-do run } */ ++/* { dg-options "-fopenmp-simd" } */ ++/* { dg-require-effective-target fopenmp } */ ++ ++inline const int& max(const int& a, const int& b) ++{ ++ return a < b ? b : a; ++} ++ ++int main() ++{ ++ #pragma omp simd ++ for ( int i = 0; i < 20; ++i ) ++ { ++ const int j = max(i, 1); ++ } ++ ++ return 0; ++} +Index: gcc/testsuite/g++.dg/asan/pr78651.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/asan/pr78651.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/asan/pr78651.C (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// PR sanitizer/78651 ++// { dg-do run } ++// { dg-additional-options "-fpic" { target fpic } } ++ ++struct A { }; ++ ++namespace { ++ ++void thisThrows () { ++ throw A(); ++} ++ ++struct SomeRandomType {}; ++} ++ ++int main() { ++ try { ++ thisThrows(); ++ } ++ catch (SomeRandomType) { ++ throw; ++ } ++ catch (A) { ++ } ++ return 0; ++} +Index: gcc/testsuite/g++.dg/inherit/covariant22.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/inherit/covariant22.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/inherit/covariant22.C (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++// PR c++/85068 ++// { dg-do compile } ++ ++struct A; ++ ++struct B ++{ ++ virtual A *foo (); // { dg-error "overriding" } ++}; ++ ++struct C : virtual B ++{ ++ virtual C *foo (); // { dg-error "invalid covariant return type for" } ++}; ++ ++struct D : C ++{ ++ virtual C *foo (); ++}; +Index: gcc/testsuite/g++.dg/template/nontype-fn1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/template/nontype-fn1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/template/nontype-fn1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++// PR c++/82664 ++ ++template < typename > struct target_disambiguator; ++template < typename R, typename A1 > struct target_disambiguator< R(A1) > { ++ typedef A1 type; ++ template < R (&)() > struct layout; ++}; ++ ++int main() { ++ typedef target_disambiguator< void (int) > ::type target_type ; ++} +Index: gcc/testsuite/g++.dg/template/dependent-base3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/template/dependent-base3.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/template/dependent-base3.C (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// PR c++/85060 ++// { dg-do compile { target c++14 } } ++ ++struct CA { ++ constexpr int foo() const { return 42; } ++}; ++ ++template ++struct CB : CA { }; ++ ++template ++struct CC : CB { ++ constexpr int bar() const { ++ const int m = CA::foo(); ++ return m; ++ } ++ ++ constexpr int baz() const { ++ const T m = CA::foo(); ++ return m; ++ } ++}; ++ ++constexpr CC c; ++ ++static_assert( c.bar() == 42, "" ); +Index: gcc/testsuite/g++.dg/template/incomplete11.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/template/incomplete11.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/template/incomplete11.C (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++// PR c++/84082 ++// { dg-do compile } ++// { dg-options "" } ++ ++struct A; ++ ++template void foo() ++{ ++ static int a[A().operator=(A())]; // { dg-error "invalid use of incomplete type 'struct A'" } ++} +Index: gcc/testsuite/c-c++-common/tsan/race_on_mutex.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/tsan/race_on_mutex.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/tsan/race_on_mutex.c (.../branches/gcc-7-branch) +@@ -37,9 +37,10 @@ + } + + /* { dg-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */ +-/* { dg-output " Atomic read of size 1 at .* by thread T2:(\n|\r\n|\r)" } */ ++/* { dg-output " Atomic read of size \[0-9]\+ at .* by thread T2:(\n|\r\n|\r)" } */ + /* { dg-output " #0 pthread_mutex_lock.*" } */ + /* { dg-output " #1 Thread2.* .*(race_on_mutex.c:22|\\?{2}:0) (.*)" } */ +-/* { dg-output " Previous write of size 1 at .* by thread T1:(\n|\r\n|\r)" } */ +-/* { dg-output " #0 pthread_mutex_init .* (.)*" } */ +-/* { dg-output " #1 Thread1.* .*(race_on_mutex.c:12|\\?{2}:0) .*" } */ ++/* { dg-output " Previous write of size \[0-9]\+ at .* by thread T1:(\n|\r\n|\r)" } */ ++/* { dg-output "( #0 \[^\n\r\]*(\n|\r\n|\r))?" } */ ++/* { dg-output " #\[01\] ((__GI_)?__)?pthread_mutex_init \[^\n\r\]* (.)*" } */ ++/* { dg-output " #\[12\] Thread1.* .*(race_on_mutex.c:12|\\?{2}:0) .*" } */ +Index: gcc/testsuite/c-c++-common/pr84999.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr84999.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr84999.c (.../branches/gcc-7-branch) +@@ -0,0 +1,12 @@ ++/* PR c/84999 */ ++/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ ++/* { dg-options "" } */ ++ ++typedef __float128 V __attribute__ ((__vector_size__ (2 * sizeof (__float128)))); ++V a; ++typeof (a != 0) b; /* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */ ++typeof (a == 0) c; /* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */ ++typeof (a < 0) d; /* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */ ++typeof (a <= 0) e; /* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */ ++typeof (a > 0) f; /* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */ ++typeof (a >= 0) g; /* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */ +Index: gcc/testsuite/c-c++-common/pr43690.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr43690.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr43690.c (.../branches/gcc-7-branch) +@@ -6,8 +6,8 @@ + foo (char *x) + { + asm ("" : : "m" (x++)); /* { dg-error "is not directly addressable" } */ +- asm ("" : : "m" (++x)); /* { dg-error "is not directly addressable" } */ ++ asm ("" : : "m" (++x)); /* { dg-error "is not directly addressable" "" { target c } } */ + asm ("" : : "m" (x--)); /* { dg-error "is not directly addressable" } */ +- asm ("" : : "m" (--x)); /* { dg-error "is not directly addressable" } */ ++ asm ("" : : "m" (--x)); /* { dg-error "is not directly addressable" "" { target c } } */ + asm ("" : : "m" (x + 1)); /* { dg-error "is not directly addressable" } */ + } +Index: gcc/testsuite/c-c++-common/torture/pr85022.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/torture/pr85022.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/torture/pr85022.c (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++/* PR inline-asm/85022 */ ++ ++extern struct B b; ++ ++void ++foo () ++{ ++ __asm ("" : "+m" (b)); ++} +Index: gcc/testsuite/c-c++-common/torture/pr87248.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/torture/pr87248.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/torture/pr87248.c (.../branches/gcc-7-branch) +@@ -0,0 +1,36 @@ ++/* PR middle-end/87248 */ ++/* { dg-do run } */ ++ ++void ++foo (signed char *p, int q) ++{ ++ *p = q & (-__SCHAR_MAX__ - 1) ? (-__SCHAR_MAX__ - 1) : 0; ++} ++ ++int ++bar (long long x) ++{ ++ return x & (-__INT_MAX__ - 1) ? (-__INT_MAX__ - 1) : 0; ++} ++ ++int ++main () ++{ ++#if __INT_MAX__ > 4 * __SCHAR_MAX__ ++ signed char a[4]; ++ foo (a, __SCHAR_MAX__ + 1U); ++ foo (a + 1, 2 * (__SCHAR_MAX__ + 1U)); ++ foo (a + 2, -__INT_MAX__ - 1); ++ foo (a + 3, (__SCHAR_MAX__ + 1U) / 2); ++ if (a[0] != (-__SCHAR_MAX__ - 1) || a[1] != a[0] || a[2] != a[0] || a[3] != 0) ++ __builtin_abort (); ++#endif ++#if __LONG_LONG_MAX__ > 4 * __INT_MAX__ ++ if (bar (__INT_MAX__ + 1LL) != (-__INT_MAX__ - 1) ++ || bar (2 * (__INT_MAX__ + 1LL)) != (-__INT_MAX__ - 1) ++ || bar (-__LONG_LONG_MAX__ - 1) != (-__INT_MAX__ - 1) ++ || bar ((__INT_MAX__ + 1LL) / 2) != 0) ++ __builtin_abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/c-c++-common/gomp/pr83977-2.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr83977-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr83977-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++/* PR middle-end/83977 */ ++/* { dg-do compile } */ ++ ++void bar (void); ++ ++#pragma omp declare simd uniform (b) linear(a:b) ++int ++foo (int a, int b) ++{ ++ a = a + 1; ++/* This function can't be called from simd loops, ++ because it violates declare simd restrictions. ++ We shouldn't ICE on it though, nor attempt to generate ++ simd clones for the *omp_fn* functions. */ ++ #pragma omp parallel ++ bar (); ++ return a; ++} +Index: gcc/testsuite/c-c++-common/gomp/pr85696.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr85696.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr85696.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* PR c/85696 */ ++ ++#ifndef __cplusplus ++void ++foo (int n, int a[][n]) ++{ ++ #pragma omp parallel shared(a) default(none) ++ #pragma omp master ++ a[23][0] = 42; ++} ++#endif ++ ++void ++bar (int n, void *p) ++{ ++ int (*a)[n] = (int (*)[n]) p; ++ #pragma omp parallel shared(a) default(none) ++ #pragma omp master ++ a[23][0] = 42; ++} +Index: gcc/testsuite/c-c++-common/gomp/pr84341.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr84341.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr84341.c (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++/* PR c++/84341 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp" } */ ++ ++void ++foo (int i) ++{ ++ #pragma omp atomic ++ i = &i + 1; /* { dg-error "invalid form of" } */ ++} +Index: gcc/testsuite/c-c++-common/gomp/pr86025.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr86025.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr86025.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* PR c++/86025 */ ++/* { dg-do compile } */ ++/* { dg-additional-options "-Wduplicated-branches" } */ ++ ++int i; ++ ++void ++foo (int x) ++{ ++ if (x) ++ { ++ #pragma omp critical (foo) ++ i++; ++ } ++ else ++ { ++ #pragma omp critical ++ i++; ++ } ++} +Index: gcc/testsuite/c-c++-common/gomp/pr83977-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr83977-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr83977-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* PR middle-end/83977 */ ++/* { dg-do compile } */ ++/* { dg-additional-options "-O2" } */ ++ ++struct S { int a, b, c; }; ++ ++#pragma omp declare simd uniform(z) linear(v:1) ++__attribute__((noinline)) static int ++foo (int x, int y, struct S z, int u, int v) ++{ ++ return x + y + z.a; ++} ++ ++int ++bar (int x, int y, int z) ++{ ++ struct S s = { z, 1, 1 }; ++ return foo (x, y, s, 0, 0); ++} +Index: gcc/testsuite/c-c++-common/gomp/pr83977-3.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr83977-3.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr83977-3.c (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* PR middle-end/83977 */ ++/* { dg-do compile } */ ++ ++void bar (void); ++int foo (int, int) __attribute__((used)); ++ ++#pragma omp declare simd uniform (b) linear(a:b) ++int ++foo (int a, int b) ++{ ++ a = a + 1; ++/* This function can't be called from simd loops, ++ because it violates declare simd restrictions. ++ We shouldn't ICE on it though, nor attempt to generate ++ simd clones for the *omp_fn* functions. */ ++ #pragma omp parallel ++ bar (); ++ return a; ++} ++ ++int foo (int, int) __attribute__((unused)); +Index: gcc/testsuite/c-c++-common/pr84873.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr84873.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr84873.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-frounding-math" } */ ++ ++int ++i1 (int w3, int n9) ++{ ++ return w3 >> ((long int)(1 + 0.1) + -!n9); ++} +Index: gcc/cp/typeck.c +=================================================================== +--- a/src/gcc/cp/typeck.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/typeck.c (.../branches/gcc-7-branch) +@@ -905,14 +905,14 @@ + return t1; + + default:; ++ if (attribute_list_equal (TYPE_ATTRIBUTES (t1), attributes)) ++ return t1; ++ else if (attribute_list_equal (TYPE_ATTRIBUTES (t2), attributes)) ++ return t2; ++ break; + } + +- if (attribute_list_equal (TYPE_ATTRIBUTES (t1), attributes)) +- return t1; +- else if (attribute_list_equal (TYPE_ATTRIBUTES (t2), attributes)) +- return t2; +- else +- return cp_build_type_attribute_variant (t1, attributes); ++ return cp_build_type_attribute_variant (t1, attributes); + } + + /* Return the ARRAY_TYPE type without its domain. */ +@@ -5713,19 +5713,6 @@ + return arg; + } + +- /* ??? Cope with user tricks that amount to offsetof. */ +- if (TREE_CODE (argtype) != FUNCTION_TYPE +- && TREE_CODE (argtype) != METHOD_TYPE +- && argtype != unknown_type_node +- && (val = get_base_address (arg)) +- && COMPLETE_TYPE_P (TREE_TYPE (val)) +- && INDIRECT_REF_P (val) +- && TREE_CONSTANT (TREE_OPERAND (val, 0))) +- { +- tree type = build_pointer_type (argtype); +- return fold_convert (type, fold_offsetof_1 (arg)); +- } +- + /* Handle complex lvalues (when permitted) + by reduction to simpler cases. */ + val = unary_complex_lvalue (ADDR_EXPR, arg); +@@ -6177,6 +6164,25 @@ + return cp_build_unary_op (code, xarg, noconvert, tf_warning_or_error); + } + ++/* Adjust LVALUE, an MODIFY_EXPR, PREINCREMENT_EXPR or PREDECREMENT_EXPR, ++ so that it is a valid lvalue even for GENERIC by replacing ++ (lhs = rhs) with ((lhs = rhs), lhs) ++ (--lhs) with ((--lhs), lhs) ++ (++lhs) with ((++lhs), lhs) ++ and if lhs has side-effects, calling cp_stabilize_reference on it, so ++ that it can be evaluated multiple times. */ ++ ++tree ++genericize_compound_lvalue (tree lvalue) ++{ ++ if (TREE_SIDE_EFFECTS (TREE_OPERAND (lvalue, 0))) ++ lvalue = build2 (TREE_CODE (lvalue), TREE_TYPE (lvalue), ++ cp_stabilize_reference (TREE_OPERAND (lvalue, 0)), ++ TREE_OPERAND (lvalue, 1)); ++ return build2 (COMPOUND_EXPR, TREE_TYPE (TREE_OPERAND (lvalue, 0)), ++ lvalue, TREE_OPERAND (lvalue, 0)); ++} ++ + /* Apply unary lvalue-demanding operator CODE to the expression ARG + for certain kinds of expressions which are not really lvalues + but which we can accept as lvalues. +@@ -6211,17 +6217,7 @@ + if (TREE_CODE (arg) == MODIFY_EXPR + || TREE_CODE (arg) == PREINCREMENT_EXPR + || TREE_CODE (arg) == PREDECREMENT_EXPR) +- { +- tree lvalue = TREE_OPERAND (arg, 0); +- if (TREE_SIDE_EFFECTS (lvalue)) +- { +- lvalue = cp_stabilize_reference (lvalue); +- arg = build2 (TREE_CODE (arg), TREE_TYPE (arg), +- lvalue, TREE_OPERAND (arg, 1)); +- } +- return unary_complex_lvalue +- (code, build2 (COMPOUND_EXPR, TREE_TYPE (lvalue), arg, lvalue)); +- } ++ return unary_complex_lvalue (code, genericize_compound_lvalue (arg)); + + if (code != ADDR_EXPR) + return NULL_TREE; +@@ -7617,11 +7613,7 @@ + case PREINCREMENT_EXPR: + if (compound_side_effects_p) + newrhs = rhs = stabilize_expr (rhs, &preeval); +- if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0))) +- lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs), +- cp_stabilize_reference (TREE_OPERAND (lhs, 0)), +- TREE_OPERAND (lhs, 1)); +- lhs = build2 (COMPOUND_EXPR, lhstype, lhs, TREE_OPERAND (lhs, 0)); ++ lhs = genericize_compound_lvalue (lhs); + maybe_add_compound: + /* If we had (bar, --foo) = 5; or (bar, (baz, --foo)) = 5; + and looked through the COMPOUND_EXPRs, readd them now around +@@ -7644,11 +7636,7 @@ + case MODIFY_EXPR: + if (compound_side_effects_p) + newrhs = rhs = stabilize_expr (rhs, &preeval); +- if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0))) +- lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs), +- cp_stabilize_reference (TREE_OPERAND (lhs, 0)), +- TREE_OPERAND (lhs, 1)); +- lhs = build2 (COMPOUND_EXPR, lhstype, lhs, TREE_OPERAND (lhs, 0)); ++ lhs = genericize_compound_lvalue (lhs); + goto maybe_add_compound; + + case MIN_EXPR: +Index: gcc/cp/optimize.c +=================================================================== +--- a/src/gcc/cp/optimize.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/optimize.c (.../branches/gcc-7-branch) +@@ -46,6 +46,8 @@ + /* We may have taken its address. */ + TREE_ADDRESSABLE (cloned_parm) = TREE_ADDRESSABLE (parm); + ++ DECL_BY_REFERENCE (cloned_parm) = DECL_BY_REFERENCE (parm); ++ + /* The definition might have different constness. */ + TREE_READONLY (cloned_parm) = TREE_READONLY (parm); + +Index: gcc/cp/init.c +=================================================================== +--- a/src/gcc/cp/init.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/init.c (.../branches/gcc-7-branch) +@@ -1632,6 +1632,7 @@ + if (VAR_P (exp) && DECL_DECOMPOSITION_P (exp)) + { + from_array = 1; ++ init = mark_rvalue_use (init); + if (init && DECL_P (init) + && !(flags & LOOKUP_ONLYCONVERTING)) + { +Index: gcc/cp/class.c +=================================================================== +--- a/src/gcc/cp/class.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/class.c (.../branches/gcc-7-branch) +@@ -2732,19 +2732,20 @@ + order. Of course it is lame that we have to repeat the + search here anyway -- we should really be caching pieces + of the vtable and avoiding this repeated work. */ +- tree thunk_binfo, base_binfo; ++ tree thunk_binfo = NULL_TREE; ++ tree base_binfo = TYPE_BINFO (base_return); + + /* Find the base binfo within the overriding function's + return type. We will always find a thunk_binfo, except + when the covariancy is invalid (which we will have + already diagnosed). */ +- for (base_binfo = TYPE_BINFO (base_return), +- thunk_binfo = TYPE_BINFO (over_return); +- thunk_binfo; +- thunk_binfo = TREE_CHAIN (thunk_binfo)) +- if (SAME_BINFO_TYPE_P (BINFO_TYPE (thunk_binfo), +- BINFO_TYPE (base_binfo))) +- break; ++ if (base_binfo) ++ for (thunk_binfo = TYPE_BINFO (over_return); thunk_binfo; ++ thunk_binfo = TREE_CHAIN (thunk_binfo)) ++ if (SAME_BINFO_TYPE_P (BINFO_TYPE (thunk_binfo), ++ BINFO_TYPE (base_binfo))) ++ break; ++ gcc_assert (thunk_binfo || errorcount); + + /* See if virtual inheritance is involved. */ + for (virtual_offset = thunk_binfo; +@@ -4532,8 +4533,14 @@ + DECL_ARTIFICIAL (decl) = 1; + DECL_IGNORED_P (decl) = 1; + DECL_FIELD_CONTEXT (decl) = t; +- DECL_SIZE (decl) = CLASSTYPE_SIZE (basetype); +- DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype); ++ if (is_empty_class (basetype)) ++ /* CLASSTYPE_SIZE is one byte, but the field needs to have size zero. */ ++ DECL_SIZE (decl) = DECL_SIZE_UNIT (decl) = size_zero_node; ++ else ++ { ++ DECL_SIZE (decl) = CLASSTYPE_SIZE (basetype); ++ DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype); ++ } + SET_DECL_ALIGN (decl, CLASSTYPE_ALIGN (basetype)); + DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype); + SET_DECL_MODE (decl, TYPE_MODE (basetype)); +@@ -6655,6 +6662,7 @@ + bitsize_int (BITS_PER_UNIT))); + SET_TYPE_ALIGN (base_t, rli->record_align); + TYPE_USER_ALIGN (base_t) = TYPE_USER_ALIGN (t); ++ TYPE_TYPELESS_STORAGE (base_t) = TYPE_TYPELESS_STORAGE (t); + + /* Copy the fields from T. */ + next_field = &TYPE_FIELDS (base_t); +@@ -7592,7 +7600,8 @@ + + case CALL_EXPR: + /* This is a call to a constructor, hence it's never zero. */ +- if (TREE_HAS_CONSTRUCTOR (instance)) ++ if (CALL_EXPR_FN (instance) ++ && TREE_HAS_CONSTRUCTOR (instance)) + { + if (nonnull) + *nonnull = 1; +Index: gcc/cp/decl.c +=================================================================== +--- a/src/gcc/cp/decl.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/decl.c (.../branches/gcc-7-branch) +@@ -5022,7 +5022,7 @@ + } + + /* If #pragma weak was used, mark the decl weak now. */ +- if (!processing_template_decl) ++ if (!processing_template_decl && !DECL_DECOMPOSITION_P (decl)) + maybe_apply_pragma_weak (decl); + + if (TREE_CODE (decl) == FUNCTION_DECL +@@ -5042,19 +5042,17 @@ + if (field == NULL_TREE + || !(VAR_P (field) || variable_template_p (field))) + error ("%q+#D is not a static data member of %q#T", decl, context); ++ else if (variable_template_p (field) ++ && (DECL_LANG_SPECIFIC (decl) ++ && DECL_TEMPLATE_SPECIALIZATION (decl))) ++ /* OK, specialization was already checked. */; + else if (variable_template_p (field) && !this_tmpl) + { +- if (DECL_LANG_SPECIFIC (decl) +- && DECL_TEMPLATE_SPECIALIZATION (decl)) +- /* OK, specialization was already checked. */; +- else +- { +- error_at (DECL_SOURCE_LOCATION (decl), +- "non-member-template declaration of %qD", decl); +- inform (DECL_SOURCE_LOCATION (field), "does not match " +- "member template declaration here"); +- return error_mark_node; +- } ++ error_at (DECL_SOURCE_LOCATION (decl), ++ "non-member-template declaration of %qD", decl); ++ inform (DECL_SOURCE_LOCATION (field), "does not match " ++ "member template declaration here"); ++ return error_mark_node; + } + else + { +@@ -5798,8 +5796,18 @@ + return error_mark_node; + + if (TREE_CODE (d->cur->index) == FIELD_DECL) +- /* We already reshaped this. */ +- gcc_assert (d->cur->index == field); ++ { ++ /* We already reshaped this. */ ++ if (field != d->cur->index) ++ { ++ tree id = DECL_NAME (d->cur->index); ++ gcc_assert (id); ++ gcc_checking_assert (lookup_field_1 (type, id, ++ /*want_type=*/false) ++ == d->cur->index); ++ field = d->cur->index; ++ } ++ } + else if (TREE_CODE (d->cur->index) == IDENTIFIER_NODE) + field = lookup_field_1 (type, d->cur->index, /*want_type=*/false); + else +@@ -6402,7 +6410,9 @@ + } + + if (init_code +- && (DECL_IN_AGGR_P (decl) && !DECL_VAR_DECLARED_INLINE_P (decl))) ++ && (DECL_IN_AGGR_P (decl) ++ && DECL_INITIALIZED_IN_CLASS_P (decl) ++ && !DECL_VAR_DECLARED_INLINE_P (decl))) + { + static int explained = 0; + +@@ -7213,7 +7223,9 @@ + { + bool member_seen = false; + for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field)) +- if (TREE_CODE (field) != FIELD_DECL || DECL_ARTIFICIAL (field)) ++ if (TREE_CODE (field) != FIELD_DECL ++ || DECL_ARTIFICIAL (field) ++ || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field))) + continue; + else if (ret) + return type; +@@ -7228,9 +7240,9 @@ + inform (DECL_SOURCE_LOCATION (field), "declared here"); + return error_mark_node; + } +- else if (TREE_PRIVATE (field) || TREE_PROTECTED (field)) ++ else if (!accessible_p (type, field, true)) + { +- error_at (loc, "cannot decompose non-public member %qD of %qT", ++ error_at (loc, "cannot decompose inaccessible member %qD of %qT", + field, type); + inform (DECL_SOURCE_LOCATION (field), + TREE_PRIVATE (field) +@@ -7252,7 +7264,7 @@ + tree t = find_decomp_class_base (loc, TREE_TYPE (base_binfo), ret); + if (t == error_mark_node) + return error_mark_node; +- if (t != NULL_TREE) ++ if (t != NULL_TREE && t != ret) + { + if (ret == type) + { +@@ -7263,9 +7275,6 @@ + } + else if (orig_ret != NULL_TREE) + return t; +- else if (ret == t) +- /* OK, found the same base along another path. We'll complain +- in convert_to_base if it's ambiguous. */; + else if (ret != NULL_TREE) + { + error_at (loc, "cannot decompose class type %qT: its base " +@@ -7341,8 +7350,30 @@ + + tree fns = lookup_qualified_name (TREE_TYPE (e), get_id, + /*type*/false, /*complain*/false); +- if (fns != error_mark_node) ++ bool use_member_get = false; ++ ++ /* To use a member get, member lookup must find at least one ++ declaration that is a function template ++ whose first template parameter is a non-type parameter. */ ++ for (tree iter = BASELINK_P (fns) ? BASELINK_FUNCTIONS (fns) : fns; ++ iter; ++ iter = OVL_NEXT (iter)) + { ++ tree fn = OVL_CURRENT (iter); ++ if (TREE_CODE (fn) == TEMPLATE_DECL) ++ { ++ tree tparms = DECL_TEMPLATE_PARMS (fn); ++ tree parm = TREE_VEC_ELT (INNERMOST_TEMPLATE_PARMS (tparms), 0); ++ if (TREE_CODE (TREE_VALUE (parm)) == PARM_DECL) ++ { ++ use_member_get = true; ++ break; ++ } ++ } ++ } ++ ++ if (use_member_get) ++ { + fns = lookup_template_function (fns, targs); + return build_new_method_call (e, fns, /*args*/NULL, + /*path*/NULL_TREE, LOOKUP_NORMAL, +@@ -7391,6 +7422,7 @@ + for (unsigned int i = 0; i < count; i++, d = DECL_CHAIN (d)) + v[count - i - 1] = d; + SET_DECL_ASSEMBLER_NAME (decl, mangle_decomp (decl, v)); ++ maybe_apply_pragma_weak (decl); + } + } + +@@ -7466,6 +7498,12 @@ + type = complete_type (TREE_TYPE (type)); + if (type == error_mark_node) + goto error_out; ++ if (!COMPLETE_TYPE_P (type)) ++ { ++ error_at (loc, "structured binding refers to incomplete type %qT", ++ type); ++ goto error_out; ++ } + } + + tree eltype = NULL_TREE; +@@ -7640,7 +7678,9 @@ + goto error_out; + } + for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field)) +- if (TREE_CODE (field) != FIELD_DECL || DECL_ARTIFICIAL (field)) ++ if (TREE_CODE (field) != FIELD_DECL ++ || DECL_ARTIFICIAL (field) ++ || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field))) + continue; + else + eltscnt++; +@@ -7655,7 +7695,9 @@ + } + unsigned int i = 0; + for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field)) +- if (TREE_CODE (field) != FIELD_DECL || DECL_ARTIFICIAL (field)) ++ if (TREE_CODE (field) != FIELD_DECL ++ || DECL_ARTIFICIAL (field) ++ || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field))) + continue; + else + { +@@ -9517,7 +9559,8 @@ + constant_expression_error (size); + + /* An array must have a positive number of elements. */ +- if (tree_int_cst_lt (size, integer_zero_node)) ++ tree signed_size = fold_convert (ssizetype, size); ++ if (tree_int_cst_lt (signed_size, integer_zero_node)) + { + if (!(complain & tf_error)) + return error_mark_node; +@@ -10097,6 +10140,8 @@ + declspecs->locations); + if (typespec_loc == UNKNOWN_LOCATION) + typespec_loc = declspecs->locations[ds_type_spec]; ++ if (typespec_loc == UNKNOWN_LOCATION) ++ typespec_loc = input_location; + + /* Look inside a declarator for the name being declared + and get it as a string, for an error message. */ +@@ -10366,7 +10411,7 @@ + suppress reports of deprecated items. */ + if (type && TREE_DEPRECATED (type) + && deprecated_state != DEPRECATED_SUPPRESS) +- warn_deprecated_use (type, NULL_TREE); ++ cp_warn_deprecated_use (type); + if (type && TREE_CODE (type) == TYPE_DECL) + { + typedef_decl = type; +@@ -10374,7 +10419,7 @@ + if (TREE_DEPRECATED (type) + && DECL_ARTIFICIAL (typedef_decl) + && deprecated_state != DEPRECATED_SUPPRESS) +- warn_deprecated_use (type, NULL_TREE); ++ cp_warn_deprecated_use (type); + } + /* No type at all: default to `int', and set DEFAULTED_INT + because it was not a user-defined typedef. */ +@@ -11169,9 +11214,19 @@ + explicitp = 2; + } + +- arg_types = grokparms (declarator->u.function.parameters, +- &parms); ++ tree pushed_scope = NULL_TREE; ++ if (funcdecl_p ++ && decl_context != FIELD ++ && inner_declarator->u.id.qualifying_scope ++ && CLASS_TYPE_P (inner_declarator->u.id.qualifying_scope)) ++ pushed_scope ++ = push_scope (inner_declarator->u.id.qualifying_scope); + ++ arg_types = grokparms (declarator->u.function.parameters, &parms); ++ ++ if (pushed_scope) ++ pop_scope (pushed_scope); ++ + if (inner_declarator + && inner_declarator->kind == cdk_id + && inner_declarator->u.id.sfk == sfk_destructor +@@ -12556,7 +12611,9 @@ + A default argument expression is implicitly converted to the + parameter type. */ + ++cp_unevaluated_operand; +- perform_implicit_conversion_flags (decl_type, arg, complain, ++ /* Avoid digest_init clobbering the initializer. */ ++ tree carg = BRACE_ENCLOSED_INITIALIZER_P (arg) ? unshare_expr (arg): arg; ++ perform_implicit_conversion_flags (decl_type, carg, complain, + LOOKUP_IMPLICIT); + --cp_unevaluated_operand; + +@@ -12685,7 +12742,7 @@ + { + tree deptype = type_is_deprecated (type); + if (deptype) +- warn_deprecated_use (deptype, NULL_TREE); ++ cp_warn_deprecated_use (deptype); + } + + /* Top-level qualifiers on the parameters are +Index: gcc/cp/method.c +=================================================================== +--- a/src/gcc/cp/method.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/method.c (.../branches/gcc-7-branch) +@@ -1165,6 +1165,7 @@ + { + tree ctype = to; + vec *args = NULL; ++ cp_unevaluated cp_uneval_guard; + if (TREE_CODE (to) != REFERENCE_TYPE) + to = cp_build_reference_type (to, /*rval*/false); + tree ob = build_stub_object (to); +@@ -1430,7 +1431,7 @@ + synthesized_method_base_walk (tree binfo, tree base_binfo, + int quals, bool copy_arg_p, + bool move_p, bool ctor_p, +- tree inheriting_ctor, tree inherited_parms, ++ tree *inheriting_ctor, tree inherited_parms, + tree fnname, int flags, bool diag, + tree *spec_p, bool *trivial_p, + bool *deleted_p, bool *constexpr_p) +@@ -1441,8 +1442,9 @@ + + if (copy_arg_p) + argtype = build_stub_type (BINFO_TYPE (base_binfo), quals, move_p); +- else if ((inherited_binfo +- = binfo_inherited_from (binfo, base_binfo, inheriting_ctor))) ++ else if (inheriting_ctor ++ && (inherited_binfo ++ = binfo_inherited_from (binfo, base_binfo, *inheriting_ctor))) + { + argtype = inherited_parms; + /* Don't check access on the inherited constructor. */ +@@ -1464,6 +1466,12 @@ + if (defer != dk_no_deferred) + pop_deferring_access_checks (); + ++ /* Replace an inherited template with the appropriate specialization. */ ++ if (inherited_binfo && rval ++ && DECL_P (*inheriting_ctor) && DECL_P (rval) ++ && DECL_CONTEXT (*inheriting_ctor) == DECL_CONTEXT (rval)) ++ *inheriting_ctor = DECL_CLONED_FUNCTION (rval); ++ + process_subob_fn (rval, spec_p, trivial_p, deleted_p, + constexpr_p, diag, BINFO_TYPE (base_binfo)); + if (ctor_p && +@@ -1498,7 +1506,7 @@ + synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p, + tree *spec_p, bool *trivial_p, bool *deleted_p, + bool *constexpr_p, bool diag, +- tree inheriting_ctor, tree inherited_parms) ++ tree *inheriting_ctor, tree inherited_parms) + { + tree binfo, base_binfo, fnname; + int i; +@@ -1553,7 +1561,7 @@ + } + + gcc_assert ((sfk == sfk_inheriting_constructor) +- == (inheriting_ctor != NULL_TREE)); ++ == (inheriting_ctor && *inheriting_ctor != NULL_TREE)); + + /* If that user-written default constructor would satisfy the + requirements of a constexpr constructor (7.1.5), the +@@ -1628,7 +1636,7 @@ + tree scope = push_scope (ctype); + + int flags = LOOKUP_NORMAL | LOOKUP_SPECULATIVE; +- if (!inheriting_ctor) ++ if (sfk != sfk_inheriting_constructor) + flags |= LOOKUP_DEFAULTED; + + tsubst_flags_t complain = diag ? tf_warning_or_error : tf_none; +@@ -1731,9 +1739,9 @@ + tree parm_type = TREE_VALUE (parms); + bool const_p = CP_TYPE_CONST_P (non_reference (parm_type)); + tree spec = empty_except_spec; ++ tree inh = DECL_INHERITED_CTOR (decl); + synthesized_method_walk (ctype, sfk, const_p, &spec, NULL, NULL, +- NULL, false, DECL_INHERITED_CTOR (decl), +- parms); ++ NULL, false, &inh, parms); + return spec; + } + +@@ -1810,10 +1818,11 @@ + tree raises = NULL_TREE; + bool deleted_p = false; + tree scope = push_scope (ctype); ++ tree inh = DECL_INHERITED_CTOR (decl); + + synthesized_method_walk (ctype, sfk, const_p, + &raises, NULL, &deleted_p, NULL, false, +- DECL_INHERITED_CTOR (decl), parms); ++ &inh, parms); + if (deleted_p) + { + inform (DECL_SOURCE_LOCATION (decl), +@@ -1821,7 +1830,7 @@ + "definition would be ill-formed:", decl); + synthesized_method_walk (ctype, sfk, const_p, + NULL, NULL, NULL, NULL, true, +- DECL_INHERITED_CTOR (decl), parms); ++ &inh, parms); + } + else if (!comp_except_specs + (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (decl)), +@@ -1850,11 +1859,12 @@ + { + tree parm_type = TREE_VALUE (FUNCTION_FIRST_USER_PARMTYPE (decl)); + bool const_p = CP_TYPE_CONST_P (non_reference (parm_type)); ++ tree inh = DECL_INHERITED_CTOR (decl); + bool dummy; + synthesized_method_walk (DECL_CLASS_CONTEXT (decl), + special_function_p (decl), const_p, + NULL, NULL, NULL, &dummy, true, +- DECL_INHERITED_CTOR (decl), ++ &inh, + FUNCTION_FIRST_USER_PARMTYPE (decl)); + } + +@@ -1869,10 +1879,11 @@ + gcc_assert (DECL_INHERITED_CTOR (decl)); + tree spec; + bool trivial, constexpr_, deleted; ++ tree inh = DECL_INHERITED_CTOR (decl); + synthesized_method_walk (DECL_CONTEXT (decl), sfk_inheriting_constructor, + false, &spec, &trivial, &deleted, &constexpr_, + /*diag*/false, +- DECL_INHERITED_CTOR (decl), ++ &inh, + FUNCTION_FIRST_USER_PARMTYPE (decl)); + if (TREE_CODE (inherited_ctor_binfo (decl)) != TREE_BINFO) + /* Inherited the same constructor from different base subobjects. */ +@@ -1879,6 +1890,7 @@ + deleted = true; + DECL_DELETED_FN (decl) = deleted; + TREE_TYPE (decl) = build_exception_variant (TREE_TYPE (decl), spec); ++ SET_DECL_INHERITED_CTOR (decl, inh); + + tree clone; + FOR_EACH_CLONE (clone, decl) +@@ -1885,6 +1897,7 @@ + { + DECL_DELETED_FN (clone) = deleted; + TREE_TYPE (clone) = build_exception_variant (TREE_TYPE (clone), spec); ++ SET_DECL_INHERITED_CTOR (clone, inh); + } + } + +@@ -1999,12 +2012,12 @@ + raises = unevaluated_noexcept_spec (); + synthesized_method_walk (type, kind, const_p, NULL, &trivial_p, + &deleted_p, &constexpr_p, false, +- inherited_ctor, inherited_parms); ++ &inherited_ctor, inherited_parms); + } + else + synthesized_method_walk (type, kind, const_p, &raises, &trivial_p, + &deleted_p, &constexpr_p, false, +- inherited_ctor, inherited_parms); ++ &inherited_ctor, inherited_parms); + /* Don't bother marking a deleted constructor as constexpr. */ + if (deleted_p) + constexpr_p = false; +@@ -2120,7 +2133,7 @@ + input_location = DECL_SOURCE_LOCATION (fn); + synthesized_method_walk (type, kind, const_p, + NULL, NULL, NULL, NULL, true, +- NULL_TREE, NULL_TREE); ++ NULL, NULL_TREE); + input_location = loc; + } + +Index: gcc/cp/constexpr.c +=================================================================== +--- a/src/gcc/cp/constexpr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/constexpr.c (.../branches/gcc-7-branch) +@@ -1140,7 +1140,10 @@ + /* Don't fold __builtin_constant_p within a constexpr function. */ + bool bi_const_p = (DECL_FUNCTION_CODE (fun) == BUILT_IN_CONSTANT_P); + ++ /* If we aren't requiring a constant expression, defer __builtin_constant_p ++ in a constexpr function until we have values for the parameters. */ + if (bi_const_p ++ && ctx->quiet + && current_function_decl + && DECL_DECLARED_CONSTEXPR_P (current_function_decl)) + { +@@ -1155,8 +1158,14 @@ + bool dummy1 = false, dummy2 = false; + for (i = 0; i < nargs; ++i) + { +- args[i] = cxx_eval_constant_expression (&new_ctx, CALL_EXPR_ARG (t, i), +- false, &dummy1, &dummy2); ++ args[i] = CALL_EXPR_ARG (t, i); ++ /* If builtin_valid_in_constant_expr_p is true, ++ potential_constant_expression_1 has not recursed into the arguments ++ of the builtin, verify it here. */ ++ if (!builtin_valid_in_constant_expr_p (fun) ++ || potential_constant_expression (args[i])) ++ args[i] = cxx_eval_constant_expression (&new_ctx, args[i], false, ++ &dummy1, &dummy2); + if (bi_const_p) + /* For __built_in_constant_p, fold all expressions with constant values + even if they aren't C++ constant-expressions. */ +@@ -1274,6 +1283,8 @@ + + if (!*non_constant_p) + { ++ /* Don't share a CONSTRUCTOR that might be changed. */ ++ arg = unshare_constructor (arg); + /* Make sure the binding has the same type as the parm. But + only for constant args. */ + if (TREE_CODE (type) != REFERENCE_TYPE) +@@ -2783,14 +2794,20 @@ + gcc_assert (is_empty_class (TREE_TYPE (TREE_TYPE (index)))); + changed = true; + } +- else if (new_ctx.ctor != ctx->ctor) ++ else + { +- /* We appended this element above; update the value. */ +- gcc_assert ((*p)->last().index == index); +- (*p)->last().value = elt; ++ if (new_ctx.ctor != ctx->ctor) ++ { ++ /* We appended this element above; update the value. */ ++ gcc_assert ((*p)->last().index == index); ++ (*p)->last().value = elt; ++ } ++ else ++ CONSTRUCTOR_APPEND_ELT (*p, index, elt); ++ /* Adding or replacing an element might change the ctor's flags. */ ++ TREE_CONSTANT (ctx->ctor) = constant_p; ++ TREE_SIDE_EFFECTS (ctx->ctor) = side_effects_p; + } +- else +- CONSTRUCTOR_APPEND_ELT (*p, index, elt); + } + if (*non_constant_p || !changed) + return t; +@@ -2826,7 +2843,6 @@ + unsigned HOST_WIDE_INT max = tree_to_uhwi (array_type_nelts_top (atype)); + verify_ctor_sanity (ctx, atype); + vec **p = &CONSTRUCTOR_ELTS (ctx->ctor); +- vec_alloc (*p, max + 1); + bool pre_init = false; + unsigned HOST_WIDE_INT i; + +@@ -2881,6 +2897,9 @@ + { + /* Initializing an element using value or default initialization + we just pre-built above. */ ++ if (init == void_node) ++ /* Trivial default-init, don't do anything to the CONSTRUCTOR. */ ++ return ctx->ctor; + eltinit = cxx_eval_constant_expression (&new_ctx, init, lval, + non_constant_p, overflow_p); + reuse = i == 0; +@@ -2895,9 +2914,8 @@ + if (!lvalue_p (init)) + eltinit = move (eltinit); + eltinit = force_rvalue (eltinit, tf_warning_or_error); +- eltinit = (cxx_eval_constant_expression +- (&new_ctx, eltinit, lval, +- non_constant_p, overflow_p)); ++ eltinit = cxx_eval_constant_expression (&new_ctx, eltinit, lval, ++ non_constant_p, overflow_p); + } + if (*non_constant_p && !ctx->quiet) + break; +@@ -2910,22 +2928,24 @@ + else + CONSTRUCTOR_APPEND_ELT (*p, idx, eltinit); + /* Reuse the result of cxx_eval_constant_expression call +- from the first iteration to all others if it is a constant +- initializer that doesn't require relocations. */ ++ from the first iteration to all others if it is a constant ++ initializer that doesn't require relocations. */ + if (reuse + && max > 1 +- && (initializer_constant_valid_p (eltinit, TREE_TYPE (eltinit)) +- == null_pointer_node)) ++ && (eltinit == NULL_TREE ++ || (initializer_constant_valid_p (eltinit, TREE_TYPE (eltinit)) ++ == null_pointer_node))) + { + if (new_ctx.ctor != ctx->ctor) + eltinit = new_ctx.ctor; +- for (i = 1; i < max; ++i) +- { +- idx = build_int_cst (size_type_node, i); +- CONSTRUCTOR_APPEND_ELT (*p, idx, unshare_constructor (eltinit)); +- } ++ tree range = build2 (RANGE_EXPR, size_type_node, ++ build_int_cst (size_type_node, 1), ++ build_int_cst (size_type_node, max - 1)); ++ CONSTRUCTOR_APPEND_ELT (*p, range, unshare_constructor (eltinit)); + break; + } ++ else if (i == 0) ++ vec_safe_reserve (*p, max); + } + + if (!*non_constant_p) +@@ -2966,9 +2986,9 @@ + static tree + cxx_fold_indirect_ref (location_t loc, tree type, tree op0, bool *empty_base) + { +- tree sub, subtype; ++ tree sub = op0; ++ tree subtype; + +- sub = op0; + STRIP_NOPS (sub); + subtype = TREE_TYPE (sub); + if (!POINTER_TYPE_P (subtype)) +@@ -3023,7 +3043,8 @@ + { + tree part_width = TYPE_SIZE (type); + tree index = bitsize_int (0); +- return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width, index); ++ return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width, ++ index); + } + /* Also handle conversion to an empty base class, which + is represented with a NOP_EXPR. */ +@@ -3063,19 +3084,31 @@ + /* ((foo*)&vectorfoo)[1] => BIT_FIELD_REF */ + if (VECTOR_TYPE_P (op00type) + && (same_type_ignoring_top_level_qualifiers_p +- (type, TREE_TYPE (op00type)))) ++ (type, TREE_TYPE (op00type))) ++ /* POINTER_PLUS_EXPR second operand is sizetype, unsigned, ++ but we want to treat offsets with MSB set as negative. ++ For the code below negative offsets are invalid and ++ TYPE_SIZE of the element is something unsigned, so ++ check whether op01 fits into HOST_WIDE_INT, which ++ implies it is from 0 to INTTYPE_MAXIMUM (HOST_WIDE_INT), and ++ then just use unsigned HOST_WIDE_INT because we want to treat ++ the value as unsigned. */ ++ && tree_fits_shwi_p (op01)) + { +- HOST_WIDE_INT offset = tree_to_shwi (op01); + tree part_width = TYPE_SIZE (type); +- unsigned HOST_WIDE_INT part_widthi = tree_to_shwi (part_width)/BITS_PER_UNIT; +- unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT; +- tree index = bitsize_int (indexi); +- +- if (offset / part_widthi < TYPE_VECTOR_SUBPARTS (op00type)) +- return fold_build3_loc (loc, +- BIT_FIELD_REF, type, op00, +- part_width, index); +- ++ unsigned HOST_WIDE_INT max_offset ++ = (tree_to_uhwi (part_width) / BITS_PER_UNIT ++ * TYPE_VECTOR_SUBPARTS (op00type)); ++ if (tree_int_cst_sign_bit (op01) == 0 ++ && compare_tree_int (op01, max_offset) == -1) ++ { ++ unsigned HOST_WIDE_INT offset = tree_to_uhwi (op01); ++ unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT; ++ tree index = bitsize_int (indexi); ++ return fold_build3_loc (loc, ++ BIT_FIELD_REF, type, op00, ++ part_width, index); ++ } + } + /* ((foo*)&complexfoo)[1] => __imag__ complexfoo */ + else if (TREE_CODE (op00type) == COMPLEX_TYPE +@@ -3132,7 +3165,8 @@ + { + tree type_domain; + tree min_val = size_zero_node; +- tree newsub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); ++ tree newsub ++ = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); + if (newsub) + sub = newsub; + else +@@ -4170,7 +4204,16 @@ + r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 0), + lval, + non_constant_p, overflow_p); +- *jump_target = t; ++ if (jump_target) ++ *jump_target = t; ++ else ++ { ++ /* Can happen with ({ return true; }) && false; passed to ++ maybe_constant_value. There is nothing to jump over in this ++ case, and the bug will be diagnosed later. */ ++ gcc_assert (ctx->quiet); ++ *non_constant_p = true; ++ } + break; + + case SAVE_EXPR: +@@ -4414,11 +4457,7 @@ + { + /* Don't re-process a constant CONSTRUCTOR, but do fold it to + VECTOR_CST if applicable. */ +- /* FIXME after GCC 6 branches, make the verify unconditional. */ +- if (CHECKING_P) +- verify_constructor_flags (t); +- else +- recompute_constructor_flags (t); ++ verify_constructor_flags (t); + if (TREE_CONSTANT (t)) + return fold (t); + } +@@ -4640,6 +4679,10 @@ + jump_target); + break; + ++ case USING_STMT: ++ r = void_node; ++ break; ++ + default: + if (STATEMENT_CODE_P (TREE_CODE (t))) + { +@@ -4763,8 +4806,12 @@ + return error_mark_node; + else if (non_constant_p && TREE_CONSTANT (r)) + { +- /* This isn't actually constant, so unset TREE_CONSTANT. */ +- if (EXPR_P (r)) ++ /* This isn't actually constant, so unset TREE_CONSTANT. ++ Don't clear TREE_CONSTANT on ADDR_EXPR, as the middle-end requires ++ it to be set if it is invariant address, even when it is not ++ a valid C++ constant expression. Wrap it with a NOP_EXPR ++ instead. */ ++ if (EXPR_P (r) && TREE_CODE (r) != ADDR_EXPR) + r = copy_node (r); + else if (TREE_CODE (r) == CONSTRUCTOR) + r = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (r), r); +@@ -5453,6 +5500,7 @@ + case OMP_PARALLEL: + case OMP_TASK: + case OMP_FOR: ++ case OMP_SIMD: + case OMP_DISTRIBUTE: + case OMP_TASKLOOP: + case OMP_TEAMS: +@@ -5627,7 +5675,8 @@ + return RECUR (TREE_OPERAND (t, 1), want_rval); + + case TARGET_EXPR: +- if (!literal_type_p (TREE_TYPE (t))) ++ if (!TARGET_EXPR_DIRECT_INIT_P (t) ++ && !literal_type_p (TREE_TYPE (t))) + { + if (flags & tf_error) + { +Index: gcc/cp/except.c +=================================================================== +--- a/src/gcc/cp/except.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/except.c (.../branches/gcc-7-branch) +@@ -1218,6 +1218,10 @@ + { + gcc_assert (processing_template_decl + || TREE_CODE (expr) == DEFERRED_NOEXCEPT); ++ if (TREE_CODE (expr) != DEFERRED_NOEXCEPT) ++ /* Avoid problems with a function type built with a dependent typedef ++ being reused in another scope (c++/84045). */ ++ expr = strip_typedefs_expr (expr); + return build_tree_list (expr, NULL_TREE); + } + } +Index: gcc/cp/error.c +=================================================================== +--- a/src/gcc/cp/error.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/error.c (.../branches/gcc-7-branch) +@@ -2695,6 +2695,7 @@ + case INTEGER_TYPE: + case COMPLEX_TYPE: + case VECTOR_TYPE: ++ case DECLTYPE_TYPE: + pp_type_specifier_seq (pp, t); + break; + +Index: gcc/cp/tree.c +=================================================================== +--- a/src/gcc/cp/tree.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/tree.c (.../branches/gcc-7-branch) +@@ -1050,6 +1050,9 @@ + { + tree lvalue_ref, t; + ++ if (to_type == error_mark_node) ++ return error_mark_node; ++ + if (TREE_CODE (to_type) == REFERENCE_TYPE) + { + rval = rval && TYPE_REF_IS_RVALUE (to_type); +@@ -1667,9 +1670,9 @@ + tree it; + for (it = t; it; it = TREE_CHAIN (it)) + { +- tree val = strip_typedefs_expr (TREE_VALUE (t), remove_attributes); ++ tree val = strip_typedefs_expr (TREE_VALUE (it), remove_attributes); + vec_safe_push (vec, val); +- if (val != TREE_VALUE (t)) ++ if (val != TREE_VALUE (it)) + changed = true; + gcc_assert (TREE_PURPOSE (it) == NULL_TREE); + } +@@ -2589,6 +2592,8 @@ + { + u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1), + tf_warning_or_error); ++ if (u == error_mark_node) ++ return u; + if (AGGR_INIT_ZERO_FIRST (TREE_OPERAND (t, 1))) + AGGR_INIT_ZERO_FIRST (TREE_OPERAND (u, 1)) = true; + } +@@ -2606,6 +2611,8 @@ + (splay_tree_value) TREE_OPERAND (u, 0)); + + TREE_OPERAND (u, 1) = break_out_target_exprs (TREE_OPERAND (u, 1)); ++ if (TREE_OPERAND (u, 1) == error_mark_node) ++ return error_mark_node; + + /* Replace the old expression with the new version. */ + *tp = u; +@@ -2718,7 +2725,8 @@ + target_remap = splay_tree_new (splay_tree_compare_pointers, + /*splay_tree_delete_key_fn=*/NULL, + /*splay_tree_delete_value_fn=*/NULL); +- cp_walk_tree (&t, bot_manip, target_remap, NULL); ++ if (cp_walk_tree (&t, bot_manip, target_remap, NULL) == error_mark_node) ++ t = error_mark_node; + cp_walk_tree (&t, bot_replace, target_remap, NULL); + + if (!--target_remap_count) +@@ -2793,7 +2801,7 @@ + for (; !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (*t), + TREE_TYPE (x)); + x = TREE_OPERAND (x, 0)) +- gcc_assert (TREE_CODE (x) == COMPONENT_REF); ++ gcc_assert (handled_component_p (x)); + *t = x; + *walk_subtrees = false; + d->seen = true; +@@ -4895,6 +4903,19 @@ + } + } + ++/* Wrapper around warn_deprecated_use that doesn't warn for ++ current_class_type. */ ++ ++void ++cp_warn_deprecated_use (tree node) ++{ ++ if (TYPE_P (node) ++ && current_class_type ++ && TYPE_MAIN_VARIANT (node) == current_class_type) ++ return; ++ warn_deprecated_use (node, NULL_TREE); ++} ++ + /* Implement -Wzero_as_null_pointer_constant. Return true if the + conditions for the warning hold, false otherwise. */ + bool +Index: gcc/cp/ChangeLog +=================================================================== +--- a/src/gcc/cp/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,601 @@ ++2018-11-26 Richard Biener ++ ++ PR c++/84281 ++ * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact ++ uniform constructors and delay allocating them fully. ++ ++2018-11-26 Jason Merrill ++ ++ PR c++/87075 - ICE with constexpr array initialization. ++ * constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization. ++ ++2018-10-23 Tom de Vries ++ ++ backport from trunk: ++ 2018-07-31 Tom de Vries ++ ++ PR debug/86687 ++ * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE. ++ ++2018-10-12 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-07-16 Jakub Jelinek ++ ++ PR c++/3698 ++ PR c++/86208 ++ * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or ++ in TREE_USED flag from stmt to h->to. ++ ++2018-08-17 Richard Biener ++ ++ Backport from mainline ++ 2018-08-02 Richard Biener ++ ++ PR c++/86763 ++ * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE ++ to the CLASSTYPE_AS_BASE. ++ ++2018-08-10 Jason Merrill ++ ++ PR c++/86728 - C variadic generic lambda. ++ * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into ++ a pack if it's followed by a declarator-id. ++ ++2018-07-03 Jason Merrill ++ ++ PR c++/86378 - functional cast in noexcept-specifier. ++ * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration. ++ ++2018-06-26 Jason Merrill ++ ++ PR c++/80290 - memory-hog with std::pair. ++ * pt.c (type_unification_real): Skip non-dependent conversion ++ check for a nested list argument. ++ (braced_init_depth): New. ++ ++2018-06-26 Jakub Jelinek ++ ++ PR c++/86291 ++ * parser.c (cp_parser_omp_for_loop_init): Change for_block argument ++ type from vec * to vec *&. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-05-29 Jakub Jelinek ++ ++ PR c++/85952 ++ * init.c (build_aggr_init): For structured binding initialized from ++ array call mark_rvalue_use on the initializer. ++ ++ 2018-05-11 Jakub Jelinek ++ ++ PR c/85696 ++ * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype. ++ * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around ++ cxx_omp_predetermined_sharing_1. Rename old function to ... ++ (cxx_omp_predetermined_sharing_1): ... this. ++ * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1 ++ instead of cxx_omp_predetermined_sharing. ++ ++ 2018-05-10 Jakub Jelinek ++ ++ PR c++/85662 ++ * cp-gimplify.c (cp_fold): Use fold_offsetof rather than ++ fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the ++ fold_convert. ++ ++ 2018-04-18 Jakub Jelinek ++ ++ PR c++/84463 ++ * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like ++ tricks from here to ... ++ * cp-gimplify.c (cp_fold) : ... here. Only use it ++ if INDIRECT_REF's operand is INTEGER_CST cast to pointer type. ++ ++ 2018-04-06 Jakub Jelinek ++ ++ PR c++/85210 ++ * pt.c (tsubst_decomp_names): Return error_mark_node and assert ++ errorcount is set if tsubst doesn't return a VAR_DECL. ++ ++ 2018-04-05 Jakub Jelinek ++ ++ PR c++/85208 ++ * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call ++ maybe_apply_pragma_weak here... ++ (cp_maybe_mangle_decomp): ... but call it here instead. ++ ++ 2018-04-04 Jakub Jelinek ++ ++ PR inline-asm/85172 ++ * constexpr.c (cxx_eval_builtin_function_call): For calls to ++ builtin_valid_in_constant_expr_p functions, don't call ++ cxx_eval_constant_expression if argument is not ++ potential_constant_expression. ++ ++ 2018-04-03 Jakub Jelinek ++ ++ PR c++/85147 ++ * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node. ++ ++ PR c++/85140 ++ * name-lookup.c (handle_namespace_attrs): Return early if attributes ++ is error_mark_node. ++ ++ 2018-03-30 Jakub Jelinek ++ ++ PR c++/84791 ++ * semantics.c (finish_omp_reduction_clause): If ++ OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true ++ even if processing_template_decl. ++ ++ 2018-03-27 Jakub Jelinek ++ ++ PR c++/85076 ++ * tree.c (cp_build_reference_type): If to_type is error_mark_node, ++ return it right away. ++ ++ PR c++/85068 ++ * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo ++ is NULL. Assert if thunk_binfo is NULL then errorcount is non-zero. ++ ++ 2018-03-21 Jakub Jelinek ++ ++ PR c++/84961 ++ * cp-tree.h (genericize_compound_lvalue): Declare. ++ * typeck.c (genericize_compound_lvalue): New function. ++ (unary_complex_lvalue, cp_build_modify_expr): Use it. ++ * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR ++ and PREDECREMENT_EXPR in output and "m" constrained input operands with ++ COMPOUND_EXPR. Call cxx_mark_addressable on the rightmost ++ COMPOUND_EXPR operand. ++ ++ 2018-03-16 Jakub Jelinek ++ ++ PR c++/84874 ++ * decl.c (reshape_init_class): Don't assert d->cur->index == field ++ if d->cur->index is a FIELD_DECL, instead set field to d->cur->index. ++ ++ 2018-03-15 Jakub Jelinek ++ ++ PR c++/84222 ++ * cp-tree.h (cp_warn_deprecated_use): Declare. ++ * tree.c (cp_warn_deprecated_use): New function. ++ * typeck2.c (build_functional_cast): Use it. ++ * decl.c (grokparms): Likewise. ++ (grokdeclarator): Likewise. Temporarily push nested class scope ++ around grokparms call for out of class member definitions. ++ ++ 2018-03-09 Jason Merrill ++ Jakub Jelinek ++ ++ PR c++/84076 ++ * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr ++ build ADDR_EXPR with REFERENCE_TYPE. ++ (build_over_call): For purposes of check_function_arguments, if ++ argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use ++ its operand rather than the argument itself. ++ ++ 2018-03-08 Jason Merrill ++ Jakub Jelinek ++ ++ PR c++/80598 ++ * call.c (build_over_call): In templates set TREE_USED (first_fn) when ++ not calling mark_used for the benefit of -Wunused-function warning. ++ ++ 2018-03-02 Jakub Jelinek ++ ++ PR c++/84662 ++ * pt.c (tsubst_copy_and_build) : Use ++ RETURN instead of return. ++ : Likewise. ++ : If op0 is error_mark_node, just return ++ it instead of wrapping it into CONVERT_EXPR. ++ ++2018-06-12 Jason Merrill ++ ++ PR c++/85815 - reference to member of enclosing template. ++ * parser.c (cp_parser_postfix_dot_deref_expression): Check ++ currently_open_class. ++ ++ PR c++/86060 - ICE on range for with -std=c++98. ++ * parser.c (cp_parser_init_statement): Don't clobber *decl after ++ pedwarn. ++ ++2018-05-07 Jason Merrill ++ ++ PR c++/85646 - lambda visibility. ++ * decl2.c (determine_visibility): Don't mess with template arguments ++ from the containing scope. ++ (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor ++ thunk. ++ ++2018-04-23 Ville Voutilainen ++ ++ Backport from mainline ++ 2018-04-05 Ville Voutilainen ++ ++ Implement P0969 ++ * decl.c (find_decomp_class_base): Check accessibility instead ++ of declared access, adjust diagnostic. ++ ++2018-04-23 Jakub Jelinek ++ Jason Merrill ++ ++ PR c++/85470 - wrong error with static data member. ++ * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P. ++ * typeck2.c (store_init_value): Likewise. ++ ++2018-04-23 Ville Voutilainen ++ ++ Backport from mainline ++ 2018-04-05 Ville Voutilainen ++ ++ Implement P0961 ++ * decl.c (get_tuple_decomp_init): Check the templatedness ++ of a member get. ++ ++2018-04-19 Jonathan Wakely ++ ++ PR c++/85464 - missing location for -Wignored-qualifiers diagnostic ++ * decl.c (grokdeclarator): If declspecs->locations[ds_type_spec] ++ is UNKNOWN_LOCATION fall back to input_location. ++ ++2018-04-09 Jason Merrill ++ ++ PR c++/85279 - dump_expr doesn't understand decltype. ++ * error.c (dump_expr): Handle DECLTYPE_TYPE. ++ ++2018-04-05 Jason Merrill ++ ++ PR c++/82152 - ICE with class deduction and inherited ctor. ++ * pt.c (do_class_deduction): Ignore inherited ctors. ++ ++ PR c++/84665 - ICE with array of empty class. ++ * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr. ++ ++ PR c++/85006 - -fconcepts ICE with A return type ++ * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack. ++ ++2018-04-04 Jason Merrill ++ ++ PR c++/85118 - wrong error with generic lambda and std::bind. ++ * call.c (add_template_conv_candidate): Disable if there are any ++ call operators. ++ ++ PR c++/85148 - ICE with 'this' in array NSDMI. ++ * tree.c (replace_placeholders_r): Use handled_component_p. ++ ++2018-04-03 Jason Merrill ++ ++ PR c++/85113 - ICE with constexpr and __builtin_constant_p. ++ * constexpr.c (cxx_eval_builtin_function_call): Only defer ++ __builtin_constant_p if ctx->quiet. ++ ++ * typeck.c (merge_types): Limit matching attribute shortcut to ++ the default case. ++ ++ PR c++/64095 - auto... parameter pack. ++ * parser.c (cp_parser_parameter_declaration): Handle turning autos ++ into packs here. ++ (cp_parser_parameter_declaration_list): Not here. ++ ++ PR c++/85060 - wrong-code with call to base member in template. ++ * search.c (any_dependent_bases_p): Check uses_template_parms ++ rather than processing_template_decl. ++ ++2018-03-29 Ville Voutilainen ++ ++ Backport from mainline ++ 2018-03-23 Ville Voutilainen ++ ++ Implement P0962 ++ * parser.c (cp_parser_perform_range_for_lookup): Change ++ the condition for deciding whether to use members. ++ ++2018-03-23 Jason Merrill ++ ++ PR c++/78489 - Substitution in wrong order ++ PR c++/84489 ++ * pt.c (type_unification_real): Revert last two changes. ++ ++ PR c++/71834 - template-id with too few arguments. ++ * pt.c (coerce_template_parms): Make sure we gave an error. ++ ++ PR c++/84937 - ICE with class deduction and auto. ++ * pt.c (rewrite_template_parm): Fix auto handling. ++ ++ PR c++/80227 - SFINAE and negative array size. ++ * decl.c (compute_array_index_type): Convert to signed for negative ++ check. ++ ++ PR c++/84839 - ICE with decltype of parameter pack. ++ * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while ++ instantiating dummy parms. ++ ++ PR c++/84798 - ICE with auto in abstract function declarator. ++ * parser.c (cp_parser_parameter_declaration_clause): Check ++ parser->default_arg_ok_p. ++ ++ PR c++/84355 - ICE with deduction for member class template. ++ * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into ++ CLASS_PLACEHOLDER_TEMPLATE. ++ ++2018-03-23 Paolo Carlini ++ Jason Merrill ++ ++ PR c++/82336 - link error with list-init default argument. ++ * decl.c (check_default_argument): Unshare an initializer list. ++ ++2018-03-22 Marek Polacek ++ ++ Backported from mainline ++ 2018-03-22 Marek Polacek ++ ++ PR c++/84854 ++ * semantics.c (finish_if_stmt_cond): Check if the type of the condition ++ is boolean. ++ ++ 2018-03-19 Marek Polacek ++ ++ PR c++/84927 ++ * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags ++ as we evaluate the elements. ++ (cxx_eval_constant_expression): Verify constructor's flags ++ unconditionally. ++ ++ 2018-03-21 Marek Polacek ++ ++ PR c++/71638, ICE with NSDMI and reference. ++ * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags ++ even when we replace an element. ++ ++2018-03-09 Jason Merrill ++ ++ PR c++/84785 - ICE with alias template and default targs. ++ * pt.c (type_unification_real): Set processing_template_decl if ++ saw_undeduced == 1. ++ ++2018-03-07 Marek Polacek ++ ++ Backported from mainline ++ 2018-03-06 Marek Polacek ++ ++ PR c++/84684 ++ * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated ++ arguments. ++ ++2018-03-03 Jason Merrill ++ ++ PR c++/84686 - missing volatile loads. ++ * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref. ++ ++2018-03-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-02-26 Jakub Jelinek ++ ++ PR c++/84558 ++ * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like ++ a valid constant initializer. Formatting fixes. ++ ++ PR c++/84557 ++ * parser.c (cp_parser_omp_var_list_no_open): Only call ++ cp_parser_lookup_name_simple on names satisfying identifier_p. ++ (cp_parser_oacc_routine): Likewise. ++ ++ 2018-02-20 Jakub Jelinek ++ ++ PR c++/84445 ++ * class.c (fixed_type_or_null) : Only test ++ TREE_HAS_CONSTRUCTOR if instance is not an internal function call. ++ ++ PR c++/84449 ++ * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs ++ returns error_mark_node, return it immediately. ++ (break_out_target_exprs): If cp_walk_tree with bot_manip returns ++ error_mark_node, return error_mark_node. ++ ++ 2018-02-19 Jakub Jelinek ++ ++ PR c++/84448 ++ * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if ++ either operand is error_mark_node, set current.lhs to that instead of ++ creating a binary op with error_mark_node operands. ++ ++ PR c++/84430 ++ * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD. ++ ++ 2018-02-16 Marek Polacek ++ Jakub Jelinek ++ ++ PR c++/84192 ++ * constexpr.c (cxx_eval_constant_expression) : Don't ++ set *jump_target to anything if jump_target is NULL. ++ ++ 2018-02-12 Jakub Jelinek ++ ++ PR c++/84341 ++ * parser.c (cp_parser_binary_expression): Use build_min instead of ++ build2_loc to build the no_toplevel_fold_p toplevel binary expression. ++ ++ 2018-02-10 Jakub Jelinek ++ ++ PR sanitizer/83987 ++ * tree.c (cp_free_lang_data): Revert 2018-01-23 change. ++ ++ 2018-02-09 Marek Polacek ++ Jakub Jelinek ++ ++ PR c++/83659 ++ * constexpr.c (cxx_fold_indirect_ref): Sync some changes from ++ fold_indirect_ref_1. Verify first that tree_fits_shwi_p (op01). ++ Formatting fixes. ++ ++ 2018-02-07 Jakub Jelinek ++ ++ PR c++/84082 ++ * parser.c (cp_parser_dot_deref_incomplete): New function. ++ (cp_parser_postfix_dot_deref_expression): Use it. ++ ++ 2018-01-31 Jason Merrill ++ Jakub Jelinek ++ ++ PR c++/83993 ++ * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR ++ around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT ++ on ADDR_EXPR. ++ ++ 2018-01-25 Jakub Jelinek ++ ++ PR c++/84031 ++ * decl.c (find_decomp_class_base): Ignore unnamed bitfields. Ignore ++ recursive calls that return ret. ++ (cp_finish_decomp): Ignore unnamed bitfields. ++ ++ 2018-01-23 Jakub Jelinek ++ ++ PR sanitizer/83987 ++ * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of ++ DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node. ++ ++ PR c++/83958 ++ * decl.c (cp_finish_decomp): Diagnose if reference structure binding ++ refers to incomplete type. ++ ++ 2018-01-18 Jakub Jelinek ++ ++ PR c++/83824 ++ * parser.c (attr_chainon): New function. ++ (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq, ++ cp_parser_namespace_definition, cp_parser_init_declarator, ++ cp_parser_type_specifier_seq, cp_parser_parameter_declaration, ++ cp_parser_gnu_attributes_opt): Use it. ++ (cp_parser_member_declaration, cp_parser_objc_class_ivars, ++ cp_parser_objc_struct_declaration): Likewise. Don't reset ++ prefix_attributes if attributes is error_mark_node. ++ ++ 2018-01-16 Jakub Jelinek ++ ++ PR c++/83817 ++ * pt.c (tsubst_copy_and_build) : If function ++ is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P ++ instead of CALL_FROM_THUNK_P. ++ ++2018-03-02 Jason Merrill ++ ++ Fix MIPS16 ICE. ++ * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC. ++ ++2018-02-27 Jason Merrill ++ ++ PR c++/84489 - dependent default template argument ++ * pt.c (type_unification_real): Handle early substitution failure. ++ ++2018-03-01 Jason Merrill ++ ++ PR c++/71569 - decltype of template. ++ * parser.c (cp_parser_decltype_expr): Handle missing template args. ++ ++2018-03-01 Jason Merrill ++ Alexandre Oliva ++ ++ PR c++/71569 - ICE with redundant args on member variable template. ++ * decl.c (start_decl): Handle partial specialization of member ++ variable template. ++ * pt.c (determine_specialization): Allow partial specialization ++ of member variable template without specializing enclosing class. ++ (process_partial_specialization): Improve error message. ++ ++2018-02-28 Jason Merrill ++ ++ PR c++/71784 - ICE with ref-qualifier and explicit specialization. ++ * pt.c (determine_specialization): Check ref-qualifier. ++ ++2018-02-27 Jason Merrill ++ ++ PR c++/84496 - ICE with generic lambda in lambda. ++ * pt.c (type_dependent_expression_p): Fix dependency checking of ++ functions without DECL_TEMPLATE_INFO. ++ ++2018-02-26 Jason Merrill ++ ++ PR c++/84441 - ICE with base initialized from ?: ++ * call.c (unsafe_copy_elision_p): Handle COND_EXPR. ++ ++ PR c++/84520 - ICE with generic lambda in NSDMI. ++ * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI ++ 'this' in a generic lambda instantiation. ++ ++2018-02-26 Jason Merrill ++ Ville Voutilainen ++ ++ PR c++/81589 - error with is_trivially_constructible. ++ * method.c (constructible_expr): Set cp_unevaluated. ++ ++2018-02-25 Jason Merrill ++ ++ PR c++/84015 - ICE with class deduction and auto template parm. ++ * pt.c (rewrite_template_parm): Use tf_partial in first tsubst. ++ ++2018-02-19 Jonathan Wakely ++ ++ Backport from mainline ++ 2017-08-29 Jason Merrill ++ ++ Fix lambdas in template default argument of inherited ctor. ++ * method.c (synthesized_method_base_walk): Replace an inherited ++ template with its specialization. ++ (synthesized_method_walk): Make inheriting_ctor a pointer. ++ (maybe_explain_implicit_delete, explain_implicit_non_constexpr) ++ (deduce_inheriting_ctor, implicitly_declare_fn): Adjust. ++ ++2018-02-16 Jason Merrill ++ ++ PR c++/84151 - unnecessary volatile load with static member. ++ * call.c (build_new_method_call_1): Avoid loading from a volatile ++ lvalue used as the object argument for a static member function. ++ ++ PR c++/81853 - using-directive and constexpr. ++ * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT. ++ ++ PR c++/84420 - ICE with structured binding in lambda. ++ * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P. ++ ++ PR c++/83835 - C++17 error with constructor ctors. ++ * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P. ++ ++ PR c++/82664 - ICE with reference to function template parm. ++ * pt.c (convert_nontype_argument_function): Avoid obfuscationg ++ NOP_EXPRs. ++ ++ PR c++/82764 - C++17 ICE with empty base ++ * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base. ++ ++ PR c++/83227 - C++17 ICE with init-list derived-to-base conversion. ++ * call.c (convert_like_real): Don't use the copy-list-initialization ++ shortcut for ck_base. ++ ++ PR c++/84045 - ICE with typedef and noexcept. ++ * except.c (build_noexcept_spec): Use strip_typedefs_expr. ++ ++2018-01-29 Jason Merrill ++ ++ PR c++/82461 - constexpr list-initialized member ++ * constexpr.c (potential_constant_expression_1): Check ++ TARGET_EXPR_DIRECT_INIT_P. ++ ++2018-01-26 Nathan Sidwell ++ ++ PR c++/82878 ++ PR c++/78495 ++ * call.c (build_call_a): Don't set CALL_FROM_THUNK_P for inherited ++ ctor. ++ * cp-gimplify.c (cp_genericize_r): Restore THUNK dereference ++ inhibibition check removed in previous c++/78495 change. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/cp/cp-gimplify.c +=================================================================== +--- a/src/gcc/cp/cp-gimplify.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/cp-gimplify.c (.../branches/gcc-7-branch) +@@ -1107,6 +1107,14 @@ + && omp_var_to_track (stmt)) + omp_cxx_notice_variable (wtd->omp_ctx, stmt); + ++ /* Don't dereference parms in a thunk, pass the references through. */ ++ if ((TREE_CODE (stmt) == CALL_EXPR && CALL_FROM_THUNK_P (stmt)) ++ || (TREE_CODE (stmt) == AGGR_INIT_EXPR && AGGR_INIT_FROM_THUNK_P (stmt))) ++ { ++ *walk_subtrees = 0; ++ return NULL; ++ } ++ + /* Dereference invisible reference parms. */ + if (wtd->handle_invisiref_parm_p && is_invisiref_parm (stmt)) + { +@@ -1128,6 +1136,7 @@ + if (h) + { + *stmt_p = h->to; ++ TREE_USED (h->to) |= TREE_USED (stmt); + *walk_subtrees = 0; + return NULL; + } +@@ -1910,7 +1919,7 @@ + /* True if OpenMP sharing attribute of DECL is predetermined. */ + + enum omp_clause_default_kind +-cxx_omp_predetermined_sharing (tree decl) ++cxx_omp_predetermined_sharing_1 (tree decl) + { + /* Static data members are predetermined shared. */ + if (TREE_STATIC (decl)) +@@ -1928,6 +1937,32 @@ + return OMP_CLAUSE_DEFAULT_UNSPECIFIED; + } + ++/* Likewise, but also include the artificial vars. We don't want to ++ disallow the artificial vars being mentioned in explicit clauses, ++ as we use artificial vars e.g. for loop constructs with random ++ access iterators other than pointers, but during gimplification ++ we want to treat them as predetermined. */ ++ ++enum omp_clause_default_kind ++cxx_omp_predetermined_sharing (tree decl) ++{ ++ enum omp_clause_default_kind ret = cxx_omp_predetermined_sharing_1 (decl); ++ if (ret != OMP_CLAUSE_DEFAULT_UNSPECIFIED) ++ return ret; ++ ++ /* Predetermine artificial variables holding integral values, those ++ are usually result of gimplify_one_sizepos or SAVE_EXPR ++ gimplification. */ ++ if (VAR_P (decl) ++ && DECL_ARTIFICIAL (decl) ++ && INTEGRAL_TYPE_P (TREE_TYPE (decl)) ++ && !(DECL_LANG_SPECIFIC (decl) ++ && DECL_OMP_PRIVATIZED_MEMBER (decl))) ++ return OMP_CLAUSE_DEFAULT_SHARED; ++ ++ return OMP_CLAUSE_DEFAULT_UNSPECIFIED; ++} ++ + /* Finalize an implicitly determined clause. */ + + void +@@ -2148,6 +2183,28 @@ + goto unary; + + case ADDR_EXPR: ++ loc = EXPR_LOCATION (x); ++ op0 = cp_fold_maybe_rvalue (TREE_OPERAND (x, 0), false); ++ ++ /* Cope with user tricks that amount to offsetof. */ ++ if (op0 != error_mark_node ++ && TREE_CODE (TREE_TYPE (op0)) != FUNCTION_TYPE ++ && TREE_CODE (TREE_TYPE (op0)) != METHOD_TYPE) ++ { ++ tree val = get_base_address (op0); ++ if (val ++ && INDIRECT_REF_P (val) ++ && COMPLETE_TYPE_P (TREE_TYPE (val)) ++ && TREE_CONSTANT (TREE_OPERAND (val, 0))) ++ { ++ val = TREE_OPERAND (val, 0); ++ STRIP_NOPS (val); ++ if (TREE_CODE (val) == INTEGER_CST) ++ return fold_offsetof (op0, TREE_TYPE (x)); ++ } ++ } ++ goto finish_unary; ++ + case REALPART_EXPR: + case IMAGPART_EXPR: + rval_ops = false; +@@ -2165,6 +2222,7 @@ + loc = EXPR_LOCATION (x); + op0 = cp_fold_maybe_rvalue (TREE_OPERAND (x, 0), rval_ops); + ++ finish_unary: + if (op0 != TREE_OPERAND (x, 0)) + { + if (op0 == error_mark_node) +Index: gcc/cp/typeck2.c +=================================================================== +--- a/src/gcc/cp/typeck2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/typeck2.c (.../branches/gcc-7-branch) +@@ -817,9 +817,12 @@ + bool const_init; + value = instantiate_non_dependent_expr (value); + if (DECL_DECLARED_CONSTEXPR_P (decl) +- || (DECL_IN_AGGR_P (decl) && !DECL_VAR_DECLARED_INLINE_P (decl))) ++ || (DECL_IN_AGGR_P (decl) ++ && DECL_INITIALIZED_IN_CLASS_P (decl) ++ && !DECL_VAR_DECLARED_INLINE_P (decl))) + { +- /* Diagnose a non-constant initializer for constexpr. */ ++ /* Diagnose a non-constant initializer for constexpr variable or ++ non-inline in-class-initialized static data member. */ + if (processing_template_decl + && !require_potential_constant_expression (value)) + value = error_mark_node; +@@ -1954,7 +1957,7 @@ + if (complain & tf_warning + && TREE_DEPRECATED (type) + && DECL_ARTIFICIAL (exp)) +- warn_deprecated_use (type, NULL_TREE); ++ cp_warn_deprecated_use (type); + } + else + type = exp; +Index: gcc/cp/pt.c +=================================================================== +--- a/src/gcc/cp/pt.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/pt.c (.../branches/gcc-7-branch) +@@ -2072,7 +2072,8 @@ + /* We shouldn't be specializing a member template of an + unspecialized class template; we already gave an error in + check_specialization_scope, now avoid crashing. */ +- if (template_count && DECL_CLASS_SCOPE_P (decl) ++ if (!VAR_P (decl) ++ && template_count && DECL_CLASS_SCOPE_P (decl) + && template_class_depth (DECL_CONTEXT (decl)) > 0) + { + gcc_assert (errorcount); +@@ -2175,11 +2176,18 @@ + that the const qualification is the same. Since + get_bindings does not try to merge the "this" parameter, + we must do the comparison explicitly. */ +- if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn) +- && !same_type_p (TREE_VALUE (fn_arg_types), +- TREE_VALUE (decl_arg_types))) +- continue; ++ if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)) ++ { ++ if (!same_type_p (TREE_VALUE (fn_arg_types), ++ TREE_VALUE (decl_arg_types))) ++ continue; + ++ /* And the ref-qualification. */ ++ if (type_memfn_rqual (TREE_TYPE (decl)) ++ != type_memfn_rqual (TREE_TYPE (fn))) ++ continue; ++ } ++ + /* Skip the "this" parameter and, for constructors of + classes with virtual bases, the VTT parameter. A + full specialization of a constructor will have a VTT +@@ -2284,6 +2292,11 @@ + decl_arg_types)) + continue; + ++ if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn) ++ && (type_memfn_rqual (TREE_TYPE (decl)) ++ != type_memfn_rqual (TREE_TYPE (fn)))) ++ continue; ++ + // If the deduced arguments do not satisfy the constraints, + // this is not a candidate. + if (flag_concepts && !constraints_satisfied_p (fn)) +@@ -4601,10 +4614,13 @@ + { + if (!flag_concepts) + error ("partial specialization %q+D does not specialize " +- "any template arguments", decl); ++ "any template arguments; to define the primary template, " ++ "remove the template argument list", decl); + else + error ("partial specialization %q+D does not specialize any " +- "template arguments and is not more constrained than", decl); ++ "template arguments and is not more constrained than " ++ "the primary template; to define the primary template, " ++ "remove the template argument list", decl); + inform (DECL_SOURCE_LOCATION (maintmpl), "primary template here"); + } + +@@ -4848,7 +4864,7 @@ + fixed_parameter_pack_p_1 (tree parm, struct find_parameter_pack_data *ppd) + { + /* A type parm can't refer to another parm. */ +- if (TREE_CODE (parm) == TYPE_DECL) ++ if (TREE_CODE (parm) == TYPE_DECL || parm == error_mark_node) + return; + else if (TREE_CODE (parm) == PARM_DECL) + { +@@ -6032,7 +6048,12 @@ + + accept: + if (TREE_CODE (type) == REFERENCE_TYPE) +- fn = build_address (fn); ++ { ++ if (REFERENCE_REF_P (fn)) ++ fn = TREE_OPERAND (fn, 0); ++ else ++ fn = build_address (fn); ++ } + if (!same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (fn))) + fn = build_nop (type, fn); + +@@ -8244,7 +8265,11 @@ + } + + if (lost) +- return error_mark_node; ++ { ++ if ((complain & tf_error) && !seen_error()) ++ error ("wrong number of template arguments"); ++ return error_mark_node; ++ } + + if (CHECKING_P && !NON_DEFAULT_TEMPLATE_ARGS_COUNT (new_inner_args)) + SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (new_inner_args, +@@ -11454,7 +11479,9 @@ + { + /* This parameter pack was used in an unevaluated context. Just + make a dummy decl, since it's only used for its type. */ ++ ++cp_unevaluated_operand; + arg_pack = tsubst_decl (parm_pack, args, complain); ++ --cp_unevaluated_operand; + if (arg_pack && DECL_PACK_P (arg_pack)) + /* Partial instantiation of the parm_pack, we can't build + up an argument pack yet. */ +@@ -11524,7 +11551,7 @@ + /* We can't substitute for this parameter pack. We use a flag as + well as the missing_level counter because function parameter + packs don't have a level. */ +- gcc_assert (processing_template_decl); ++ gcc_assert (processing_template_decl || is_auto (parm_pack)); + unsubstituted_packs = true; + } + } +@@ -13755,8 +13782,7 @@ + = tsubst_constraint (constr, args, complain, in_decl); + else if (tree pl = CLASS_PLACEHOLDER_TEMPLATE (t)) + { +- if (DECL_TEMPLATE_TEMPLATE_PARM_P (pl)) +- pl = tsubst (pl, args, complain, in_decl); ++ pl = tsubst_copy (pl, args, complain, in_decl); + CLASS_PLACEHOLDER_TEMPLATE (r) = pl; + } + } +@@ -15778,6 +15804,12 @@ + DECL_HAS_VALUE_EXPR_P (decl2) = 1; + if (VAR_P (decl3)) + DECL_TEMPLATE_INSTANTIATED (decl3) = 1; ++ else ++ { ++ gcc_assert (errorcount); ++ decl = error_mark_node; ++ continue; ++ } + maybe_push_decl (decl3); + if (error_operand_p (decl3)) + decl = error_mark_node; +@@ -16766,7 +16798,7 @@ + if (targs) + targs = tsubst_template_args (targs, args, complain, in_decl); + if (targs == error_mark_node) +- return error_mark_node; ++ RETURN (error_mark_node); + + if (TREE_CODE (templ) == SCOPE_REF) + { +@@ -16773,7 +16805,7 @@ + tree name = TREE_OPERAND (templ, 1); + tree tid = lookup_template_function (name, targs); + TREE_OPERAND (templ, 1) = tid; +- return templ; ++ RETURN (templ); + } + + if (variable_template_p (templ)) +@@ -16838,6 +16870,8 @@ + { + tree type = tsubst (TREE_TYPE (t), args, complain, in_decl); + tree op0 = RECUR (TREE_OPERAND (t, 0)); ++ if (op0 == error_mark_node) ++ RETURN (error_mark_node); + RETURN (build1 (CONVERT_EXPR, type, op0)); + } + +@@ -16985,7 +17019,7 @@ + { + tree op0 = RECUR (TREE_OPERAND (t, 0)); + tree op1 = RECUR (TREE_OPERAND (t, 1)); +- return fold_build_pointer_plus (op0, op1); ++ RETURN (fold_build_pointer_plus (op0, op1)); + } + + case SCOPE_REF: +@@ -17492,7 +17526,10 @@ + CALL_EXPR_REVERSE_ARGS (function) = rev; + if (thk) + { +- CALL_FROM_THUNK_P (function) = true; ++ if (TREE_CODE (function) == CALL_EXPR) ++ CALL_FROM_THUNK_P (function) = true; ++ else ++ AGGR_INIT_FROM_THUNK_P (function) = true; + /* The thunk location is not interesting. */ + SET_EXPR_LOCATION (function, UNKNOWN_LOCATION); + } +@@ -19205,6 +19242,24 @@ + /*nondeduced*/false, array_deduction_r); + } + ++/* Returns how many levels of { } INIT contains. */ ++ ++static int ++braced_init_depth (tree init) ++{ ++ if (!init || !BRACE_ENCLOSED_INITIALIZER_P (init)) ++ return 0; ++ unsigned i; tree val; ++ unsigned max = 0; ++ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), i, val) ++ { ++ unsigned elt_d = braced_init_depth (val); ++ if (elt_d > max) ++ max = elt_d; ++ } ++ return max + 1; ++} ++ + /* Most parms like fn_type_unification. + + If SUBR is 1, we're being called recursively (to unify the +@@ -19441,6 +19496,10 @@ + + if (uses_template_parms (parm)) + continue; ++ /* Workaround for c++/80290: avoid combinatorial explosion on ++ deeply nested braced init-lists. */ ++ if (braced_init_depth (arg) > 2) ++ continue; + if (check_non_deducible_conversion (parm, arg, strict, flags, + explain_p)) + return 1; +@@ -24065,20 +24124,21 @@ + && (any_dependent_template_arguments_p + (INNERMOST_TEMPLATE_ARGS (DECL_TI_ARGS (expression))))) + return true; ++ } + +- /* Otherwise, if the decl isn't from a dependent scope, it can't be +- type-dependent. Checking this is important for functions with auto +- return type, which looks like a dependent type. */ +- if (TREE_CODE (expression) == FUNCTION_DECL +- && undeduced_auto_decl (expression) +- && (!DECL_CLASS_SCOPE_P (expression) +- || !dependent_type_p (DECL_CONTEXT (expression))) +- && (!DECL_FRIEND_CONTEXT (expression) +- || !dependent_type_p (DECL_FRIEND_CONTEXT (expression))) +- && !DECL_LOCAL_FUNCTION_P (expression)) +- { +- return false; +- } ++ /* Otherwise, if the decl isn't from a dependent scope, it can't be ++ type-dependent. Checking this is important for functions with auto ++ return type, which looks like a dependent type. */ ++ if (TREE_CODE (expression) == FUNCTION_DECL ++ && undeduced_auto_decl (expression) ++ && (!DECL_CLASS_SCOPE_P (expression) ++ || !dependent_type_p (DECL_CONTEXT (expression))) ++ && (!DECL_LANG_SPECIFIC (expression) ++ || !DECL_FRIEND_CONTEXT (expression) ++ || !dependent_type_p (DECL_FRIEND_CONTEXT (expression))) ++ && !DECL_LOCAL_FUNCTION_P (expression)) ++ { ++ return false; + } + + /* Always dependent, on the number of arguments if nothing else. */ +@@ -25105,8 +25165,21 @@ + = TEMPLATE_TYPE_PARM_FOR_CLASS (oldtype); + } + else +- newtype = tsubst (TREE_TYPE (olddecl), tsubst_args, +- complain, NULL_TREE); ++ { ++ newtype = TREE_TYPE (olddecl); ++ if (type_uses_auto (newtype)) ++ { ++ // Substitute once to fix references to other template parameters. ++ newtype = tsubst (newtype, tsubst_args, ++ complain|tf_partial, NULL_TREE); ++ // Now substitute again to reduce the level of the auto. ++ newtype = tsubst (newtype, current_template_args (), ++ complain, NULL_TREE); ++ } ++ else ++ newtype = tsubst (newtype, tsubst_args, ++ complain, NULL_TREE); ++ } + + tree newdecl + = build_decl (DECL_SOURCE_LOCATION (olddecl), TREE_CODE (olddecl), +@@ -25145,7 +25218,7 @@ + // Substitute ttargs into ttparms to fix references to + // other template parameters. + ttparms = tsubst_template_parms_level (ttparms, ttargs, +- complain); ++ complain|tf_partial); + // Now substitute again with args based on tparms, to reduce + // the level of the ttparms. + ttargs = current_template_args (); +@@ -25386,6 +25459,9 @@ + // FIXME cache artificial deduction guides + for (tree fns = CLASSTYPE_CONSTRUCTORS (type); fns; fns = OVL_NEXT (fns)) + { ++ if (TREE_CODE (fns) == OVERLOAD && OVL_USED (fns)) ++ continue; ++ + tree fn = OVL_CURRENT (fns); + tree guide = build_deduction_guide (fn, outer_args, complain); + cands = ovl_cons (guide, cands); +Index: gcc/cp/semantics.c +=================================================================== +--- a/src/gcc/cp/semantics.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/semantics.c (.../branches/gcc-7-branch) +@@ -730,7 +730,10 @@ + cond = maybe_convert_cond (cond); + if (IF_STMT_CONSTEXPR_P (if_stmt) + && require_potential_rvalue_constant_expression (cond) +- && !value_dependent_expression_p (cond)) ++ && !value_dependent_expression_p (cond) ++ /* Wait until instantiation time, since only then COND has been ++ converted to bool. */ ++ && TREE_TYPE (cond) == boolean_type_node) + { + cond = instantiate_non_dependent_expr (cond); + cond = cxx_constant_value (cond, NULL_TREE); +@@ -1480,6 +1483,21 @@ + && C_TYPE_FIELDS_READONLY (TREE_TYPE (operand))))) + cxx_readonly_error (operand, lv_asm); + ++ tree *op = &operand; ++ while (TREE_CODE (*op) == COMPOUND_EXPR) ++ op = &TREE_OPERAND (*op, 1); ++ switch (TREE_CODE (*op)) ++ { ++ case PREINCREMENT_EXPR: ++ case PREDECREMENT_EXPR: ++ case MODIFY_EXPR: ++ *op = genericize_compound_lvalue (*op); ++ op = &TREE_OPERAND (*op, 1); ++ break; ++ default: ++ break; ++ } ++ + constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (t))); + oconstraints[i] = constraint; + +@@ -1488,7 +1506,7 @@ + { + /* If the operand is going to end up in memory, + mark it addressable. */ +- if (!allows_reg && !cxx_mark_addressable (operand)) ++ if (!allows_reg && !cxx_mark_addressable (*op)) + operand = error_mark_node; + } + else +@@ -1530,7 +1548,23 @@ + /* Strip the nops as we allow this case. FIXME, this really + should be rejected or made deprecated. */ + STRIP_NOPS (operand); +- if (!cxx_mark_addressable (operand)) ++ ++ tree *op = &operand; ++ while (TREE_CODE (*op) == COMPOUND_EXPR) ++ op = &TREE_OPERAND (*op, 1); ++ switch (TREE_CODE (*op)) ++ { ++ case PREINCREMENT_EXPR: ++ case PREDECREMENT_EXPR: ++ case MODIFY_EXPR: ++ *op = genericize_compound_lvalue (*op); ++ op = &TREE_OPERAND (*op, 1); ++ break; ++ default: ++ break; ++ } ++ ++ if (!cxx_mark_addressable (*op)) + operand = error_mark_node; + } + else if (!allows_reg && !allows_mem) +@@ -5604,7 +5638,11 @@ + return false; + } + else if (processing_template_decl) +- return false; ++ { ++ if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c) == error_mark_node) ++ return true; ++ return false; ++ } + + tree id = OMP_CLAUSE_REDUCTION_PLACEHOLDER (c); + +@@ -7333,7 +7371,7 @@ + + if (VAR_P (t) && CP_DECL_THREAD_LOCAL_P (t)) + share_name = "threadprivate"; +- else switch (cxx_omp_predetermined_sharing (t)) ++ else switch (cxx_omp_predetermined_sharing_1 (t)) + { + case OMP_CLAUSE_DEFAULT_UNSPECIFIED: + break; +Index: gcc/cp/decl2.c +=================================================================== +--- a/src/gcc/cp/decl2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/decl2.c (.../branches/gcc-7-branch) +@@ -1360,7 +1360,7 @@ + { + tree expr = TREE_VALUE (arg); + if (EXPR_P (expr)) +- TREE_VALUE (arg) = maybe_constant_value (expr); ++ TREE_VALUE (arg) = fold_non_dependent_expr (expr); + } + } + } +@@ -1829,10 +1829,13 @@ + { + if (!TREE_PUBLIC (decl)) + { +- /* maybe_thunk_body clears TREE_PUBLIC on the maybe-in-charge 'tor +- variants, check one of the "clones" for the real linkage. */ ++ /* maybe_thunk_body clears TREE_PUBLIC and DECL_ABSTRACT_P on the ++ maybe-in-charge 'tor variants; in that case we need to check one of ++ the "clones" for the real linkage. But only in that case; before ++ maybe_clone_body we haven't yet copied the linkage to the clones. */ + if ((DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl) + || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl)) ++ && !DECL_ABSTRACT_P (decl) + && DECL_CHAIN (decl) + && DECL_CLONED_FUNCTION (DECL_CHAIN (decl))) + return vague_linkage_p (DECL_CHAIN (decl)); +@@ -2310,11 +2313,8 @@ + } + + /* Local classes in templates have CLASSTYPE_USE_TEMPLATE set, +- but have no TEMPLATE_INFO. Their containing template +- function does, and the local class could be constrained +- by that. */ +- if (template_decl) +- template_decl = fn; ++ but have no TEMPLATE_INFO, so don't try to check it. */ ++ template_decl = NULL_TREE; + } + else if (VAR_P (decl) && DECL_TINFO_P (decl) + && flag_visibility_ms_compat) +Index: gcc/cp/parser.c +=================================================================== +--- a/src/gcc/cp/parser.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/parser.c (.../branches/gcc-7-branch) +@@ -7252,6 +7252,60 @@ + return postfix_expression; + } + ++/* A subroutine of cp_parser_postfix_dot_deref_expression. Handle dot ++ dereference of incomplete type, returns true if error_mark_node should ++ be returned from caller, otherwise adjusts *SCOPE, *POSTFIX_EXPRESSION ++ and *DEPENDENT_P. */ ++ ++bool ++cp_parser_dot_deref_incomplete (tree *scope, cp_expr *postfix_expression, ++ bool *dependent_p) ++{ ++ /* In a template, be permissive by treating an object expression ++ of incomplete type as dependent (after a pedwarn). */ ++ diagnostic_t kind = (processing_template_decl ++ && MAYBE_CLASS_TYPE_P (*scope) ? DK_PEDWARN : DK_ERROR); ++ ++ switch (TREE_CODE (*postfix_expression)) ++ { ++ case CAST_EXPR: ++ case REINTERPRET_CAST_EXPR: ++ case CONST_CAST_EXPR: ++ case STATIC_CAST_EXPR: ++ case DYNAMIC_CAST_EXPR: ++ case IMPLICIT_CONV_EXPR: ++ case VIEW_CONVERT_EXPR: ++ case NON_LVALUE_EXPR: ++ kind = DK_ERROR; ++ break; ++ case OVERLOAD: ++ /* Don't emit any diagnostic for OVERLOADs. */ ++ kind = DK_IGNORED; ++ break; ++ default: ++ /* Avoid clobbering e.g. DECLs. */ ++ if (!EXPR_P (*postfix_expression)) ++ kind = DK_ERROR; ++ break; ++ } ++ ++ if (kind == DK_IGNORED) ++ return false; ++ ++ location_t exploc = location_of (*postfix_expression); ++ cxx_incomplete_type_diagnostic (exploc, *postfix_expression, *scope, kind); ++ if (!MAYBE_CLASS_TYPE_P (*scope)) ++ return true; ++ if (kind == DK_ERROR) ++ *scope = *postfix_expression = error_mark_node; ++ else if (processing_template_decl) ++ { ++ *dependent_p = true; ++ *scope = TREE_TYPE (*postfix_expression) = NULL_TREE; ++ } ++ return false; ++} ++ + /* A subroutine of cp_parser_postfix_expression that also gets hijacked + by cp_parser_builtin_offsetof. We're looking for + +@@ -7310,29 +7364,13 @@ + if (postfix_expression != current_class_ref + && scope != error_mark_node + && !(processing_template_decl +- && current_class_type +- && (same_type_ignoring_top_level_qualifiers_p +- (scope, current_class_type)))) ++ && currently_open_class (scope))) + { + scope = complete_type (scope); + if (!COMPLETE_TYPE_P (scope) +- /* Avoid clobbering e.g. OVERLOADs or DECLs. */ +- && EXPR_P (postfix_expression)) +- { +- /* In a template, be permissive by treating an object expression +- of incomplete type as dependent (after a pedwarn). */ +- diagnostic_t kind = (processing_template_decl +- ? DK_PEDWARN +- : DK_ERROR); +- cxx_incomplete_type_diagnostic +- (location_of (postfix_expression), +- postfix_expression, scope, kind); +- if (processing_template_decl) +- { +- dependent_p = true; +- scope = TREE_TYPE (postfix_expression) = NULL_TREE; +- } +- } ++ && cp_parser_dot_deref_incomplete (&scope, &postfix_expression, ++ &dependent_p)) ++ return error_mark_node; + } + + if (!dependent_p) +@@ -9030,12 +9068,20 @@ + if (no_toplevel_fold_p + && lookahead_prec <= current.prec + && sp == stack) +- current.lhs = build2_loc (combined_loc, +- current.tree_type, +- TREE_CODE_CLASS (current.tree_type) +- == tcc_comparison +- ? boolean_type_node : TREE_TYPE (current.lhs), +- current.lhs, rhs); ++ { ++ if (current.lhs == error_mark_node || rhs == error_mark_node) ++ current.lhs = error_mark_node; ++ else ++ { ++ current.lhs ++ = build_min (current.tree_type, ++ TREE_CODE_CLASS (current.tree_type) ++ == tcc_comparison ++ ? boolean_type_node : TREE_TYPE (current.lhs), ++ current.lhs.get_value (), rhs.get_value ()); ++ SET_EXPR_LOCATION (current.lhs, combined_loc); ++ } ++ } + else + { + current.lhs = build_x_binary_op (combined_loc, current.tree_type, +@@ -10743,6 +10789,18 @@ + "attributes at the beginning of statement are ignored"); + } + ++/* Append ATTR to attribute list ATTRS. */ ++ ++static tree ++attr_chainon (tree attrs, tree attr) ++{ ++ if (attrs == error_mark_node) ++ return error_mark_node; ++ if (attr == error_mark_node) ++ return error_mark_node; ++ return chainon (attrs, attr); ++} ++ + /* Parse the label for a labeled-statement, i.e. + + identifier : +@@ -10862,7 +10920,7 @@ + else if (!cp_parser_parse_definitely (parser)) + ; + else +- attributes = chainon (attributes, attrs); ++ attributes = attr_chainon (attributes, attrs); + } + + if (attributes != NULL_TREE) +@@ -11798,7 +11856,7 @@ + /*protect=*/2, /*want_type=*/false, + tf_warning_or_error); + +- if (member_begin != NULL_TREE || member_end != NULL_TREE) ++ if (member_begin != NULL_TREE && member_end != NULL_TREE) + { + /* Use the member functions. */ + if (member_begin != NULL_TREE) +@@ -12043,12 +12101,9 @@ + cp_lexer_consume_token (parser->lexer); + is_range_for = true; + if (cxx_dialect < cxx11) +- { +- pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0, +- "range-based % loops only available with " +- "-std=c++11 or -std=gnu++11"); +- *decl = error_mark_node; +- } ++ pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0, ++ "range-based % loops only available with " ++ "-std=c++11 or -std=gnu++11"); + } + else + /* The ';' is not consumed yet because we told +@@ -13194,8 +13249,7 @@ + else + { + decl_specs->std_attributes +- = chainon (decl_specs->std_attributes, +- attrs); ++ = attr_chainon (decl_specs->std_attributes, attrs); + if (decl_specs->locations[ds_std_attribute] == 0) + decl_specs->locations[ds_std_attribute] = token->location; + } +@@ -13203,9 +13257,8 @@ + } + } + +- decl_specs->attributes +- = chainon (decl_specs->attributes, +- attrs); ++ decl_specs->attributes ++ = attr_chainon (decl_specs->attributes, attrs); + if (decl_specs->locations[ds_attribute] == 0) + decl_specs->locations[ds_attribute] = token->location; + continue; +@@ -13688,6 +13741,10 @@ + expr = cp_parser_lookup_name_simple (parser, expr, + id_expr_start_token->location); + ++ if (expr && TREE_CODE (expr) == TEMPLATE_DECL) ++ /* A template without args is not a complete id-expression. */ ++ expr = error_mark_node; ++ + if (expr + && expr != error_mark_node + && TREE_CODE (expr) != TYPE_DECL +@@ -13753,6 +13810,9 @@ + expression. */ + cp_parser_abort_tentative_parse (parser); + ++ /* Commit to the tentative_firewall so we get syntax errors. */ ++ cp_parser_commit_to_tentative_parse (parser); ++ + /* Parse a full expression. */ + expr = cp_parser_expression (parser, /*pidk=*/NULL, /*cast_p=*/false, + /*decltype_p=*/true); +@@ -18220,7 +18280,7 @@ + if (post_ident_attribs) + { + if (attribs) +- attribs = chainon (attribs, post_ident_attribs); ++ attribs = attr_chainon (attribs, post_ident_attribs); + else + attribs = post_ident_attribs; + } +@@ -19394,7 +19454,7 @@ + decl = grokfield (declarator, decl_specifiers, + initializer, !is_non_constant_init, + /*asmspec=*/NULL_TREE, +- chainon (attributes, prefix_attributes)); ++ attr_chainon (attributes, prefix_attributes)); + if (decl && TREE_CODE (decl) == FUNCTION_DECL) + cp_parser_save_default_args (parser, decl); + cp_finalize_omp_declare_simd (parser, decl); +@@ -20789,9 +20849,9 @@ + /* Check for attributes first. */ + if (cp_next_tokens_can_be_attribute_p (parser)) + { +- type_specifier_seq->attributes = +- chainon (type_specifier_seq->attributes, +- cp_parser_attributes_opt (parser)); ++ type_specifier_seq->attributes ++ = attr_chainon (type_specifier_seq->attributes, ++ cp_parser_attributes_opt (parser)); + continue; + } + +@@ -20904,7 +20964,10 @@ + + if (!processing_specialization + && !processing_template_parmlist +- && !processing_explicit_instantiation) ++ && !processing_explicit_instantiation ++ /* default_arg_ok_p tracks whether this is a parameter-clause for an ++ actual function or a random abstract declarator. */ ++ && parser->default_arg_ok_p) + if (!current_function_decl + || (current_class_type && LAMBDA_TYPE_P (current_class_type))) + parser->auto_is_implicit_function_template_parm_p = true; +@@ -21013,9 +21076,6 @@ + cp_parameter_declarator *parameter; + tree decl = error_mark_node; + bool parenthesized_p = false; +- int template_parm_idx = (function_being_declared_is_template_p (parser)? +- TREE_VEC_LENGTH (INNERMOST_TEMPLATE_PARMS +- (current_template_parms)) : 0); + + /* Parse the parameter. */ + parameter +@@ -21029,22 +21089,6 @@ + + if (parameter) + { +- /* If a function parameter pack was specified and an implicit template +- parameter was introduced during cp_parser_parameter_declaration, +- change any implicit parameters introduced into packs. */ +- if (parser->implicit_template_parms +- && parameter->declarator +- && parameter->declarator->parameter_pack_p) +- { +- int latest_template_parm_idx = TREE_VEC_LENGTH +- (INNERMOST_TEMPLATE_PARMS (current_template_parms)); +- +- if (latest_template_parm_idx != template_parm_idx) +- parameter->decl_specifiers.type = convert_generic_types_to_packs +- (parameter->decl_specifiers.type, +- template_parm_idx, latest_template_parm_idx); +- } +- + decl = grokdeclarator (parameter->declarator, + ¶meter->decl_specifiers, + PARM, +@@ -21202,6 +21246,10 @@ + parser->type_definition_forbidden_message + = G_("types may not be defined in parameter types"); + ++ int template_parm_idx = (function_being_declared_is_template_p (parser) ? ++ TREE_VEC_LENGTH (INNERMOST_TEMPLATE_PARMS ++ (current_template_parms)) : 0); ++ + /* Parse the declaration-specifiers. */ + cp_parser_decl_specifier_seq (parser, + CP_PARSER_FLAGS_NONE, +@@ -21270,8 +21318,8 @@ + parser->default_arg_ok_p = saved_default_arg_ok_p; + /* After the declarator, allow more attributes. */ + decl_specifiers.attributes +- = chainon (decl_specifiers.attributes, +- cp_parser_attributes_opt (parser)); ++ = attr_chainon (decl_specifiers.attributes, ++ cp_parser_attributes_opt (parser)); + + /* If the declarator is a template parameter pack, remember that and + clear the flag in the declarator itself so we don't get errors +@@ -21290,6 +21338,24 @@ + parameter pack expansion expression. Otherwise, leave the ellipsis + for a C-style variadic function. */ + token = cp_lexer_peek_token (parser->lexer); ++ ++ /* If a function parameter pack was specified and an implicit template ++ parameter was introduced during cp_parser_parameter_declaration, ++ change any implicit parameters introduced into packs. */ ++ if (parser->implicit_template_parms ++ && ((token->type == CPP_ELLIPSIS ++ && declarator_can_be_parameter_pack (declarator)) ++ || (declarator && declarator->parameter_pack_p))) ++ { ++ int latest_template_parm_idx = TREE_VEC_LENGTH ++ (INNERMOST_TEMPLATE_PARMS (current_template_parms)); ++ ++ if (latest_template_parm_idx != template_parm_idx) ++ decl_specifiers.type = convert_generic_types_to_packs ++ (decl_specifiers.type, ++ template_parm_idx, latest_template_parm_idx); ++ } ++ + if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) + { + tree type = decl_specifiers.type; +@@ -23261,7 +23327,7 @@ + which are not. */ + first_attribute = attributes; + /* Combine the attributes. */ +- attributes = chainon (prefix_attributes, attributes); ++ attributes = attr_chainon (prefix_attributes, attributes); + + /* Create the bitfield declaration. */ + decl = grokbitfield (identifier +@@ -23318,7 +23384,7 @@ + which are not. */ + first_attribute = attributes; + /* Combine the attributes. */ +- attributes = chainon (prefix_attributes, attributes); ++ attributes = attr_chainon (prefix_attributes, attributes); + + /* If it's an `=', then we have a constant-initializer or a + pure-specifier. It is not correct to parse the +@@ -23432,10 +23498,13 @@ + cp_finalize_oacc_routine (parser, decl, false); + + /* Reset PREFIX_ATTRIBUTES. */ +- while (attributes && TREE_CHAIN (attributes) != first_attribute) +- attributes = TREE_CHAIN (attributes); +- if (attributes) +- TREE_CHAIN (attributes) = NULL_TREE; ++ if (attributes != error_mark_node) ++ { ++ while (attributes && TREE_CHAIN (attributes) != first_attribute) ++ attributes = TREE_CHAIN (attributes); ++ if (attributes) ++ TREE_CHAIN (attributes) = NULL_TREE; ++ } + + /* If there is any qualification still in effect, clear it + now; we will be starting fresh with the next declarator. */ +@@ -24547,7 +24616,7 @@ + cp_parser_skip_to_end_of_statement (parser); + + /* Add these new attributes to the list. */ +- attributes = chainon (attributes, attribute_list); ++ attributes = attr_chainon (attributes, attribute_list); + } + + return attributes; +@@ -29725,7 +29794,7 @@ + which are not. */ + first_attribute = attributes; + /* Combine the attributes. */ +- attributes = chainon (prefix_attributes, attributes); ++ attributes = attr_chainon (prefix_attributes, attributes); + + if (width) + /* Create the bitfield declaration. */ +@@ -29742,10 +29811,13 @@ + objc_add_instance_variable (decl); + + /* Reset PREFIX_ATTRIBUTES. */ +- while (attributes && TREE_CHAIN (attributes) != first_attribute) +- attributes = TREE_CHAIN (attributes); +- if (attributes) +- TREE_CHAIN (attributes) = NULL_TREE; ++ if (attributes != error_mark_node) ++ { ++ while (attributes && TREE_CHAIN (attributes) != first_attribute) ++ attributes = TREE_CHAIN (attributes); ++ if (attributes) ++ TREE_CHAIN (attributes) = NULL_TREE; ++ } + + token = cp_lexer_peek_token (parser->lexer); + +@@ -30275,8 +30347,8 @@ + which are not. */ + first_attribute = attributes; + /* Combine the attributes. */ +- attributes = chainon (prefix_attributes, attributes); +- ++ attributes = attr_chainon (prefix_attributes, attributes); ++ + decl = grokfield (declarator, &declspecs, + NULL_TREE, /*init_const_expr_p=*/false, + NULL_TREE, attributes); +@@ -30285,10 +30357,13 @@ + return error_mark_node; + + /* Reset PREFIX_ATTRIBUTES. */ +- while (attributes && TREE_CHAIN (attributes) != first_attribute) +- attributes = TREE_CHAIN (attributes); +- if (attributes) +- TREE_CHAIN (attributes) = NULL_TREE; ++ if (attributes != error_mark_node) ++ { ++ while (attributes && TREE_CHAIN (attributes) != first_attribute) ++ attributes = TREE_CHAIN (attributes); ++ if (attributes) ++ TREE_CHAIN (attributes) = NULL_TREE; ++ } + + DECL_CHAIN (decl) = decls; + decls = decl; +@@ -30888,7 +30963,10 @@ + if (name == error_mark_node) + goto skip_comma; + +- decl = cp_parser_lookup_name_simple (parser, name, token->location); ++ if (identifier_p (name)) ++ decl = cp_parser_lookup_name_simple (parser, name, token->location); ++ else ++ decl = name; + if (decl == error_mark_node) + cp_parser_name_lookup_error (parser, name, decl, NLE_NULL, + token->location); +@@ -34209,7 +34287,7 @@ + cp_parser_omp_for_loop_init (cp_parser *parser, + enum tree_code code, + tree &this_pre_body, +- vec *for_block, ++ vec *&for_block, + tree &init, + tree &orig_init, + tree &decl, +@@ -37448,7 +37526,9 @@ + /*template_p=*/NULL, + /*declarator_p=*/false, + /*optional_p=*/false); +- tree decl = cp_parser_lookup_name_simple (parser, name, name_loc); ++ tree decl = (identifier_p (name) ++ ? cp_parser_lookup_name_simple (parser, name, name_loc) ++ : name); + if (name != error_mark_node && decl == error_mark_node) + cp_parser_name_lookup_error (parser, name, decl, NLE_NULL, name_loc); + +Index: gcc/cp/call.c +=================================================================== +--- a/src/gcc/cp/call.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/call.c (.../branches/gcc-7-branch) +@@ -375,18 +375,10 @@ + + TREE_HAS_CONSTRUCTOR (function) = (decl && DECL_CONSTRUCTOR_P (decl)); + +- if (current_function_decl && decl +- && flag_new_inheriting_ctors +- && DECL_INHERITED_CTOR (current_function_decl) +- && (DECL_INHERITED_CTOR (current_function_decl) +- == DECL_CLONED_FUNCTION (decl))) +- /* Pass arguments directly to the inherited constructor. */ +- CALL_FROM_THUNK_P (function) = true; +- + /* Don't pass empty class objects by value. This is useful + for tags in STL, which are used to control overload resolution. + We don't need to handle other cases of copying empty classes. */ +- else if (! decl || ! DECL_BUILT_IN (decl)) ++ if (! decl || ! DECL_BUILT_IN (decl)) + for (i = 0; i < n; i++) + { + tree arg = CALL_EXPR_ARG (function, i); +@@ -3267,10 +3259,10 @@ + tree return_type, tree access_path, + tree conversion_path, tsubst_flags_t complain) + { +- /* Making this work broke PR 71117, so until the committee resolves core +- issue 2189, let's disable this candidate if there are any viable call ++ /* Making this work broke PR 71117 and 85118, so until the committee resolves ++ core issue 2189, let's disable this candidate if there are any call + operators. */ +- if (any_strictly_viable (*candidates)) ++ if (*candidates) + return NULL; + + return +@@ -6886,6 +6878,11 @@ + && DECL_INHERITED_CTOR (current_function_decl)) + return expr; + ++ if (TREE_CODE (expr) == TARGET_EXPR ++ && TARGET_EXPR_LIST_INIT_P (expr)) ++ /* Copy-list-initialization doesn't actually involve a copy. */ ++ return expr; ++ + /* Fall through. */ + case ck_base: + if (convs->kind == ck_base && !convs->need_temporary_p) +@@ -6911,10 +6908,6 @@ + flags |= LOOKUP_ONLYCONVERTING; + if (convs->rvaluedness_matches_p) + flags |= LOOKUP_PREFER_RVALUE; +- if (TREE_CODE (expr) == TARGET_EXPR +- && TARGET_EXPR_LIST_INIT_P (expr)) +- /* Copy-list-initialization doesn't actually involve a copy. */ +- return expr; + expr = build_temp (expr, totype, flags, &diag_kind, complain); + if (diag_kind && complain) + { +@@ -7151,7 +7144,7 @@ + "passing objects of non-trivially-copyable " + "type %q#T through %<...%> is conditionally supported", + arg_type); +- return cp_build_addr_expr (arg, complain); ++ return build1 (ADDR_EXPR, build_reference_type (arg_type), arg); + } + /* Build up a real lvalue-to-rvalue conversion in case the + copy constructor is trivial but not callable. */ +@@ -7525,6 +7518,15 @@ + /* build_compound_expr pushes COMPOUND_EXPR inside TARGET_EXPR. */ + while (TREE_CODE (init) == COMPOUND_EXPR) + init = TREE_OPERAND (init, 1); ++ if (TREE_CODE (init) == COND_EXPR) ++ { ++ /* We'll end up copying from each of the arms of the COND_EXPR directly ++ into the target, so look at them. */ ++ if (tree op = TREE_OPERAND (init, 1)) ++ if (unsafe_copy_elision_p (target, op)) ++ return true; ++ return unsafe_copy_elision_p (target, TREE_OPERAND (init, 2)); ++ } + return (TREE_CODE (init) == AGGR_INIT_EXPR + && !AGGR_INIT_VIA_CTOR_P (init)); + } +@@ -7566,6 +7568,10 @@ + + if (undeduced_auto_decl (fn)) + mark_used (fn, complain); ++ else ++ /* Otherwise set TREE_USED for the benefit of -Wunused-function. ++ See PR80598. */ ++ TREE_USED (fn) = 1; + + return_type = TREE_TYPE (TREE_TYPE (fn)); + nargs = vec_safe_length (args); +@@ -7929,7 +7935,15 @@ + tree *fargs = (!nargs ? argarray + : (tree *) alloca (nargs * sizeof (tree))); + for (j = 0; j < nargs; j++) +- fargs[j] = maybe_constant_value (argarray[j]); ++ { ++ /* For -Wformat undo the implicit passing by hidden reference ++ done by convert_arg_to_ellipsis. */ ++ if (TREE_CODE (argarray[j]) == ADDR_EXPR ++ && TREE_CODE (TREE_TYPE (argarray[j])) == REFERENCE_TYPE) ++ fargs[j] = TREE_OPERAND (argarray[j], 0); ++ else ++ fargs[j] = maybe_constant_value (argarray[j]); ++ } + + warned_p = check_function_arguments (input_location, fn, TREE_TYPE (fn), + nargs, fargs); +@@ -8399,6 +8413,9 @@ + { + if (is_dummy_object (instance)) + return arg; ++ else if (TREE_CODE (arg) == TARGET_EXPR) ++ TARGET_EXPR_DIRECT_INIT_P (arg) = true; ++ + if ((complain & tf_error) + && (flags & LOOKUP_DELEGATING_CONS)) + check_self_delegation (arg); +@@ -8851,8 +8868,14 @@ + if (TREE_CODE (TREE_TYPE (fn)) != METHOD_TYPE + && !is_dummy_object (instance) + && TREE_SIDE_EFFECTS (instance)) +- call = build2 (COMPOUND_EXPR, TREE_TYPE (call), +- instance, call); ++ { ++ /* But avoid the implicit lvalue-rvalue conversion when 'a' ++ is volatile. */ ++ tree a = instance; ++ if (TREE_THIS_VOLATILE (a)) ++ a = build_this (a); ++ call = build2 (COMPOUND_EXPR, TREE_TYPE (call), a, call); ++ } + else if (call != error_mark_node + && DECL_DESTRUCTOR_P (cand->fn) + && !VOID_TYPE_P (TREE_TYPE (call))) +Index: gcc/cp/lambda.c +=================================================================== +--- a/src/gcc/cp/lambda.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/lambda.c (.../branches/gcc-7-branch) +@@ -262,6 +262,7 @@ + return (VAR_P (decl) + && DECL_HAS_VALUE_EXPR_P (decl) + && !DECL_ANON_UNION_VAR_P (decl) ++ && !DECL_DECOMPOSITION_P (decl) + && LAMBDA_FUNCTION_P (DECL_CONTEXT (decl))); + } + +@@ -712,11 +713,14 @@ + lambda_stack); + + if (LAMBDA_EXPR_EXTRA_SCOPE (tlambda) ++ && !COMPLETE_TYPE_P (LAMBDA_EXPR_CLOSURE (tlambda)) + && TREE_CODE (LAMBDA_EXPR_EXTRA_SCOPE (tlambda)) == FIELD_DECL) + { + /* In an NSDMI, we don't have a function to look up the decl in, + but the fake 'this' pointer that we're using for parsing is +- in scope_chain. */ ++ in scope_chain. But if the closure is already complete, we're ++ in an instantiation of a generic lambda, and the fake 'this' ++ is gone. */ + init = scope_chain->x_current_class_ptr; + gcc_checking_assert + (init && (TREE_TYPE (TREE_TYPE (init)) +@@ -1072,7 +1076,6 @@ + } + } + +- + if (generic_lambda_p) + { + if (decltype_call) +Index: gcc/cp/cvt.c +=================================================================== +--- a/src/gcc/cp/cvt.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/cvt.c (.../branches/gcc-7-branch) +@@ -1053,6 +1053,8 @@ + || TREE_TYPE (expr) == error_mark_node) + return error_mark_node; + ++ expr = maybe_undo_parenthesized_ref (expr); ++ + if (implicit == ICV_CAST) + mark_exp_read (expr); + else +Index: gcc/cp/cp-tree.h +=================================================================== +--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-7-branch) +@@ -6708,6 +6708,7 @@ + + extern void cxx_print_statistics (void); + extern bool maybe_warn_zero_as_null_pointer_constant (tree, location_t); ++extern void cp_warn_deprecated_use (tree); + + /* in ptree.c */ + extern void cxx_print_xnode (FILE *, tree, int); +@@ -6777,6 +6778,7 @@ + extern tree cp_build_addr_expr (tree, tsubst_flags_t); + extern tree cp_build_unary_op (enum tree_code, tree, bool, + tsubst_flags_t); ++extern tree genericize_compound_lvalue (tree); + extern tree unary_complex_lvalue (enum tree_code, tree); + extern tree build_x_conditional_expr (location_t, tree, tree, tree, + tsubst_flags_t); +@@ -6941,6 +6943,7 @@ + gimple_seq *); + extern void cp_genericize (tree); + extern bool cxx_omp_const_qual_no_mutable (tree); ++extern enum omp_clause_default_kind cxx_omp_predetermined_sharing_1 (tree); + extern enum omp_clause_default_kind cxx_omp_predetermined_sharing (tree); + extern tree cxx_omp_clause_default_ctor (tree, tree, tree); + extern tree cxx_omp_clause_copy_ctor (tree, tree, tree); +Index: gcc/cp/search.c +=================================================================== +--- a/src/gcc/cp/search.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/search.c (.../branches/gcc-7-branch) +@@ -2879,7 +2879,7 @@ + bool + any_dependent_bases_p (tree type) + { +- if (!type || !CLASS_TYPE_P (type) || !processing_template_decl) ++ if (!type || !CLASS_TYPE_P (type) || !uses_template_parms (type)) + return false; + + unsigned i; +Index: gcc/cp/name-lookup.c +=================================================================== +--- a/src/gcc/cp/name-lookup.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/name-lookup.c (.../branches/gcc-7-branch) +@@ -3684,6 +3684,9 @@ + tree d; + bool saw_vis = false; + ++ if (attributes == error_mark_node) ++ return false; ++ + for (d = attributes; d; d = TREE_CHAIN (d)) + { + tree name = get_attribute_name (d); +Index: gcc/omp-expand.c +=================================================================== +--- a/src/gcc/omp-expand.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/omp-expand.c (.../branches/gcc-7-branch) +@@ -5628,6 +5628,14 @@ + + split->flags ^= EDGE_FALLTHRU | EDGE_TRUE_VALUE; + ++ /* Add a dummy exit for the tiled block when cont_bb is missing. */ ++ if (cont_bb == NULL) ++ { ++ edge e = make_edge (body_bb, exit_bb, EDGE_FALSE_VALUE); ++ e->probability = PROB_EVEN; ++ split->probability = PROB_EVEN; ++ } ++ + /* Initialize the user's loop vars. */ + gsi = gsi_start_bb (elem_body_bb); + expand_oacc_collapse_vars (fd, true, &gsi, counts, e_offset); +Index: gcc/lto-streamer-out.c +=================================================================== +--- a/src/gcc/lto-streamer-out.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lto-streamer-out.c (.../branches/gcc-7-branch) +@@ -2524,13 +2524,10 @@ + const char *comdat; + unsigned char c; + +- /* None of the following kinds of symbols are needed in the +- symbol table. */ +- if (!TREE_PUBLIC (t) +- || is_builtin_fn (t) +- || DECL_ABSTRACT_P (t) +- || (VAR_P (t) && DECL_HARD_REGISTER (t))) +- return; ++ gcc_checking_assert (TREE_PUBLIC (t) ++ && !is_builtin_fn (t) ++ && !DECL_ABSTRACT_P (t) ++ && (!VAR_P (t) || !DECL_HARD_REGISTER (t))); + + gcc_assert (VAR_OR_FUNCTION_DECL_P (t)); + +@@ -2618,45 +2615,6 @@ + lto_write_data (&slot_num, 4); + } + +-/* Return true if NODE should appear in the plugin symbol table. */ +- +-bool +-output_symbol_p (symtab_node *node) +-{ +- struct cgraph_node *cnode; +- if (!node->real_symbol_p ()) +- return false; +- /* We keep external functions in symtab for sake of inlining +- and devirtualization. We do not want to see them in symbol table as +- references unless they are really used. */ +- cnode = dyn_cast (node); +- if (cnode && (!node->definition || DECL_EXTERNAL (cnode->decl)) +- && cnode->callers) +- return true; +- +- /* Ignore all references from external vars initializers - they are not really +- part of the compilation unit until they are used by folding. Some symbols, +- like references to external construction vtables can not be referred to at all. +- We decide this at can_refer_decl_in_current_unit_p. */ +- if (!node->definition || DECL_EXTERNAL (node->decl)) +- { +- int i; +- struct ipa_ref *ref; +- for (i = 0; node->iterate_referring (i, ref); i++) +- { +- if (ref->use == IPA_REF_ALIAS) +- continue; +- if (is_a (ref->referring)) +- return true; +- if (!DECL_EXTERNAL (ref->referring->decl)) +- return true; +- } +- return false; +- } +- return true; +-} +- +- + /* Write an IL symbol table to OB. + SET and VSET are cgraph/varpool node sets we are outputting. */ + +@@ -2681,7 +2639,7 @@ + { + symtab_node *node = lsei_node (lsei); + +- if (!output_symbol_p (node) || DECL_EXTERNAL (node->decl)) ++ if (DECL_EXTERNAL (node->decl) || !node->output_to_lto_symbol_table_p ()) + continue; + write_symbol (cache, node->decl, &seen, false); + } +@@ -2690,7 +2648,7 @@ + { + symtab_node *node = lsei_node (lsei); + +- if (!output_symbol_p (node) || !DECL_EXTERNAL (node->decl)) ++ if (!DECL_EXTERNAL (node->decl) || !node->output_to_lto_symbol_table_p ()) + continue; + write_symbol (cache, node->decl, &seen, false); + } +Index: gcc/ipa-utils.c +=================================================================== +--- a/src/gcc/ipa-utils.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-utils.c (.../branches/gcc-7-branch) +@@ -404,6 +404,8 @@ + + if (!dst->count) + return; ++ if (!src->count || src->alias) ++ return; + if (symtab->dump_file) + { + fprintf (symtab->dump_file, "Merging profiles of %s/%i to %s/%i\n", +Index: gcc/ipa-inline.c +=================================================================== +--- a/src/gcc/ipa-inline.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-inline.c (.../branches/gcc-7-branch) +@@ -1773,7 +1773,7 @@ + struct cgraph_node *n2; + int id = dfs->scc_no + 1; + for (n2 = node; n2; +- n2 = ((struct ipa_dfs_info *) node->aux)->next_cycle) ++ n2 = ((struct ipa_dfs_info *) n2->aux)->next_cycle) + { + struct inline_summary *info2 = inline_summaries->get (n2); + if (info2->scc_no) +Index: gcc/machmode.def +=================================================================== +--- a/src/gcc/machmode.def (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/machmode.def (.../branches/gcc-7-branch) +@@ -243,6 +243,7 @@ + + /* Complex modes. */ + COMPLEX_MODES (INT); ++COMPLEX_MODES (PARTIAL_INT); + COMPLEX_MODES (FLOAT); + + /* Decimal floating point modes. */ +Index: gcc/dwarf2out.c +=================================================================== +--- a/src/gcc/dwarf2out.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/dwarf2out.c (.../branches/gcc-7-branch) +@@ -297,6 +297,10 @@ + #define FUNC_BEGIN_LABEL "LFB" + #endif + ++#ifndef FUNC_SECOND_SECT_LABEL ++#define FUNC_SECOND_SECT_LABEL "LFSB" ++#endif ++ + #ifndef FUNC_END_LABEL + #define FUNC_END_LABEL "LFE" + #endif +@@ -1200,21 +1204,24 @@ + void + dwarf2out_switch_text_section (void) + { ++ char label[MAX_ARTIFICIAL_LABEL_BYTES]; + section *sect; + dw_fde_ref fde = cfun->fde; + + gcc_assert (cfun && fde && fde->dw_fde_second_begin == NULL); + ++ ASM_GENERATE_INTERNAL_LABEL (label, FUNC_SECOND_SECT_LABEL, ++ current_function_funcdef_no); ++ ++ fde->dw_fde_second_begin = ggc_strdup (label); + if (!in_cold_section_p) + { + fde->dw_fde_end = crtl->subsections.cold_section_end_label; +- fde->dw_fde_second_begin = crtl->subsections.hot_section_label; + fde->dw_fde_second_end = crtl->subsections.hot_section_end_label; + } + else + { + fde->dw_fde_end = crtl->subsections.hot_section_end_label; +- fde->dw_fde_second_begin = crtl->subsections.cold_section_label; + fde->dw_fde_second_end = crtl->subsections.cold_section_end_label; + } + have_multiple_function_sections = true; +@@ -18749,6 +18756,8 @@ + + if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE_SIZE (mode) == 1 + && domain ++ && TYPE_MAX_VALUE (domain) ++ && TREE_CODE (TYPE_MAX_VALUE (domain)) == INTEGER_CST + && integer_zerop (TYPE_MIN_VALUE (domain)) + && compare_tree_int (TYPE_MAX_VALUE (domain), + TREE_STRING_LENGTH (init) - 1) == 0 +@@ -29720,6 +29729,8 @@ + FOR_EACH_CHILD (die, c, gcc_assert (! c->die_mark)); + } + #endif ++ for (ctnode = comdat_type_list; ctnode != NULL; ctnode = ctnode->next) ++ resolve_addr (ctnode->root_die); + resolve_addr (comp_unit_die ()); + move_marked_base_types (); + +Index: gcc/match.pd +=================================================================== +--- a/src/gcc/match.pd (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/match.pd (.../branches/gcc-7-branch) +@@ -2789,15 +2789,17 @@ + (simplify + (cond + (ne (bit_and @0 integer_pow2p@1) integer_zerop) +- integer_pow2p@2 integer_zerop) +- (with { +- int shift = wi::exact_log2 (@2) - wi::exact_log2 (@1); +- } +- (if (shift > 0) +- (bit_and +- (lshift (convert @0) { build_int_cst (integer_type_node, shift); }) @2) +- (bit_and +- (convert (rshift @0 { build_int_cst (integer_type_node, -shift); })) @2)))) ++ INTEGER_CST@2 integer_zerop) ++ (if (integer_pow2p (@2)) ++ (with { ++ int shift = wi::exact_log2 (@2) - wi::exact_log2 (@1); ++ } ++ (if (shift > 0) ++ (bit_and ++ (lshift (convert @0) { build_int_cst (integer_type_node, shift); }) @2) ++ (bit_and ++ (convert (rshift @0 { build_int_cst (integer_type_node, -shift); })) ++ @2))))) + + /* If we have (A & C) != 0 where C is the sign bit of A, convert + this into A < 0. Similarly for (A & C) == 0 into A >= 0. */ +@@ -2818,8 +2820,9 @@ + (simplify + (cond + (lt @0 integer_zerop) +- integer_pow2p@1 integer_zerop) +- (if (!TYPE_UNSIGNED (TREE_TYPE (@0))) ++ INTEGER_CST@1 integer_zerop) ++ (if (integer_pow2p (@1) ++ && !TYPE_UNSIGNED (TREE_TYPE (@0))) + (with { + int shift = element_precision (@0) - wi::exact_log2 (@1) - 1; + } +@@ -2926,10 +2929,13 @@ + (for cmp (ne eq) + (simplify + (cmp (convert @0) INTEGER_CST@1) +- (if ((POINTER_TYPE_P (TREE_TYPE (@0)) && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0))) +- && INTEGRAL_TYPE_P (TREE_TYPE (@1))) +- || (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && POINTER_TYPE_P (TREE_TYPE (@1)) +- && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1))))) ++ (if (((POINTER_TYPE_P (TREE_TYPE (@0)) ++ && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0))) ++ && INTEGRAL_TYPE_P (TREE_TYPE (@1))) ++ || (INTEGRAL_TYPE_P (TREE_TYPE (@0)) ++ && POINTER_TYPE_P (TREE_TYPE (@1)) ++ && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1))))) ++ && TYPE_PRECISION (TREE_TYPE (@0)) == TYPE_PRECISION (TREE_TYPE (@1))) + (cmp @0 (convert @1))))) + + /* Non-equality compare simplifications from fold_binary */ +Index: gcc/expr.c +=================================================================== +--- a/src/gcc/expr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/expr.c (.../branches/gcc-7-branch) +@@ -5109,7 +5109,10 @@ + && bitpos == 0 + && bitsize == mode_bitsize) + result = store_expr (from, to_rtx, false, nontemporal, reversep); +- else if (bitsize == mode_bitsize / 2 ++ else if (COMPLEX_MODE_P (GET_MODE (to_rtx)) ++ && (TYPE_MODE (TREE_TYPE (from)) ++ == GET_MODE_INNER (GET_MODE (to_rtx))) ++ && bitsize == mode_bitsize / 2 + && (bitpos == 0 || bitpos == mode_bitsize / 2)) + result = store_expr (from, XEXP (to_rtx, bitpos != 0), false, + nontemporal, reversep); +@@ -6893,8 +6896,9 @@ + if (GET_CODE (temp) == PARALLEL) + { + HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp)); +- machine_mode temp_mode +- = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT); ++ machine_mode temp_mode = GET_MODE (temp); ++ if (temp_mode == BLKmode || temp_mode == VOIDmode) ++ temp_mode = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT); + rtx temp_target = gen_reg_rtx (temp_mode); + emit_group_store (temp_target, temp, TREE_TYPE (exp), size); + temp = temp_target; +@@ -10862,18 +10866,30 @@ + tree fndecl = get_callee_fndecl (exp), attr; + + if (fndecl ++ /* Don't diagnose the error attribute in thunks, those are ++ artificially created. */ ++ && !CALL_FROM_THUNK_P (exp) + && (attr = lookup_attribute ("error", + DECL_ATTRIBUTES (fndecl))) != NULL) +- error ("%Kcall to %qs declared with attribute error: %s", +- exp, identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 1)), +- TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); ++ { ++ const char *ident = lang_hooks.decl_printable_name (fndecl, 1); ++ error ("%Kcall to %qs declared with attribute error: %s", exp, ++ identifier_to_locale (ident), ++ TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); ++ } + if (fndecl ++ /* Don't diagnose the warning attribute in thunks, those are ++ artificially created. */ ++ && !CALL_FROM_THUNK_P (exp) + && (attr = lookup_attribute ("warning", + DECL_ATTRIBUTES (fndecl))) != NULL) +- warning_at (tree_nonartificial_location (exp), +- 0, "%Kcall to %qs declared with attribute warning: %s", +- exp, identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 1)), +- TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); ++ { ++ const char *ident = lang_hooks.decl_printable_name (fndecl, 1); ++ warning_at (tree_nonartificial_location (exp), 0, ++ "%Kcall to %qs declared with attribute warning: %s", ++ exp, identifier_to_locale (ident), ++ TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); ++ } + + /* Check for a built-in function. */ + if (fndecl && DECL_BUILT_IN (fndecl)) +Index: gcc/go/gofrontend/expressions.cc +=================================================================== +--- a/src/gcc/go/gofrontend/expressions.cc (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/go/gofrontend/expressions.cc (.../branches/gcc-7-branch) +@@ -8065,7 +8065,7 @@ + if (arg_type->is_error()) + return false; + if (arg_type->is_abstract()) +- return false; ++ arg_type = arg_type->make_non_abstract_type(); + if (this->seen_) + return false; + +Index: gcc/opts.c +=================================================================== +--- a/src/gcc/opts.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/opts.c (.../branches/gcc-7-branch) +@@ -1014,6 +1014,26 @@ + if ((opts->x_flag_sanitize & SANITIZE_KERNEL_ADDRESS) && opts->x_flag_tm) + sorry ("transactional memory is not supported with " + "%<-fsanitize=kernel-address%>"); ++ ++ /* Comes from final.c -- no real reason to change it. */ ++#define MAX_CODE_ALIGN 16 ++#define MAX_CODE_ALIGN_VALUE (1 << MAX_CODE_ALIGN) ++ ++ if (opts->x_align_loops > MAX_CODE_ALIGN_VALUE) ++ error_at (loc, "-falign-loops=%d is not between 0 and %d", ++ opts->x_align_loops, MAX_CODE_ALIGN_VALUE); ++ ++ if (opts->x_align_jumps > MAX_CODE_ALIGN_VALUE) ++ error_at (loc, "-falign-jumps=%d is not between 0 and %d", ++ opts->x_align_jumps, MAX_CODE_ALIGN_VALUE); ++ ++ if (opts->x_align_functions > MAX_CODE_ALIGN_VALUE) ++ error_at (loc, "-falign-functions=%d is not between 0 and %d", ++ opts->x_align_functions, MAX_CODE_ALIGN_VALUE); ++ ++ if (opts->x_align_labels > MAX_CODE_ALIGN_VALUE) ++ error_at (loc, "-falign-labels=%d is not between 0 and %d", ++ opts->x_align_labels, MAX_CODE_ALIGN_VALUE); + } + + #define LEFT_COLUMN 27 +Index: gcc/lra-lives.c +=================================================================== +--- a/src/gcc/lra-lives.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lra-lives.c (.../branches/gcc-7-branch) +@@ -593,7 +593,9 @@ + reg_early_clobber_p (const struct lra_insn_reg *reg, int n_alt) + { + return (reg->early_clobber +- && (n_alt < 0 || TEST_BIT (reg->early_clobber_alts, n_alt))); ++ && (n_alt == LRA_UNKNOWN_ALT ++ || (n_alt != LRA_NON_CLOBBERED_ALT ++ && TEST_BIT (reg->early_clobber_alts, n_alt)))); + } + + /* Process insns of the basic block BB to update pseudo live ranges, +Index: gcc/ada/fe.h +=================================================================== +--- a/src/gcc/ada/fe.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/fe.h (.../branches/gcc-7-branch) +@@ -177,6 +177,7 @@ + #define GNAT_Mode opt__gnat_mode + #define List_Representation_Info opt__list_representation_info + #define No_Strict_Aliasing_CP opt__no_strict_aliasing ++#define Suppress_Checks opt__suppress_checks + + typedef enum { + Front_End_SJLJ, Back_End_ZCX, Back_End_SJLJ +@@ -191,6 +192,7 @@ + extern Boolean GNAT_Mode; + extern Int List_Representation_Info; + extern Boolean No_Strict_Aliasing_CP; ++extern Boolean Suppress_Checks; + + #define ZCX_Exceptions opt__zcx_exceptions + #define SJLJ_Exceptions opt__sjlj_exceptions +Index: gcc/ada/s-osinte-solaris.ads +=================================================================== +--- a/src/gcc/ada/s-osinte-solaris.ads (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/s-osinte-solaris.ads (.../branches/gcc-7-branch) +@@ -536,17 +536,18 @@ + end record; + pragma Convention (C, record_type_3); + ++ type upad64_t is new Interfaces.Unsigned_64; ++ + type mutex_t is record + flags : record_type_3; +- lock : String (1 .. 8); +- data : String (1 .. 8); ++ lock : upad64_t; ++ data : upad64_t; + end record; + pragma Convention (C, mutex_t); + + type cond_t is record +- flag : array_type_9; +- Xtype : unsigned_long; +- data : String (1 .. 8); ++ flags : record_type_3; ++ data : upad64_t; + end record; + pragma Convention (C, cond_t); + +Index: gcc/ada/ChangeLog +=================================================================== +--- a/src/gcc/ada/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,145 @@ ++2018-11-15 Eric Botcazou ++ ++ * gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the switch ++ -fnon-call-exceptions passed on the command line in -gnatp mode. ++ ++2018-11-13 Eric Botcazou ++ ++ * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions ++ for the runtime on platforms where System.Machine_Overflow is true. ++ ++2018-11-08 Eric Botcazou ++ ++ * fe.h (Suppress_Checks): Declare. ++ * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions ++ only if checks are not suppressed and -faggressive-loop-optimizations ++ only if they are. ++ * gcc-interface/trans.c (struct loop_info_d): Remove has_checks and ++ warned_aggressive_loop_optimizations fields. ++ (gigi): Do not clear warn_aggressive_loop_optimizations here. ++ (Raise_Error_to_gnu): Do not set has_checks. ++ (gnat_to_gnu) : Remove support for aggressive ++ loop optimizations. ++ ++2018-10-22 Eric Botcazou ++ ++ * gcc-interface/utils.c (unchecked_convert): Use local variables for ++ the biased and reverse SSO attributes of both types. ++ Further extend the processing of integral types in the presence of ++ reverse SSO to all scalar types. ++ ++2018-10-22 Eric Botcazou ++ ++ * gcc-interface/trans.c (Pragma_to_gnu) : Use ++ a simple memory constraint in all cases. ++ ++2018-09-13 Eric Botcazou ++ ++ Backport from mainline ++ 2018-07-31 Eric Botcazou ++ ++ * s-osinte-solaris.ads (upad64_t): New private type. ++ (mutex_t): Use it for 'lock' and 'data' components. ++ (cond_t): Likewise for 'data' and use single 'flags' component. ++ ++2018-07-17 Eric Botcazou ++ ++ * gcc-interface/decl.c (choices_to_gnu): Rename parameters. Deal with ++ an operand of Character type. Factor out range generation to the end. ++ Check that the bounds are literals and convert them to the type of the ++ operand before building the ranges. ++ * gcc-interface/utils.c (make_dummy_type): Minor tweak. ++ (make_packable_type): Propagate TYPE_DEBUG_TYPE. ++ (maybe_pad_type): Likewise. ++ ++2018-07-17 Eric Botcazou ++ ++ * gcc-interface/decl.c (gnat_to_gnu_entity) : Deal with ++ more rvalues in the expression of a renaming. ++ ++2018-06-12 Eric Botcazou ++ ++ * gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Change from ++ using TYPE_LANG_FLAG_4 to using TYPE_LANG_FLAG_0. ++ (TYPE_ALIGN_OK): Move around. ++ (TYPE_PADDING_FOR_COMPONENT): Remove superfluous parentheses. ++ * gcc-interface/decl.c (change_qualified_type): Move to... ++ (gnat_to_gnu_entity): Adjust comment. ++ * gcc-interface/gigi.h (change_qualified_type): ...here; make inline. ++ (ceil_pow2): Use ceil_log2. ++ * gcc-interface/utils.c (finish_subprog_decl): Add couple of comments ++ and do not set TREE_SIDE_EFFECTS. ++ (handle_noreturn_attribute): Use change_qualified_type. ++ ++2018-06-12 Eric Botcazou ++ ++ * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not get ++ the expression of a dispatch table that is not being defined. ++ : Remove obsolete kludge. ++ ++2018-06-12 Eric Botcazou ++ ++ Backpor from mainline ++ 2018-06-02 Eric Botcazou ++ ++ * gcc-interface/decl.c (gnat_to_gnu_entity) : If this is ++ not a definition, retrieve the expression only if it's a compile-time ++ known value if we are just annotating types. ++ ++ * gcc-interface/utils.c (convert): Do not try to upcast properly for a ++ conversion between tagged types in type_annotate_only mode. ++ ++2018-06-12 Eric Botcazou ++ ++ Backport from mainline ++ 2018-06-11 Eric Botcazou ++ ++ * gcc-interface/decl.c (gnat_to_gnu_entity) : Reuse the ++ existing fields of a dummy fat pointer type, if any. Clear the ++ TYPE_DECL_SUPPRESS_DEBUG on the fat pointer type after completing it. ++ ++2018-06-02 Eric Botcazou ++ ++ * gcc-interface/ada-tree.h (TYPE_PADDING_FOR_COMPONENT): New macro. ++ * gcc-interface/decl.c (gnat_to_gnu_component_type): Cache the padding ++ type built for an aliased component with variable size. ++ ++2018-06-02 Eric Botcazou ++ ++ Backport from mainline ++ 2018-05-31 Eric Botcazou ++ ++ * gcc-interface/trans.c (Call_to_gnu): If this is a function call and ++ there is no target, also create a temporary for the return value for ++ an allocator if the type is an unconstrained record type with default ++ discriminant. ++ ++2018-04-12 Sebastian Huber ++ ++ Backport from mainline ++ 2018-03-07 Sebastian Huber ++ ++ * gcc-interface/Makefile.in (OSCONS_CPP): Remove redundant ++ $(GNATLIBCFLAGS). ++ (OSCONS_EXTRACT): Add $(GNATLIBCFLAGS_FOR_C). ++ ++2018-03-12 Eric Botcazou ++ ++ PR ada/82813 ++ * gcc-interface/misc.c (gnat_post_options): Disable string overflow ++ warnings. ++ ++2018-03-10 Eric Botcazou ++ ++ * gcc-interface/trans.c (node_has_volatile_full_access) : ++ Consider only entities for objects. ++ ++2018-03-06 Eric Botcazou ++ ++ * gcc-interface/trans.c (convert_with_check): Fix typo in the condition ++ guarding the overflow check emitted for the upper bound of a floating- ++ point conversion. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/ada/gcc-interface/utils.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/utils.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/gcc-interface/utils.c (.../branches/gcc-7-branch) +@@ -1036,7 +1036,9 @@ + + finish_record_type (new_type, nreverse (new_field_list), 2, false); + relate_alias_sets (new_type, type, ALIAS_SET_COPY); +- if (TYPE_STUB_DECL (type)) ++ if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL) ++ SET_TYPE_DEBUG_TYPE (new_type, TYPE_DEBUG_TYPE (type)); ++ else if (TYPE_STUB_DECL (type)) + SET_DECL_PARALLEL_TYPE (TYPE_STUB_DECL (new_type), + DECL_PARALLEL_TYPE (TYPE_STUB_DECL (type))); + +@@ -1367,7 +1369,7 @@ + finish_record_type (record, field, 1, false); + + if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL) +- SET_TYPE_DEBUG_TYPE (record, type); ++ SET_TYPE_DEBUG_TYPE (record, maybe_debug_type (type)); + + /* Set the RM size if requested. */ + if (set_rm_size) +@@ -3255,9 +3257,12 @@ + DECL_BY_REFERENCE (result_decl) = TREE_ADDRESSABLE (type); + DECL_RESULT (decl) = result_decl; + ++ /* Propagate the "const" property. */ + TREE_READONLY (decl) = TYPE_READONLY (type); +- TREE_SIDE_EFFECTS (decl) = TREE_THIS_VOLATILE (decl) = TYPE_VOLATILE (type); + ++ /* Propagate the "noreturn" property. */ ++ TREE_THIS_VOLATILE (decl) = TYPE_VOLATILE (type); ++ + if (asm_name) + { + /* Let the target mangle the name if this isn't a verbatim asm. */ +@@ -4543,9 +4548,12 @@ + etype))) + return build1 (VIEW_CONVERT_EXPR, type, expr); + +- /* If we are converting between tagged types, try to upcast properly. */ ++ /* If we are converting between tagged types, try to upcast properly. ++ But don't do it if we are just annotating types since tagged types ++ aren't fully laid out in this mode. */ + else if (ecode == RECORD_TYPE && code == RECORD_TYPE +- && TYPE_ALIGN_OK (etype) && TYPE_ALIGN_OK (type)) ++ && TYPE_ALIGN_OK (etype) && TYPE_ALIGN_OK (type) ++ && !type_annotate_only) + { + tree child_etype = etype; + do { +@@ -5022,8 +5030,16 @@ + tree etype = TREE_TYPE (expr); + enum tree_code ecode = TREE_CODE (etype); + enum tree_code code = TREE_CODE (type); ++ const bool ebiased ++ = (ecode == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (etype)); ++ const bool biased ++ = (code == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (type)); ++ const bool ereverse ++ = (AGGREGATE_TYPE_P (etype) && TYPE_REVERSE_STORAGE_ORDER (etype)); ++ const bool reverse ++ = (AGGREGATE_TYPE_P (type) && TYPE_REVERSE_STORAGE_ORDER (type)); + tree tem; +- int c; ++ int c = 0; + + /* If the expression is already of the right type, we are done. */ + if (etype == type) +@@ -5039,7 +5055,7 @@ + || (ecode == RECORD_TYPE && TYPE_JUSTIFIED_MODULAR_P (etype)))) + || code == UNCONSTRAINED_ARRAY_TYPE) + { +- if (ecode == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (etype)) ++ if (ebiased) + { + tree ntype = copy_type (etype); + TYPE_BIASED_REPRESENTATION_P (ntype) = 0; +@@ -5047,7 +5063,7 @@ + expr = build1 (NOP_EXPR, ntype, expr); + } + +- if (code == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (type)) ++ if (biased) + { + tree rtype = copy_type (type); + TYPE_BIASED_REPRESENTATION_P (rtype) = 0; +@@ -5076,30 +5092,35 @@ + Finally, for the sake of consistency, we do the unchecked conversion + to an integral type with reverse storage order as soon as the source + type is an aggregate type with reverse storage order, even if there +- are no considerations of precision or size involved. */ +- else if (INTEGRAL_TYPE_P (type) +- && TYPE_RM_SIZE (type) +- && (tree_int_cst_compare (TYPE_RM_SIZE (type), +- TYPE_SIZE (type)) < 0 +- || (AGGREGATE_TYPE_P (etype) +- && TYPE_REVERSE_STORAGE_ORDER (etype)))) ++ are no considerations of precision or size involved. Ultimately, we ++ further extend this processing to any scalar type. */ ++ else if ((INTEGRAL_TYPE_P (type) ++ && TYPE_RM_SIZE (type) ++ && ((c = tree_int_cst_compare (TYPE_RM_SIZE (type), ++ TYPE_SIZE (type))) < 0 ++ || ereverse)) ++ || (SCALAR_FLOAT_TYPE_P (type) && ereverse)) + { + tree rec_type = make_node (RECORD_TYPE); +- unsigned HOST_WIDE_INT prec = TREE_INT_CST_LOW (TYPE_RM_SIZE (type)); + tree field_type, field; + +- if (AGGREGATE_TYPE_P (etype)) +- TYPE_REVERSE_STORAGE_ORDER (rec_type) +- = TYPE_REVERSE_STORAGE_ORDER (etype); ++ TYPE_REVERSE_STORAGE_ORDER (rec_type) = ereverse; + +- if (type_unsigned_for_rm (type)) +- field_type = make_unsigned_type (prec); ++ if (c < 0) ++ { ++ const unsigned HOST_WIDE_INT prec ++ = TREE_INT_CST_LOW (TYPE_RM_SIZE (type)); ++ if (type_unsigned_for_rm (type)) ++ field_type = make_unsigned_type (prec); ++ else ++ field_type = make_signed_type (prec); ++ SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (type)); ++ } + else +- field_type = make_signed_type (prec); +- SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (type)); ++ field_type = type; + + field = create_field_decl (get_identifier ("OBJ"), field_type, rec_type, +- NULL_TREE, bitsize_zero_node, 1, 0); ++ NULL_TREE, bitsize_zero_node, c < 0, 0); + + finish_record_type (rec_type, field, 1, false); + +@@ -5114,31 +5135,35 @@ + + The same considerations as above apply if the target type is an aggregate + type with reverse storage order and we also proceed similarly. */ +- else if (INTEGRAL_TYPE_P (etype) +- && TYPE_RM_SIZE (etype) +- && (tree_int_cst_compare (TYPE_RM_SIZE (etype), +- TYPE_SIZE (etype)) < 0 +- || (AGGREGATE_TYPE_P (type) +- && TYPE_REVERSE_STORAGE_ORDER (type)))) ++ else if ((INTEGRAL_TYPE_P (etype) ++ && TYPE_RM_SIZE (etype) ++ && ((c = tree_int_cst_compare (TYPE_RM_SIZE (etype), ++ TYPE_SIZE (etype))) < 0 ++ || reverse)) ++ || (SCALAR_FLOAT_TYPE_P (etype) && reverse)) + { + tree rec_type = make_node (RECORD_TYPE); +- unsigned HOST_WIDE_INT prec = TREE_INT_CST_LOW (TYPE_RM_SIZE (etype)); + vec *v; + vec_alloc (v, 1); + tree field_type, field; + +- if (AGGREGATE_TYPE_P (type)) +- TYPE_REVERSE_STORAGE_ORDER (rec_type) +- = TYPE_REVERSE_STORAGE_ORDER (type); ++ TYPE_REVERSE_STORAGE_ORDER (rec_type) = reverse; + +- if (type_unsigned_for_rm (etype)) +- field_type = make_unsigned_type (prec); ++ if (c < 0) ++ { ++ const unsigned HOST_WIDE_INT prec ++ = TREE_INT_CST_LOW (TYPE_RM_SIZE (etype)); ++ if (type_unsigned_for_rm (etype)) ++ field_type = make_unsigned_type (prec); ++ else ++ field_type = make_signed_type (prec); ++ SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (etype)); ++ } + else +- field_type = make_signed_type (prec); +- SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (etype)); ++ field_type = etype; + + field = create_field_decl (get_identifier ("OBJ"), field_type, rec_type, +- NULL_TREE, bitsize_zero_node, 1, 0); ++ NULL_TREE, bitsize_zero_node, c < 0, 0); + + finish_record_type (rec_type, field, 1, false); + +@@ -5237,8 +5262,8 @@ + if the input is also an integral type and both are unsigned or both are + signed and have the same precision. */ + if (!notrunc_p ++ && !biased + && INTEGRAL_TYPE_P (type) +- && !(code == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (type)) + && TYPE_RM_SIZE (type) + && tree_int_cst_compare (TYPE_RM_SIZE (type), TYPE_SIZE (type)) < 0 + && !(INTEGRAL_TYPE_P (etype) +@@ -6113,8 +6138,7 @@ + && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE) + TREE_TYPE (*node) + = build_pointer_type +- (build_type_variant (TREE_TYPE (type), +- TYPE_READONLY (TREE_TYPE (type)), 1)); ++ (change_qualified_type (TREE_TYPE (type), TYPE_QUAL_VOLATILE)); + else + { + warning (OPT_Wattributes, "%qs attribute ignored", +Index: gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-7-branch) +@@ -2756,9 +2756,9 @@ + # ada/types.h does not conflict with a same-named system header (VxWorks + # has a header). + +-OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) $(GNATLIBCFLAGS_FOR_C) -E -C \ ++OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -E -C \ + -DTARGET=\"$(target)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i +-OSCONS_EXTRACT=$(OSCONS_CC) -S s-oscons-tmplt.i ++OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -S s-oscons-tmplt.i + + # Note: if you need to build with a non-GNU compiler, you could adapt the + # following definitions (written for VMS DEC-C) +Index: gcc/ada/gcc-interface/decl.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/decl.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/gcc-interface/decl.c (.../branches/gcc-7-branch) +@@ -206,7 +206,6 @@ + static tree gnat_to_gnu_subprog_type (Entity_Id, bool, bool, tree *); + static tree gnat_to_gnu_field (Entity_Id, tree, int, bool, bool); + static tree gnu_ext_name_for_subprog (Entity_Id, tree); +-static tree change_qualified_type (tree, int); + static void set_nonaliased_component_on_array_type (tree); + static void set_reverse_storage_order_on_array_type (tree); + static bool same_discriminant_p (Entity_Id, Entity_Id); +@@ -592,17 +591,22 @@ + /* If we have a constant that we are not defining, get the expression it + was defined to represent. This is necessary to avoid generating dumb + elaboration code in simple cases, but we may throw it away later if it +- is not a constant. But do not retrieve it if it is an allocator since +- the designated type might still be dummy at this point. */ ++ is not a constant. But do not do it for dispatch tables because they ++ are only referenced indirectly and we need to have a consistent view ++ of the exported and of the imported declarations of the tables from ++ external units for them to be properly merged in LTO mode. Moreover ++ simply do not retrieve the expression it if it is an allocator since ++ the designated type might still be dummy at this point. Note that we ++ invoke gnat_to_gnu_external and not gnat_to_gnu because the expression ++ may contain N_Expression_With_Actions nodes and thus declarations of ++ objects from other units that we need to discard. */ + if (!definition + && !No_Initialization (Declaration_Node (gnat_entity)) +- && Present (Expression (Declaration_Node (gnat_entity))) +- && Nkind (Expression (Declaration_Node (gnat_entity))) +- != N_Allocator) +- /* The expression may contain N_Expression_With_Actions nodes and +- thus object declarations from other units. Discard them. */ +- gnu_expr +- = gnat_to_gnu_external (Expression (Declaration_Node (gnat_entity))); ++ && !Is_Dispatch_Table_Entity (gnat_entity) ++ && Present (gnat_temp = Expression (Declaration_Node (gnat_entity))) ++ && Nkind (gnat_temp) != N_Allocator ++ && (!type_annotate_only || Compile_Time_Known_Value (gnat_temp))) ++ gnu_expr = gnat_to_gnu_external (gnat_temp); + + /* ... fall through ... */ + +@@ -968,8 +972,7 @@ + function call is a constant object. Therefore, it can be the + inner object of a constant renaming and the renaming must be + fully instantiated, i.e. it cannot be a reference to (part of) +- an existing object. And treat other rvalues (addresses, null +- expressions, constructors and literals) the same way. */ ++ an existing object. And treat other rvalues the same way. */ + tree inner = gnu_expr; + while (handled_component_p (inner) || CONVERT_EXPR_P (inner)) + inner = TREE_OPERAND (inner, 0); +@@ -980,11 +983,11 @@ + inner = TREE_OPERAND (inner, 1); + if ((TREE_CODE (inner) == CALL_EXPR + && !call_is_atomic_load (inner)) +- || TREE_CODE (inner) == ADDR_EXPR +- || TREE_CODE (inner) == NULL_EXPR +- || TREE_CODE (inner) == PLUS_EXPR + || TREE_CODE (inner) == CONSTRUCTOR + || CONSTANT_CLASS_P (inner) ++ || COMPARISON_CLASS_P (inner) ++ || BINARY_CLASS_P (inner) ++ || EXPRESSION_CLASS_P (inner) + /* We need to detect the case where a temporary is created to + hold the return value, since we cannot safely rename it at + top level as it lives only in the elaboration routine. */ +@@ -1006,7 +1009,7 @@ + underlying object lives only in the elaboration routine. */ + || (TREE_CODE (inner) == INDIRECT_REF + && (inner +- = remove_conversions (TREE_OPERAND (inner, 0), true)) ++ = remove_conversions (TREE_OPERAND (inner, 0), true)) + && TREE_CODE (inner) == VAR_DECL + && DECL_RETURN_VALUE_P (inner))) + ; +@@ -2063,11 +2066,16 @@ + { + gnu_fat_type = TYPE_MAIN_VARIANT (TYPE_POINTER_TO (gnu_type)); + TYPE_NAME (gnu_fat_type) = NULL_TREE; ++ gnu_ptr_template = ++ TREE_TYPE (DECL_CHAIN (TYPE_FIELDS (gnu_fat_type))); ++ gnu_template_type = TREE_TYPE (gnu_ptr_template); ++ + /* Save the contents of the dummy type for update_pointer_to. */ + TYPE_POINTER_TO (gnu_type) = copy_type (gnu_fat_type); +- gnu_ptr_template = +- TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (gnu_fat_type))); +- gnu_template_type = TREE_TYPE (gnu_ptr_template); ++ TYPE_FIELDS (TYPE_POINTER_TO (gnu_type)) ++ = copy_node (TYPE_FIELDS (gnu_fat_type)); ++ DECL_CHAIN (TYPE_FIELDS (TYPE_POINTER_TO (gnu_type))) ++ = copy_node (DECL_CHAIN (TYPE_FIELDS (gnu_fat_type))); + } + else + { +@@ -2088,29 +2096,39 @@ + + /* Build the fat pointer type. Use a "void *" object instead of + a pointer to the array type since we don't have the array type +- yet (it will reference the fat pointer via the bounds). */ +- tem +- = create_field_decl (get_identifier ("P_ARRAY"), ptr_type_node, +- gnu_fat_type, NULL_TREE, NULL_TREE, 0, 0); +- DECL_CHAIN (tem) +- = create_field_decl (get_identifier ("P_BOUNDS"), gnu_ptr_template, +- gnu_fat_type, NULL_TREE, NULL_TREE, 0, 0); ++ yet (it will reference the fat pointer via the bounds). Note ++ that we reuse the existing fields of a dummy type because for: + ++ type Arr is array (Positive range <>) of Element_Type; ++ type Array_Ref is access Arr; ++ Var : Array_Ref := Null; ++ ++ in a declarative part, Arr will be frozen only after Var, which ++ means that the fields used in the CONSTRUCTOR built for Null are ++ those of the dummy type, which in turn means that COMPONENT_REFs ++ of Var may be built with these fields. Now if COMPONENT_REFs of ++ Var are also built later with the fields of the final type, the ++ aliasing machinery may consider that the accesses are distinct ++ if the FIELD_DECLs are distinct as objects. */ + if (COMPLETE_TYPE_P (gnu_fat_type)) + { +- /* We are going to lay it out again so reset the alias set. */ +- alias_set_type alias_set = TYPE_ALIAS_SET (gnu_fat_type); +- TYPE_ALIAS_SET (gnu_fat_type) = -1; +- finish_fat_pointer_type (gnu_fat_type, tem); +- TYPE_ALIAS_SET (gnu_fat_type) = alias_set; ++ tem = TYPE_FIELDS (gnu_fat_type); ++ TREE_TYPE (tem) = ptr_type_node; ++ TREE_TYPE (DECL_CHAIN (tem)) = gnu_ptr_template; ++ TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (gnu_fat_type)) = 0; + for (t = gnu_fat_type; t; t = TYPE_NEXT_VARIANT (t)) +- { +- TYPE_FIELDS (t) = tem; +- SET_TYPE_UNCONSTRAINED_ARRAY (t, gnu_type); +- } ++ SET_TYPE_UNCONSTRAINED_ARRAY (t, gnu_type); + } + else + { ++ tem ++ = create_field_decl (get_identifier ("P_ARRAY"), ++ ptr_type_node, gnu_fat_type, ++ NULL_TREE, NULL_TREE, 0, 0); ++ DECL_CHAIN (tem) ++ = create_field_decl (get_identifier ("P_BOUNDS"), ++ gnu_ptr_template, gnu_fat_type, ++ NULL_TREE, NULL_TREE, 0, 0); + finish_fat_pointer_type (gnu_fat_type, tem); + SET_TYPE_UNCONSTRAINED_ARRAY (gnu_fat_type, gnu_type); + } +@@ -3389,20 +3407,6 @@ + break; + } + +- /* If this is a record subtype associated with a dispatch table, +- strip the suffix. This is necessary to make sure 2 different +- subtypes associated with the imported and exported views of a +- dispatch table are properly merged in LTO mode. */ +- if (Is_Dispatch_Table_Entity (gnat_entity)) +- { +- char *p; +- Get_Encoded_Name (gnat_entity); +- p = strchr (Name_Buffer, '_'); +- gcc_assert (p); +- strcpy (p+2, "dtS"); +- gnu_entity_name = get_identifier (Name_Buffer); +- } +- + /* When the subtype has discriminants and these discriminants affect + the initial shape it has inherited, factor them in. But for an + Unchecked_Union (it must be an Itype), just return the type. +@@ -4681,7 +4685,7 @@ + /* If this is not an unconstrained array type, set some flags. */ + if (TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE) + { +- /* Tell the middle-end that objects of tagged types are guaranteed to ++ /* Record the property that objects of tagged types are guaranteed to + be properly aligned. This is necessary because conversions to the + class-wide type are translated into conversions to the root type, + which can be less aligned than some of its derived types. */ +@@ -5272,17 +5276,6 @@ + Is_Bit_Packed_Array (gnat_array) ? TYPE_DECL : VAR_DECL, + true, Has_Component_Size_Clause (gnat_array)); + +- /* If the array has aliased components and the component size can be zero, +- force at least unit size to ensure that the components have distinct +- addresses. */ +- if (!gnu_comp_size +- && Has_Aliased_Components (gnat_array) +- && (integer_zerop (TYPE_SIZE (gnu_type)) +- || (TREE_CODE (gnu_type) == ARRAY_TYPE +- && !TREE_CONSTANT (TYPE_SIZE (gnu_type))))) +- gnu_comp_size +- = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node); +- + /* If the component type is a RECORD_TYPE that has a self-referential size, + then use the maximum size for the component size. */ + if (!gnu_comp_size +@@ -5290,6 +5283,13 @@ + && CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_type))) + gnu_comp_size = max_size (TYPE_SIZE (gnu_type), true); + ++ /* If the array has aliased components and the component size is zero, force ++ the unit size to ensure that the components have distinct addresses. */ ++ if (!gnu_comp_size ++ && Has_Aliased_Components (gnat_array) ++ && integer_zerop (TYPE_SIZE (gnu_type))) ++ gnu_comp_size = bitsize_unit_node; ++ + /* Honor the component size. This is not needed for bit-packed arrays. */ + if (gnu_comp_size && !Is_Bit_Packed_Array (gnat_array)) + { +@@ -5312,6 +5312,30 @@ + gnat_array); + } + ++ /* This is a very special case where the array has aliased components and the ++ component size might be zero at run time. As explained above, we force at ++ least the unit size but we don't want to build a distinct padding type for ++ each invocation (they are not canonicalized if they have variable size) so ++ we cache this special padding type as TYPE_PADDING_FOR_COMPONENT. */ ++ else if (Has_Aliased_Components (gnat_array) ++ && TREE_CODE (gnu_type) == ARRAY_TYPE ++ && !TREE_CONSTANT (TYPE_SIZE (gnu_type))) ++ { ++ if (TYPE_PADDING_FOR_COMPONENT (gnu_type)) ++ gnu_type = TYPE_PADDING_FOR_COMPONENT (gnu_type); ++ else ++ { ++ gnu_comp_size ++ = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node); ++ TYPE_PADDING_FOR_COMPONENT (gnu_type) ++ = maybe_pad_type (gnu_type, gnu_comp_size, 0, gnat_array, ++ true, false, definition, true); ++ gnu_type = TYPE_PADDING_FOR_COMPONENT (gnu_type); ++ create_type_decl (TYPE_NAME (gnu_type), gnu_type, true, debug_info_p, ++ gnat_array); ++ } ++ } ++ + /* If the component type is a padded type made for a non-bit-packed array + of scalars with reverse storage order, we need to propagate the reverse + storage order to the padding type since it is the innermost enclosing +@@ -6276,19 +6300,6 @@ + return gnu_ext_name; + } + +-/* Like build_qualified_type, but TYPE_QUALS is added to the existing +- qualifiers on TYPE. */ +- +-static tree +-change_qualified_type (tree type, int type_quals) +-{ +- /* Qualifiers must be put on the associated array type. */ +- if (TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE) +- return type; +- +- return build_qualified_type (type, TYPE_QUALS (type) | type_quals); +-} +- + /* Set TYPE_NONALIASED_COMPONENT on an array type built by means of + build_nonshared_array_type. */ + +@@ -6864,65 +6875,44 @@ + the value passed against the list of choices. */ + + static tree +-choices_to_gnu (tree operand, Node_Id choices) ++choices_to_gnu (tree gnu_operand, Node_Id gnat_choices) + { +- Node_Id choice; +- Node_Id gnat_temp; +- tree result = boolean_false_node; +- tree this_test, low = 0, high = 0, single = 0; ++ tree gnu_result = boolean_false_node, gnu_type; + +- for (choice = First (choices); Present (choice); choice = Next (choice)) ++ gnu_operand = maybe_character_value (gnu_operand); ++ gnu_type = TREE_TYPE (gnu_operand); ++ ++ for (Node_Id gnat_choice = First (gnat_choices); ++ Present (gnat_choice); ++ gnat_choice = Next (gnat_choice)) + { +- switch (Nkind (choice)) ++ tree gnu_low = NULL_TREE, gnu_high = NULL_TREE; ++ tree gnu_test; ++ ++ switch (Nkind (gnat_choice)) + { + case N_Range: +- low = gnat_to_gnu (Low_Bound (choice)); +- high = gnat_to_gnu (High_Bound (choice)); +- +- this_test +- = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, +- build_binary_op (GE_EXPR, boolean_type_node, +- operand, low, true), +- build_binary_op (LE_EXPR, boolean_type_node, +- operand, high, true), +- true); +- ++ gnu_low = gnat_to_gnu (Low_Bound (gnat_choice)); ++ gnu_high = gnat_to_gnu (High_Bound (gnat_choice)); + break; + + case N_Subtype_Indication: +- gnat_temp = Range_Expression (Constraint (choice)); +- low = gnat_to_gnu (Low_Bound (gnat_temp)); +- high = gnat_to_gnu (High_Bound (gnat_temp)); +- +- this_test +- = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, +- build_binary_op (GE_EXPR, boolean_type_node, +- operand, low, true), +- build_binary_op (LE_EXPR, boolean_type_node, +- operand, high, true), +- true); ++ gnu_low = gnat_to_gnu (Low_Bound (Range_Expression ++ (Constraint (gnat_choice)))); ++ gnu_high = gnat_to_gnu (High_Bound (Range_Expression ++ (Constraint (gnat_choice)))); + break; + + case N_Identifier: + case N_Expanded_Name: +- /* This represents either a subtype range, an enumeration +- literal, or a constant Ekind says which. If an enumeration +- literal or constant, fall through to the next case. */ +- if (Ekind (Entity (choice)) != E_Enumeration_Literal +- && Ekind (Entity (choice)) != E_Constant) ++ /* This represents either a subtype range or a static value of ++ some kind; Ekind says which. */ ++ if (Is_Type (Entity (gnat_choice))) + { +- tree type = gnat_to_gnu_type (Entity (choice)); ++ tree gnu_type = get_unpadded_type (Entity (gnat_choice)); + +- low = TYPE_MIN_VALUE (type); +- high = TYPE_MAX_VALUE (type); +- +- this_test +- = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, +- build_binary_op (GE_EXPR, boolean_type_node, +- operand, low, true), +- build_binary_op (LE_EXPR, boolean_type_node, +- operand, high, true), +- true); ++ gnu_low = TYPE_MIN_VALUE (gnu_type); ++ gnu_high = TYPE_MAX_VALUE (gnu_type); + break; + } + +@@ -6930,13 +6920,10 @@ + + case N_Character_Literal: + case N_Integer_Literal: +- single = gnat_to_gnu (choice); +- this_test = build_binary_op (EQ_EXPR, boolean_type_node, operand, +- single, true); ++ gnu_low = gnat_to_gnu (gnat_choice); + break; + + case N_Others_Choice: +- this_test = boolean_true_node; + break; + + default: +@@ -6943,14 +6930,39 @@ + gcc_unreachable (); + } + +- if (result == boolean_false_node) +- result = this_test; ++ /* Everything should be folded into constants at this point. */ ++ gcc_assert (!gnu_low || TREE_CODE (gnu_low) == INTEGER_CST); ++ gcc_assert (!gnu_high || TREE_CODE (gnu_high) == INTEGER_CST); ++ ++ if (gnu_low && TREE_TYPE (gnu_low) != gnu_type) ++ gnu_low = convert (gnu_type, gnu_low); ++ if (gnu_high && TREE_TYPE (gnu_high) != gnu_type) ++ gnu_high = convert (gnu_type, gnu_high); ++ ++ if (gnu_low && gnu_high) ++ gnu_test ++ = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, ++ build_binary_op (GE_EXPR, boolean_type_node, ++ gnu_operand, gnu_low, true), ++ build_binary_op (LE_EXPR, boolean_type_node, ++ gnu_operand, gnu_high, true), ++ true); ++ else if (gnu_low) ++ gnu_test ++ = build_binary_op (EQ_EXPR, boolean_type_node, gnu_operand, gnu_low, ++ true); + else +- result = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, result, +- this_test, true); ++ gnu_test = boolean_true_node; ++ ++ if (gnu_result == boolean_false_node) ++ gnu_result = gnu_test; ++ else ++ gnu_result ++ = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_result, ++ gnu_test, true); + } + +- return result; ++ return gnu_result; + } + + /* Adjust PACKED setting as passed to gnat_to_gnu_field for a field of +Index: gcc/ada/gcc-interface/gigi.h +=================================================================== +--- a/src/gcc/ada/gcc-interface/gigi.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/gcc-interface/gigi.h (.../branches/gcc-7-branch) +@@ -1074,7 +1074,7 @@ + static inline unsigned HOST_WIDE_INT + ceil_pow2 (unsigned HOST_WIDE_INT x) + { +- return (unsigned HOST_WIDE_INT) 1 << (floor_log2 (x - 1) + 1); ++ return (unsigned HOST_WIDE_INT) 1 << ceil_log2 (x); + } + + /* Return true if EXP, a CALL_EXPR, is an atomic load. */ +@@ -1171,3 +1171,16 @@ + + return type; + } ++ ++/* Like build_qualified_type, but TYPE_QUALS is added to the existing ++ qualifiers on TYPE. */ ++ ++static inline tree ++change_qualified_type (tree type, int type_quals) ++{ ++ /* Qualifiers must be put on the associated array type. */ ++ if (TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE) ++ return type; ++ ++ return build_qualified_type (type, TYPE_QUALS (type) | type_quals); ++} +Index: gcc/ada/gcc-interface/ada-tree.h +=================================================================== +--- a/src/gcc/ada/gcc-interface/ada-tree.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/gcc-interface/ada-tree.h (.../branches/gcc-7-branch) +@@ -6,7 +6,7 @@ + * * + * C Header File * + * * +- * Copyright (C) 1992-2016, Free Software Foundation, Inc. * ++ * Copyright (C) 1992-2018, Free Software Foundation, Inc. * + * * + * GNAT is free software; you can redistribute it and/or modify it under * + * terms of the GNU General Public License as published by the Free Soft- * +@@ -83,6 +83,12 @@ + ((TREE_CODE (NODE) == INTEGER_TYPE || TREE_CODE (NODE) == ARRAY_TYPE) \ + && TYPE_PACKED_ARRAY_TYPE_P (NODE)) + ++/* For FUNCTION_TYPEs, nonzero if the function returns by direct reference, ++ i.e. the callee returns a pointer to a memory location it has allocated ++ and the caller only needs to dereference the pointer. */ ++#define TYPE_RETURN_BY_DIRECT_REF_P(NODE) \ ++ TYPE_LANG_FLAG_0 (FUNCTION_TYPE_CHECK (NODE)) ++ + /* For INTEGER_TYPE, nonzero if this is a modular type with a modulus that + is not equal to two to the power of its mode's size. */ + #define TYPE_MODULAR_P(NODE) TYPE_LANG_FLAG_1 (INTEGER_TYPE_CHECK (NODE)) +@@ -152,12 +158,6 @@ + #define TYPE_CONVENTION_FORTRAN_P(NODE) \ + TYPE_LANG_FLAG_4 (ARRAY_TYPE_CHECK (NODE)) + +-/* For FUNCTION_TYPEs, nonzero if the function returns by direct reference, +- i.e. the callee returns a pointer to a memory location it has allocated +- and the caller only needs to dereference the pointer. */ +-#define TYPE_RETURN_BY_DIRECT_REF_P(NODE) \ +- TYPE_LANG_FLAG_4 (FUNCTION_TYPE_CHECK (NODE)) +- + /* For RECORD_TYPE, UNION_TYPE and ENUMERAL_TYPE, nonzero if this is a dummy + type, made to correspond to a private or incomplete type. */ + #define TYPE_DUMMY_P(NODE) \ +@@ -186,6 +186,9 @@ + /* True for a dummy type if TYPE appears in a profile. */ + #define TYPE_DUMMY_IN_PROFILE_P(NODE) TYPE_LANG_FLAG_6 (NODE) + ++/* True if objects of this type are guaranteed to be properly aligned. */ ++#define TYPE_ALIGN_OK(NODE) TYPE_LANG_FLAG_7 (NODE) ++ + /* True for types that implement a packed array and for original packed array + types. */ + #define TYPE_IMPL_PACKED_ARRAY_P(NODE) \ +@@ -199,9 +202,6 @@ + alignment value the type ought to have. */ + #define TYPE_MAX_ALIGN(NODE) (TYPE_PRECISION (RECORD_OR_UNION_CHECK (NODE))) + +-/* True if objects of tagged types are guaranteed to be properly aligned. */ +-#define TYPE_ALIGN_OK(NODE) TYPE_LANG_FLAG_7 (NODE) +- + /* For an UNCONSTRAINED_ARRAY_TYPE, this is the record containing both the + template and the object. + +@@ -232,6 +232,11 @@ + refer to the routine gnat_to_gnu_entity. */ + #define TYPE_CI_CO_LIST(NODE) TYPE_LANG_SLOT_1 (FUNCTION_TYPE_CHECK (NODE)) + ++/* For an ARRAY_TYPE with variable size, this is the padding type built for ++ the array type when it is itself the component type of another array. */ ++#define TYPE_PADDING_FOR_COMPONENT(NODE) \ ++ TYPE_LANG_SLOT_1 (ARRAY_TYPE_CHECK (NODE)) ++ + /* For a VECTOR_TYPE, this is the representative array type. */ + #define TYPE_REPRESENTATIVE_ARRAY(NODE) \ + TYPE_LANG_SLOT_1 (VECTOR_TYPE_CHECK (NODE)) +Index: gcc/ada/gcc-interface/trans.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/trans.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/gcc-interface/trans.c (.../branches/gcc-7-branch) +@@ -198,8 +198,6 @@ + tree high_bound; + vec *checks; + bool artificial; +- bool has_checks; +- bool warned_aggressive_loop_optimizations; + }; + + typedef struct loop_info_d *loop_info; +@@ -658,10 +656,6 @@ + /* Now translate the compilation unit proper. */ + Compilation_Unit_to_gnu (gnat_root); + +- /* Disable -Waggressive-loop-optimizations since we implement our own +- version of the warning. */ +- warn_aggressive_loop_optimizations = 0; +- + /* Then process the N_Validate_Unchecked_Conversion nodes. We do this at + the very end to avoid having to second-guess the front-end when we run + into dummy nodes during the regular processing. */ +@@ -1266,32 +1260,18 @@ + { + Node_Id gnat_expr = Expression (gnat_temp); + tree gnu_expr = gnat_to_gnu (gnat_expr); +- int use_address; +- machine_mode mode; + tree asm_constraint = NULL_TREE; + #ifdef ASM_COMMENT_START + char *comment; + #endif ++ gnu_expr = maybe_unconstrained_array (gnu_expr); ++ gnat_mark_addressable (gnu_expr); + +- if (TREE_CODE (gnu_expr) == UNCONSTRAINED_ARRAY_REF) +- gnu_expr = TREE_OPERAND (gnu_expr, 0); +- +- /* Use the value only if it fits into a normal register, +- otherwise use the address. */ +- mode = TYPE_MODE (TREE_TYPE (gnu_expr)); +- use_address = ((GET_MODE_CLASS (mode) != MODE_INT +- && GET_MODE_CLASS (mode) != MODE_PARTIAL_INT) +- || GET_MODE_SIZE (mode) > UNITS_PER_WORD); +- +- if (use_address) +- gnu_expr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_expr); +- + #ifdef ASM_COMMENT_START + comment = concat (ASM_COMMENT_START, + " inspection point: ", + Get_Name_String (Chars (gnat_expr)), +- use_address ? " address" : "", +- " is in %0", ++ " is at %0", + NULL); + asm_constraint = build_string (strlen (comment), comment); + free (comment); +@@ -1301,8 +1281,8 @@ + NULL_TREE, + tree_cons + (build_tree_list (NULL_TREE, +- build_string (1, "g")), +- gnu_expr, NULL_TREE), ++ build_string (1, "m")), ++ gnu_expr, NULL_TREE), + NULL_TREE, NULL_TREE); + ASM_VOLATILE_P (gnu_expr) = 1; + set_expr_location_from_node (gnu_expr, gnat_node); +@@ -4059,6 +4039,8 @@ + case N_Identifier: + case N_Expanded_Name: + gnat_entity = Entity (gnat_node); ++ if (!Is_Object (gnat_entity)) ++ break; + return Is_Volatile_Full_Access (gnat_entity) + || Is_Volatile_Full_Access (Etype (gnat_entity)); + +@@ -4324,12 +4306,15 @@ + because we need to preserve the return value before copying back the + parameters. + +- 2. There is no target and the call is made for neither an object nor a ++ 2. There is no target and the call is made for neither an object, nor a + renaming declaration, nor a return statement, nor an allocator, and + the return type has variable size because in this case the gimplifier +- cannot create the temporary, or more generally is simply an aggregate +- type, because the gimplifier would then create the temporary in the +- outermost scope instead of locally. ++ cannot create the temporary, or more generally is an aggregate type, ++ because the gimplifier would create the temporary in the outermost ++ scope instead of locally. But there is an exception for an allocator ++ of an unconstrained record type with default discriminant because we ++ allocate the actual size in this case, unlike the other 3 cases, so ++ we need a temporary to fetch the discriminant and we create it here. + + 3. There is a target and it is a slice or an array with fixed size, + and the return type has variable size, because the gimplifier +@@ -4348,8 +4333,9 @@ + && Nkind (Parent (gnat_node)) != N_Object_Declaration + && Nkind (Parent (gnat_node)) != N_Object_Renaming_Declaration + && Nkind (Parent (gnat_node)) != N_Simple_Return_Statement +- && !(Nkind (Parent (gnat_node)) == N_Qualified_Expression +- && Nkind (Parent (Parent (gnat_node))) == N_Allocator) ++ && (!(Nkind (Parent (gnat_node)) == N_Qualified_Expression ++ && Nkind (Parent (Parent (gnat_node))) == N_Allocator) ++ || type_is_padding_self_referential (gnu_result_type)) + && AGGREGATE_TYPE_P (gnu_result_type) + && !TYPE_IS_FAT_POINTER_P (gnu_result_type)) + || (gnu_target +@@ -5652,7 +5638,6 @@ + rci->inserted_cond + = build1 (SAVE_EXPR, boolean_type_node, boolean_true_node); + vec_safe_push (loop->checks, rci); +- loop->has_checks = true; + gnu_cond = build_noreturn_cond (gnat_to_gnu (gnat_cond)); + if (flag_unswitch_loops) + gnu_cond = build_binary_op (TRUTH_ANDIF_EXPR, +@@ -5665,14 +5650,6 @@ + gnu_cond, + rci->inserted_cond); + } +- +- /* Or else, if aggressive loop optimizations are enabled, we just +- record that there are checks applied to iteration variables. */ +- else if (optimize +- && flag_aggressive_loop_optimizations +- && inside_loop_p () +- && (loop = find_loop_for (gnu_index))) +- loop->has_checks = true; + } + break; + +@@ -6288,45 +6265,9 @@ + gcc_assert (TREE_CODE (gnu_type) == ARRAY_TYPE); + gnat_temp = gnat_expr_array[i]; + gnu_expr = maybe_character_value (gnat_to_gnu (gnat_temp)); +- struct loop_info_d *loop; + + gnu_result + = build_binary_op (ARRAY_REF, NULL_TREE, gnu_result, gnu_expr); +- +- /* Array accesses are bound-checked so they cannot trap, but this +- is valid only if they are not hoisted ahead of the check. We +- need to mark them as no-trap to get decent loop optimizations +- in the presence of -fnon-call-exceptions, so we do it when we +- know that the original expression had no side-effects. */ +- if (TREE_CODE (gnu_result) == ARRAY_REF +- && !(Nkind (gnat_temp) == N_Identifier +- && Ekind (Entity (gnat_temp)) == E_Constant)) +- TREE_THIS_NOTRAP (gnu_result) = 1; +- +- /* If aggressive loop optimizations are enabled, we warn for loops +- overrunning a simple array of size 1 not at the end of a record. +- This is aimed to catch misuses of the trailing array idiom. */ +- if (optimize +- && flag_aggressive_loop_optimizations +- && inside_loop_p () +- && TREE_CODE (TREE_TYPE (gnu_type)) != ARRAY_TYPE +- && TREE_CODE (gnu_array_object) != ARRAY_REF +- && tree_int_cst_equal (TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_type)), +- TYPE_MAX_VALUE (TYPE_DOMAIN (gnu_type))) +- && !array_at_struct_end_p (gnu_result) +- && (loop = find_loop_for (gnu_expr)) +- && !loop->artificial +- && !loop->has_checks +- && tree_int_cst_equal (TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_type)), +- loop->low_bound) +- && can_be_lower_p (loop->low_bound, loop->high_bound) +- && !loop->warned_aggressive_loop_optimizations +- && warning (OPT_Waggressive_loop_optimizations, +- "out-of-bounds access may be optimized away")) +- { +- inform (EXPR_LOCATION (loop->stmt), "containing loop"); +- loop->warned_aggressive_loop_optimizations = true; +- } + } + + gnu_result_type = get_unpadded_type (Etype (gnat_node)); +@@ -9272,7 +9213,7 @@ + ? tree_int_cst_lt (gnu_out_ub, gnu_in_ub) + : (FLOAT_TYPE_P (gnu_base_type) + ? real_less (&TREE_REAL_CST (gnu_out_ub), +- &TREE_REAL_CST (gnu_in_lb)) ++ &TREE_REAL_CST (gnu_in_ub)) + : 1)) + gnu_cond + = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_cond, +Index: gcc/ada/gcc-interface/misc.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/misc.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ada/gcc-interface/misc.c (.../branches/gcc-7-branch) +@@ -262,6 +262,9 @@ + /* No psABI change warnings for Ada. */ + warn_psabi = 0; + ++ /* No string overflow warnings for Ada. */ ++ warn_stringop_overflow = 0; ++ + /* No caret by default for Ada. */ + if (!global_options_set.x_flag_diagnostics_show_caret) + global_dc->show_caret = false; +@@ -393,7 +396,7 @@ + using_eh_for_cleanups (); + + /* Turn on -fexceptions, -fnon-call-exceptions and -fdelete-dead-exceptions. +- The first one triggers the generation of the necessary exception tables. ++ The first one activates the support for exceptions in the compiler. + The second one is useful for two reasons: 1/ we map some asynchronous + signals like SEGV to exceptions, so we need to ensure that the insns + which can lead to such signals are correctly attached to the exception +@@ -403,10 +406,26 @@ + for such calls to actually raise in Ada. + The third one is an optimization that makes it possible to delete dead + instructions that may throw exceptions, most notably loads and stores, +- as permitted in Ada. */ ++ as permitted in Ada. ++ Turn off -faggressive-loop-optimizations because it may optimize away ++ out-of-bound array accesses that we want to be able to catch. ++ If checks are disabled, we use the same settings as the C++ compiler, ++ except for the runtime on platforms where S'Machine_Overflow is true ++ because the runtime depends on FP (hardware) checks being properly ++ handled despite being compiled in -gnatp mode. */ + flag_exceptions = 1; +- flag_non_call_exceptions = 1; + flag_delete_dead_exceptions = 1; ++ if (Suppress_Checks) ++ { ++ if (!global_options_set.x_flag_non_call_exceptions) ++ flag_non_call_exceptions = Machine_Overflows_On_Target && GNAT_Mode; ++ } ++ else ++ { ++ flag_non_call_exceptions = 1; ++ flag_aggressive_loop_optimizations = 0; ++ warn_aggressive_loop_optimizations = 0; ++ } + + init_eh (); + } +Index: gcc/dse.c +=================================================================== +--- a/src/gcc/dse.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/dse.c (.../branches/gcc-7-branch) +@@ -1342,6 +1342,9 @@ + else + width = GET_MODE_SIZE (GET_MODE (mem)); + ++ if (width == 0) ++ return 0; ++ + if (group_id >= 0) + { + /* In the restrictive case where the base is a constant or the +@@ -1447,7 +1450,12 @@ + && offset >= s_info->begin + && offset + width <= s_info->end + && all_positions_needed_p (s_info, offset - s_info->begin, +- width)) ++ width) ++ /* We can only remove the later store if the earlier aliases ++ at least all accesses the later one. */ ++ && (MEM_ALIAS_SET (mem) == MEM_ALIAS_SET (s_info->mem) ++ || alias_set_subset_of (MEM_ALIAS_SET (mem), ++ MEM_ALIAS_SET (s_info->mem)))) + { + if (GET_MODE (mem) == BLKmode) + { +Index: gcc/gimple-ssa-strength-reduction.c +=================================================================== +--- a/src/gcc/gimple-ssa-strength-reduction.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/gimple-ssa-strength-reduction.c (.../branches/gcc-7-branch) +@@ -55,6 +55,7 @@ + #include "params.h" + #include "tree-ssa-address.h" + #include "tree-affine.h" ++#include "tree-eh.h" + #include "builtins.h" + + /* Information about a strength reduction candidate. Each statement +@@ -265,6 +266,10 @@ + of a statement. */ + cand_idx next_interp; + ++ /* Index of the first candidate record in a chain for the same ++ statement. */ ++ cand_idx first_interp; ++ + /* Index of the basis statement S0, if any, in the candidate vector. */ + cand_idx basis; + +@@ -642,6 +647,7 @@ + c->kind = kind; + c->cand_num = cand_vec.length () + 1; + c->next_interp = 0; ++ c->first_interp = c->cand_num; + c->dependent = 0; + c->sibling = 0; + c->def_phi = kind == CAND_MULT ? find_phi_def (base) : 0; +@@ -1212,6 +1218,7 @@ + is the stride and RHS2 is the base expression. */ + c2 = create_mul_ssa_cand (gs, rhs2, rhs1, speed); + c->next_interp = c2->cand_num; ++ c2->first_interp = c->cand_num; + } + else + { +@@ -1449,7 +1456,10 @@ + { + c2 = create_add_ssa_cand (gs, rhs2, rhs1, false, speed); + if (c) +- c->next_interp = c2->cand_num; ++ { ++ c->next_interp = c2->cand_num; ++ c2->first_interp = c->cand_num; ++ } + else + add_cand_for_stmt (gs, c2); + } +@@ -1572,6 +1582,8 @@ + + if (base_cand && base_cand->kind != CAND_PHI) + { ++ slsr_cand_t first_cand = NULL; ++ + while (base_cand) + { + /* Propagate all data from the base candidate except the type, +@@ -1586,6 +1598,12 @@ + base_cand->index, base_cand->stride, + ctype, base_cand->stride_type, + savings); ++ if (!first_cand) ++ first_cand = c; ++ ++ if (first_cand != c) ++ c->first_interp = first_cand->cand_num; ++ + if (base_cand->next_interp) + base_cand = lookup_cand (base_cand->next_interp); + else +@@ -1608,6 +1626,7 @@ + c2 = alloc_cand_and_find_basis (CAND_MULT, gs, rhs1, 0, + integer_one_node, ctype, sizetype, 0); + c->next_interp = c2->cand_num; ++ c2->first_interp = c->cand_num; + } + + /* Add the first (or only) interpretation to the statement-candidate +@@ -1632,6 +1651,8 @@ + + if (base_cand && base_cand->kind != CAND_PHI) + { ++ slsr_cand_t first_cand = NULL; ++ + while (base_cand) + { + /* Propagate all data from the base candidate. */ +@@ -1644,6 +1665,12 @@ + base_cand->index, base_cand->stride, + base_cand->cand_type, + base_cand->stride_type, savings); ++ if (!first_cand) ++ first_cand = c; ++ ++ if (first_cand != c) ++ c->first_interp = first_cand->cand_num; ++ + if (base_cand->next_interp) + base_cand = lookup_cand (base_cand->next_interp); + else +@@ -1668,6 +1695,7 @@ + integer_one_node, TREE_TYPE (rhs1), + sizetype, 0); + c->next_interp = c2->cand_num; ++ c2->first_interp = c->cand_num; + } + + /* Add the first (or only) interpretation to the statement-candidate +@@ -1699,6 +1727,9 @@ + { + gimple *gs = gsi_stmt (gsi); + ++ if (stmt_could_throw_p (gs)) ++ continue; ++ + if (gimple_vuse (gs) && gimple_assign_single_p (gs)) + slsr_process_ref (gs); + +@@ -1835,8 +1866,9 @@ + print_generic_expr (dump_file, c->cand_type, 0); + fprintf (dump_file, "\n basis: %d dependent: %d sibling: %d\n", + c->basis, c->dependent, c->sibling); +- fprintf (dump_file, " next-interp: %d dead-savings: %d\n", +- c->next_interp, c->dead_savings); ++ fprintf (dump_file, ++ " next-interp: %d first-interp: %d dead-savings: %d\n", ++ c->next_interp, c->first_interp, c->dead_savings); + if (c->def_phi) + fprintf (dump_file, " phi: %d\n", c->def_phi); + fputs ("\n", dump_file); +@@ -2094,14 +2126,13 @@ + tree lhs = gimple_assign_lhs (c->cand_stmt); + gassign *copy_stmt = gimple_build_assign (lhs, basis_name); + gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); +- slsr_cand_t cc = c; ++ slsr_cand_t cc = lookup_cand (c->first_interp); + gimple_set_location (copy_stmt, gimple_location (c->cand_stmt)); + gsi_replace (&gsi, copy_stmt, false); +- c->cand_stmt = copy_stmt; +- while (cc->next_interp) ++ while (cc) + { +- cc = lookup_cand (cc->next_interp); + cc->cand_stmt = copy_stmt; ++ cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL; + } + if (dump_file && (dump_flags & TDF_DETAILS)) + stmt_to_print = copy_stmt; +@@ -2128,15 +2159,14 @@ + else + { + gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); +- slsr_cand_t cc = c; ++ slsr_cand_t cc = lookup_cand (c->first_interp); + gimple_assign_set_rhs_with_ops (&gsi, code, + basis_name, bump_tree); + update_stmt (gsi_stmt (gsi)); +- c->cand_stmt = gsi_stmt (gsi); +- while (cc->next_interp) ++ while (cc) + { +- cc = lookup_cand (cc->next_interp); + cc->cand_stmt = gsi_stmt (gsi); ++ cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL; + } + if (dump_file && (dump_flags & TDF_DETAILS)) + stmt_to_print = gsi_stmt (gsi); +@@ -2636,17 +2666,23 @@ + for (i = 0; i < gimple_phi_num_args (phi); i++) + { + tree arg = gimple_phi_arg_def (phi, i); ++ gimple *arg_def = SSA_NAME_DEF_STMT (arg); + +- if (!operand_equal_p (arg, phi_cand->base_expr, 0)) ++ if (gimple_code (arg_def) == GIMPLE_PHI) ++ record_phi_increments (basis, arg_def); ++ else + { +- gimple *arg_def = SSA_NAME_DEF_STMT (arg); ++ widest_int diff; + +- if (gimple_code (arg_def) == GIMPLE_PHI) +- record_phi_increments (basis, arg_def); ++ if (operand_equal_p (arg, phi_cand->base_expr, 0)) ++ { ++ diff = -basis->index; ++ record_increment (phi_cand, diff, PHI_ADJUST); ++ } + else + { + slsr_cand_t arg_cand = base_cand_from_table (arg); +- widest_int diff = arg_cand->index - basis->index; ++ diff = arg_cand->index - basis->index; + record_increment (arg_cand, diff, PHI_ADJUST); + } + } +@@ -2708,28 +2744,42 @@ + for (i = 0; i < gimple_phi_num_args (phi); i++) + { + tree arg = gimple_phi_arg_def (phi, i); ++ gimple *arg_def = SSA_NAME_DEF_STMT (arg); + +- if (!operand_equal_p (arg, phi_cand->base_expr, 0)) ++ if (gimple_code (arg_def) == GIMPLE_PHI) + { +- gimple *arg_def = SSA_NAME_DEF_STMT (arg); +- +- if (gimple_code (arg_def) == GIMPLE_PHI) ++ int feeding_savings = 0; ++ cost += phi_incr_cost (c, incr, arg_def, &feeding_savings); ++ if (has_single_use (gimple_phi_result (arg_def))) ++ *savings += feeding_savings; ++ } ++ else ++ { ++ widest_int diff; ++ slsr_cand_t arg_cand; ++ ++ /* When the PHI argument is just a pass-through to the base ++ expression of the hidden basis, the difference is zero minus ++ the index of the basis. There is no potential savings by ++ eliminating a statement in this case. */ ++ if (operand_equal_p (arg, phi_cand->base_expr, 0)) + { +- int feeding_savings = 0; +- cost += phi_incr_cost (c, incr, arg_def, &feeding_savings); +- if (has_single_use (gimple_phi_result (arg_def))) +- *savings += feeding_savings; ++ arg_cand = (slsr_cand_t) NULL; ++ diff = -basis->index; + } + else + { +- slsr_cand_t arg_cand = base_cand_from_table (arg); +- widest_int diff = arg_cand->index - basis->index; +- +- if (incr == diff) ++ arg_cand = base_cand_from_table (arg); ++ diff = arg_cand->index - basis->index; ++ } ++ ++ if (incr == diff) ++ { ++ tree basis_lhs = gimple_assign_lhs (basis->cand_stmt); ++ cost += add_cost (true, TYPE_MODE (TREE_TYPE (basis_lhs))); ++ if (arg_cand) + { +- tree basis_lhs = gimple_assign_lhs (basis->cand_stmt); + tree lhs = gimple_assign_lhs (arg_cand->cand_stmt); +- cost += add_cost (true, TYPE_MODE (TREE_TYPE (basis_lhs))); + if (has_single_use (lhs)) + *savings += stmt_cost (arg_cand->cand_stmt, true); + } +@@ -3046,23 +3096,26 @@ + for (i = 0; i < gimple_phi_num_args (phi); i++) + { + tree arg = gimple_phi_arg_def (phi, i); ++ gimple *arg_def = SSA_NAME_DEF_STMT (arg); + +- if (!operand_equal_p (arg, phi_cand->base_expr, 0)) ++ if (gimple_code (arg_def) == GIMPLE_PHI) ++ ncd = ncd_with_phi (c, incr, as_a (arg_def), ncd, where); ++ else + { +- gimple *arg_def = SSA_NAME_DEF_STMT (arg); ++ widest_int diff; + +- if (gimple_code (arg_def) == GIMPLE_PHI) +- ncd = ncd_with_phi (c, incr, as_a (arg_def), ncd, +- where); +- else ++ if (operand_equal_p (arg, phi_cand->base_expr, 0)) ++ diff = -basis->index; ++ else + { + slsr_cand_t arg_cand = base_cand_from_table (arg); +- widest_int diff = arg_cand->index - basis->index; +- basic_block pred = gimple_phi_arg_edge (phi, i)->src; +- +- if ((incr == diff) || (!address_arithmetic_p && incr == -diff)) +- ncd = ncd_for_two_cands (ncd, pred, *where, NULL, where); ++ diff = arg_cand->index - basis->index; + } ++ ++ basic_block pred = gimple_phi_arg_edge (phi, i)->src; ++ ++ if ((incr == diff) || (!address_arithmetic_p && incr == -diff)) ++ ncd = ncd_for_two_cands (ncd, pred, *where, NULL, where); + } + } + +@@ -3328,49 +3381,52 @@ + return false; + + tree arg = gimple_phi_arg_def (phi, i); ++ gimple *arg_def = SSA_NAME_DEF_STMT (arg); + +- if (!operand_equal_p (arg, phi_cand->base_expr, 0)) ++ if (gimple_code (arg_def) == GIMPLE_PHI) + { +- gimple *arg_def = SSA_NAME_DEF_STMT (arg); ++ if (!all_phi_incrs_profitable (c, as_a (arg_def))) ++ return false; ++ } ++ else ++ { ++ int j; ++ widest_int increment; + +- if (gimple_code (arg_def) == GIMPLE_PHI) +- { +- if (!all_phi_incrs_profitable (c, as_a (arg_def))) +- return false; +- } ++ if (operand_equal_p (arg, phi_cand->base_expr, 0)) ++ increment = -basis->index; + else + { +- int j; + slsr_cand_t arg_cand = base_cand_from_table (arg); +- widest_int increment = arg_cand->index - basis->index; ++ increment = arg_cand->index - basis->index; ++ } + +- if (!address_arithmetic_p && wi::neg_p (increment)) +- increment = -increment; ++ if (!address_arithmetic_p && wi::neg_p (increment)) ++ increment = -increment; + +- j = incr_vec_index (increment); ++ j = incr_vec_index (increment); + +- if (dump_file && (dump_flags & TDF_DETAILS)) +- { +- fprintf (dump_file, " Conditional candidate %d, phi: ", +- c->cand_num); +- print_gimple_stmt (dump_file, phi, 0, 0); +- fputs (" increment: ", dump_file); +- print_decs (increment, dump_file); +- if (j < 0) +- fprintf (dump_file, +- "\n Not replaced; incr_vec overflow.\n"); +- else { +- fprintf (dump_file, "\n cost: %d\n", incr_vec[j].cost); +- if (profitable_increment_p (j)) +- fputs (" Replacing...\n", dump_file); +- else +- fputs (" Not replaced.\n", dump_file); +- } +- } ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ { ++ fprintf (dump_file, " Conditional candidate %d, phi: ", ++ c->cand_num); ++ print_gimple_stmt (dump_file, phi, 0, 0); ++ fputs (" increment: ", dump_file); ++ print_decs (increment, dump_file); ++ if (j < 0) ++ fprintf (dump_file, ++ "\n Not replaced; incr_vec overflow.\n"); ++ else { ++ fprintf (dump_file, "\n cost: %d\n", incr_vec[j].cost); ++ if (profitable_increment_p (j)) ++ fputs (" Replacing...\n", dump_file); ++ else ++ fputs (" Not replaced.\n", dump_file); ++ } ++ } + +- if (j < 0 || !profitable_increment_p (j)) +- return false; +- } ++ if (j < 0 || !profitable_increment_p (j)) ++ return false; + } + } + +@@ -3422,14 +3478,13 @@ + || !operand_equal_p (new_rhs2, old_rhs1, 0)))) + { + gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); +- slsr_cand_t cc = c; ++ slsr_cand_t cc = lookup_cand (c->first_interp); + gimple_assign_set_rhs_with_ops (&gsi, new_code, new_rhs1, new_rhs2); + update_stmt (gsi_stmt (gsi)); +- c->cand_stmt = gsi_stmt (gsi); +- while (cc->next_interp) ++ while (cc) + { +- cc = lookup_cand (cc->next_interp); + cc->cand_stmt = gsi_stmt (gsi); ++ cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL; + } + + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -3462,6 +3517,11 @@ + orig_rhs2 = gimple_assign_rhs2 (c->cand_stmt); + cand_incr = cand_increment (c); + ++ /* If orig_rhs2 is NULL, we have already replaced this in situ with ++ a copy statement under another interpretation. */ ++ if (!orig_rhs2) ++ return; ++ + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fputs ("Replacing: ", dump_file); +@@ -3534,14 +3594,13 @@ + || !operand_equal_p (rhs2, orig_rhs2, 0)) + { + gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); +- slsr_cand_t cc = c; ++ slsr_cand_t cc = lookup_cand (c->first_interp); + gimple_assign_set_rhs_with_ops (&gsi, MINUS_EXPR, basis_name, rhs2); + update_stmt (gsi_stmt (gsi)); +- c->cand_stmt = gsi_stmt (gsi); +- while (cc->next_interp) ++ while (cc) + { +- cc = lookup_cand (cc->next_interp); + cc->cand_stmt = gsi_stmt (gsi); ++ cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL; + } + + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -3561,14 +3620,13 @@ + { + gassign *copy_stmt = gimple_build_assign (lhs, basis_name); + gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); +- slsr_cand_t cc = c; ++ slsr_cand_t cc = lookup_cand (c->first_interp); + gimple_set_location (copy_stmt, gimple_location (c->cand_stmt)); + gsi_replace (&gsi, copy_stmt, false); +- c->cand_stmt = copy_stmt; +- while (cc->next_interp) ++ while (cc) + { +- cc = lookup_cand (cc->next_interp); + cc->cand_stmt = copy_stmt; ++ cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL; + } + + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -3578,14 +3636,13 @@ + { + gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt); + gassign *cast_stmt = gimple_build_assign (lhs, NOP_EXPR, basis_name); +- slsr_cand_t cc = c; ++ slsr_cand_t cc = lookup_cand (c->first_interp); + gimple_set_location (cast_stmt, gimple_location (c->cand_stmt)); + gsi_replace (&gsi, cast_stmt, false); +- c->cand_stmt = cast_stmt; +- while (cc->next_interp) ++ while (cc) + { +- cc = lookup_cand (cc->next_interp); + cc->cand_stmt = cast_stmt; ++ cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL; + } + + if (dump_file && (dump_flags & TDF_DETAILS)) +Index: gcc/tree-eh.c +=================================================================== +--- a/src/gcc/tree-eh.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-eh.c (.../branches/gcc-7-branch) +@@ -44,6 +44,7 @@ + #include "cfgloop.h" + #include "gimple-low.h" + #include "asan.h" ++#include "gimplify.h" + + /* In some instances a tree and a gimple need to be stored in a same table, + i.e. in hash tables. This is a structure to do this. */ +@@ -2438,7 +2439,7 @@ + case ROUND_MOD_EXPR: + case TRUNC_MOD_EXPR: + case RDIV_EXPR: +- if (honor_snans || honor_trapv) ++ if (honor_snans) + return true; + if (fp_operation) + return flag_trapping_math; +@@ -2722,7 +2723,92 @@ + } + } + ++/* Return non-NULL if there is an integer operation with trapping overflow ++ we can rewrite into non-trapping. Called via walk_tree from ++ rewrite_to_non_trapping_overflow. */ + ++static tree ++find_trapping_overflow (tree *tp, int *walk_subtrees, void *data) ++{ ++ if (EXPR_P (*tp) ++ && !operation_no_trapping_overflow (TREE_TYPE (*tp), TREE_CODE (*tp))) ++ return *tp; ++ if (IS_TYPE_OR_DECL_P (*tp) ++ || (TREE_CODE (*tp) == SAVE_EXPR && data == NULL)) ++ *walk_subtrees = 0; ++ return NULL_TREE; ++} ++ ++/* Rewrite selected operations into unsigned arithmetics, so that they ++ don't trap on overflow. */ ++ ++static tree ++replace_trapping_overflow (tree *tp, int *walk_subtrees, void *data) ++{ ++ if (find_trapping_overflow (tp, walk_subtrees, data)) ++ { ++ tree type = TREE_TYPE (*tp); ++ tree utype = unsigned_type_for (type); ++ *walk_subtrees = 0; ++ int len = TREE_OPERAND_LENGTH (*tp); ++ for (int i = 0; i < len; ++i) ++ walk_tree (&TREE_OPERAND (*tp, i), replace_trapping_overflow, ++ data, (hash_set *) data); ++ ++ if (TREE_CODE (*tp) == ABS_EXPR) ++ { ++ tree op = TREE_OPERAND (*tp, 0); ++ op = save_expr (op); ++ /* save_expr skips simple arithmetics, which is undesirable ++ here, if it might trap due to flag_trapv. We need to ++ force a SAVE_EXPR in the COND_EXPR condition, to evaluate ++ it before the comparison. */ ++ if (EXPR_P (op) ++ && TREE_CODE (op) != SAVE_EXPR ++ && walk_tree (&op, find_trapping_overflow, NULL, NULL)) ++ { ++ op = build1_loc (EXPR_LOCATION (op), SAVE_EXPR, type, op); ++ TREE_SIDE_EFFECTS (op) = 1; ++ } ++ /* Change abs (op) to op < 0 ? -op : op and handle the NEGATE_EXPR ++ like other signed integer trapping operations. */ ++ tree cond = fold_build2 (LT_EXPR, boolean_type_node, ++ op, build_int_cst (type, 0)); ++ tree neg = fold_build1 (NEGATE_EXPR, utype, ++ fold_convert (utype, op)); ++ *tp = fold_build3 (COND_EXPR, type, cond, ++ fold_convert (type, neg), op); ++ } ++ else ++ { ++ TREE_TYPE (*tp) = utype; ++ len = TREE_OPERAND_LENGTH (*tp); ++ for (int i = 0; i < len; ++i) ++ TREE_OPERAND (*tp, i) ++ = fold_convert (utype, TREE_OPERAND (*tp, i)); ++ *tp = fold_convert (type, *tp); ++ } ++ } ++ return NULL_TREE; ++} ++ ++/* If any subexpression of EXPR can trap due to -ftrapv, rewrite it ++ using unsigned arithmetics to avoid traps in it. */ ++ ++tree ++rewrite_to_non_trapping_overflow (tree expr) ++{ ++ if (!flag_trapv) ++ return expr; ++ hash_set pset; ++ if (!walk_tree (&expr, find_trapping_overflow, &pset, &pset)) ++ return expr; ++ expr = unshare_expr (expr); ++ hash_set pset2; ++ walk_tree (&expr, replace_trapping_overflow, &pset2, &pset2); ++ return expr; ++} ++ + /* Helper for stmt_could_throw_p. Return true if STMT (assumed to be a + an assignment or a conditional) may throw. */ + +Index: gcc/fortran/openmp.c +=================================================================== +--- a/src/gcc/fortran/openmp.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/openmp.c (.../branches/gcc-7-branch) +@@ -1312,23 +1312,21 @@ + else if (gfc_match_omp_variable_list (" val (", + &c->lists[OMP_LIST_LINEAR], + false, NULL, &head) +- == MATCH_YES) ++ == MATCH_YES) + linear_op = OMP_LINEAR_VAL; + else if (gfc_match_omp_variable_list (" uval (", + &c->lists[OMP_LIST_LINEAR], + false, NULL, &head) +- == MATCH_YES) ++ == MATCH_YES) + linear_op = OMP_LINEAR_UVAL; + else if (gfc_match_omp_variable_list ("", + &c->lists[OMP_LIST_LINEAR], + false, &end_colon, &head) +- == MATCH_YES) ++ == MATCH_YES) + linear_op = OMP_LINEAR_DEFAULT; + else + { +- gfc_free_omp_namelist (*head); + gfc_current_locus = old_loc; +- *head = NULL; + break; + } + if (linear_op != OMP_LINEAR_DEFAULT) +@@ -5577,8 +5575,6 @@ + "iteration space at %L", name, &do_code->loc); + break; + } +- if (j < i) +- break; + do_code2 = do_code2->block->next; + } + } +@@ -5742,12 +5738,10 @@ + || gfc_find_sym_in_expr (ivar, do_code->ext.iterator->end) + || gfc_find_sym_in_expr (ivar, do_code->ext.iterator->step)) + { +- gfc_error ("!$ACC LOOP %s loops don't form rectangular iteration space at %L", +- clause, &do_code->loc); ++ gfc_error ("!$ACC LOOP %s loops don't form rectangular " ++ "iteration space at %L", clause, &do_code->loc); + break; + } +- if (j < i) +- break; + do_code2 = do_code2->block->next; + } + } +Index: gcc/fortran/interface.c +=================================================================== +--- a/src/gcc/fortran/interface.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/interface.c (.../branches/gcc-7-branch) +@@ -734,6 +734,13 @@ + if (s2->attr.ext_attr & (1 << EXT_ATTR_NO_ARG_CHECK)) + return true; + ++ return gfc_compare_types (&s1->ts, &s2->ts) || s2->ts.type == BT_ASSUMED; ++} ++ ++ ++static bool ++compare_type_characteristics (gfc_symbol *s1, gfc_symbol *s2) ++{ + /* TYPE and CLASS of the same declared type are type compatible, + but have different characteristics. */ + if ((s1->ts.type == BT_CLASS && s2->ts.type == BT_DERIVED) +@@ -740,7 +747,7 @@ + || (s1->ts.type == BT_DERIVED && s2->ts.type == BT_CLASS)) + return false; + +- return gfc_compare_types (&s1->ts, &s2->ts) || s2->ts.type == BT_ASSUMED; ++ return compare_type (s1, s2); + } + + +@@ -1263,7 +1270,7 @@ + { + gfc_array_spec *as = NULL; + +- if (sym->ts.type == BT_CLASS && CLASS_DATA (sym) && CLASS_DATA (sym)->as) ++ if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)) + as = CLASS_DATA (sym)->as; + else + as = sym->as; +@@ -1286,7 +1293,8 @@ + /* Check type and rank. */ + if (type_must_agree) + { +- if (!compare_type (s1, s2) || !compare_type (s2, s1)) ++ if (!compare_type_characteristics (s1, s2) ++ || !compare_type_characteristics (s2, s1)) + { + snprintf (errmsg, err_len, "Type mismatch in argument '%s' (%s/%s)", + s1->name, gfc_typename (&s1->ts), gfc_typename (&s2->ts)); +@@ -1505,7 +1513,7 @@ + return true; + + /* Check type and rank. */ +- if (!compare_type (r1, r2)) ++ if (!compare_type_characteristics (r1, r2)) + { + snprintf (errmsg, err_len, "Type mismatch in function result (%s/%s)", + gfc_typename (&r1->ts), gfc_typename (&r2->ts)); +@@ -2791,7 +2799,8 @@ + + static bool + compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, +- int ranks_must_agree, int is_elemental, locus *where) ++ int ranks_must_agree, int is_elemental, ++ bool in_statement_function, locus *where) + { + gfc_actual_arglist **new_arg, *a, *actual; + gfc_formal_arglist *f; +@@ -2820,6 +2829,13 @@ + + for (a = actual; a; a = a->next, f = f->next) + { ++ if (a->name != NULL && in_statement_function) ++ { ++ gfc_error ("Keyword argument %qs at %L is invalid in " ++ "a statement function", a->name, &a->expr->where); ++ return false; ++ } ++ + /* Look for keywords but ignore g77 extensions like %VAL. */ + if (a->name != NULL && a->name[0] != '%') + { +@@ -3143,8 +3159,9 @@ + } + + /* Check intent = OUT/INOUT for definable actual argument. */ +- if ((f->sym->attr.intent == INTENT_OUT +- || f->sym->attr.intent == INTENT_INOUT)) ++ if (!in_statement_function ++ && (f->sym->attr.intent == INTENT_OUT ++ || f->sym->attr.intent == INTENT_INOUT)) + { + const char* context = (where + ? _("actual argument to INTENT = OUT/INOUT") +@@ -3249,7 +3266,8 @@ + "at %L", where); + return false; + } +- if (!f->sym->attr.optional) ++ if (!f->sym->attr.optional ++ || (in_statement_function && f->sym->attr.optional)) + { + if (where) + gfc_error ("Missing actual argument for argument %qs at %L", +@@ -3535,6 +3553,7 @@ + bool + gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where) + { ++ gfc_actual_arglist *a; + gfc_formal_arglist *dummy_args; + + /* Warn about calls with an implicit interface. Special case +@@ -3561,8 +3580,6 @@ + + if (sym->attr.if_source == IFSRC_UNKNOWN) + { +- gfc_actual_arglist *a; +- + if (sym->attr.pointer) + { + gfc_error ("The pointer object %qs at %L must have an explicit " +@@ -3654,9 +3671,12 @@ + + dummy_args = gfc_sym_get_dummy_args (sym); + +- if (!compare_actual_formal (ap, dummy_args, 0, sym->attr.elemental, where)) ++ /* For a statement function, check that types and type parameters of actual ++ arguments and dummy arguments match. */ ++ if (!compare_actual_formal (ap, dummy_args, 0, sym->attr.elemental, ++ sym->attr.proc == PROC_ST_FUNCTION, where)) + return false; +- ++ + if (!check_intents (dummy_args, *ap)) + return false; + +@@ -3703,7 +3723,7 @@ + } + + if (!compare_actual_formal (ap, comp->ts.interface->formal, 0, +- comp->attr.elemental, where)) ++ comp->attr.elemental, false, where)) + return; + + check_intents (comp->ts.interface->formal, *ap); +@@ -3728,7 +3748,7 @@ + dummy_args = gfc_sym_get_dummy_args (sym); + + r = !sym->attr.elemental; +- if (compare_actual_formal (args, dummy_args, r, !r, NULL)) ++ if (compare_actual_formal (args, dummy_args, r, !r, false, NULL)) + { + check_intents (dummy_args, *args); + if (warn_aliasing) +Index: gcc/fortran/trans-expr.c +=================================================================== +--- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-7-branch) +@@ -960,6 +960,7 @@ + } + + if ((ref == NULL || class_ref == ref) ++ && !(gfc_is_class_array_function (e) && parmse->class_vptr != NULL_TREE) + && (!class_ts.u.derived->components->as + || class_ts.u.derived->components->as->rank != -1)) + return; +@@ -1030,8 +1031,11 @@ + First we have to find the corresponding class reference. */ + + tmp = NULL_TREE; +- if (class_ref == NULL +- && e->symtree && e->symtree->n.sym->ts.type == BT_CLASS) ++ if (gfc_is_class_array_function (e) ++ && parmse->class_vptr != NULL_TREE) ++ tmp = parmse->class_vptr; ++ else if (class_ref == NULL ++ && e->symtree && e->symtree->n.sym->ts.type == BT_CLASS) + { + tmp = e->symtree->n.sym->backend_decl; + +@@ -1063,7 +1067,11 @@ + if (TREE_CODE (TREE_TYPE (tmp)) == REFERENCE_TYPE) + tmp = build_fold_indirect_ref_loc (input_location, tmp); + +- vptr = gfc_class_vptr_get (tmp); ++ if (!(gfc_is_class_array_function (e) && parmse->class_vptr)) ++ vptr = gfc_class_vptr_get (tmp); ++ else ++ vptr = tmp; ++ + gfc_add_modify (&block, ctree, + fold_convert (TREE_TYPE (ctree), vptr)); + +@@ -1148,15 +1156,32 @@ + of the referenced element. */ + + tree +-gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp) ++gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp, ++ bool unlimited) + { +- tree data = data_comp != NULL_TREE ? data_comp : +- gfc_class_data_get (class_decl); +- tree size = gfc_class_vtab_size_get (class_decl); +- tree offset = fold_build2_loc (input_location, MULT_EXPR, +- gfc_array_index_type, +- index, size); +- tree ptr; ++ tree data, size, tmp, ctmp, offset, ptr; ++ ++ data = data_comp != NULL_TREE ? data_comp : ++ gfc_class_data_get (class_decl); ++ size = gfc_class_vtab_size_get (class_decl); ++ ++ if (unlimited) ++ { ++ tmp = fold_convert (gfc_array_index_type, ++ gfc_class_len_get (class_decl)); ++ ctmp = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, size, tmp); ++ tmp = fold_build2_loc (input_location, GT_EXPR, ++ logical_type_node, tmp, ++ build_zero_cst (TREE_TYPE (tmp))); ++ size = fold_build3_loc (input_location, COND_EXPR, ++ gfc_array_index_type, tmp, ctmp, size); ++ } ++ ++ offset = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, ++ index, size); ++ + data = gfc_conv_descriptor_data_get (data); + ptr = fold_convert (pvoid_type_node, data); + ptr = fold_build_pointer_plus_loc (input_location, ptr, offset); +@@ -1258,7 +1283,8 @@ + + if (is_from_desc) + { +- from_ref = gfc_get_class_array_ref (index, from, from_data); ++ from_ref = gfc_get_class_array_ref (index, from, from_data, ++ unlimited); + vec_safe_push (args, from_ref); + } + else +@@ -1265,7 +1291,7 @@ + vec_safe_push (args, from_data); + + if (is_to_class) +- to_ref = gfc_get_class_array_ref (index, to, to_data); ++ to_ref = gfc_get_class_array_ref (index, to, to_data, unlimited); + else + { + tmp = gfc_conv_array_data (to); +@@ -1450,7 +1476,6 @@ + gfc_start_block (&block); + + lhs = gfc_copy_expr (code->expr1); +- gfc_add_data_component (lhs); + + rhs = gfc_copy_expr (code->expr1); + gfc_add_vptr_component (rhs); +@@ -1468,11 +1493,15 @@ + { + gfc_array_spec *tmparr = gfc_get_array_spec (); + *tmparr = *CLASS_DATA (code->expr1)->as; ++ /* Adding the array ref to the class expression results in correct ++ indexing to the dynamic type. */ + gfc_add_full_array_ref (lhs, tmparr); + tmp = gfc_trans_class_array_init_assign (rhs, lhs, code->expr1); + } + else + { ++ /* Scalar initialization needs the _data component. */ ++ gfc_add_data_component (lhs); + sz = gfc_copy_expr (code->expr1); + gfc_add_vptr_component (sz); + gfc_add_size_component (sz); +@@ -4307,6 +4336,8 @@ + + if (expr->value.function.esym == NULL + && expr->value.function.isym != NULL ++ && expr->value.function.actual ++ && expr->value.function.actual->expr + && expr->value.function.actual->expr->symtree + && gfc_map_intrinsic_function (expr, mapping)) + break; +@@ -4435,7 +4466,7 @@ + /* Reset the offset for the function call since the loop + is zero based on the data pointer. Note that the temp + comes first in the loop chain since it is added second. */ +- if (gfc_is_alloc_class_array_function (expr)) ++ if (gfc_is_class_array_function (expr)) + { + tmp = loop.ss->loop_chain->info->data.array.descriptor; + gfc_conv_descriptor_offset_set (&loop.pre, tmp, +@@ -4484,7 +4515,7 @@ + dimen = rse.ss->dimen; + + /* Skip the write-out loop for this case. */ +- if (gfc_is_alloc_class_array_function (expr)) ++ if (gfc_is_class_array_function (expr)) + goto class_array_fcn; + + /* Calculate the bounds of the scalarization. */ +@@ -4778,7 +4809,7 @@ + gcc_assert ((!comp && gfc_return_by_reference (sym) + && sym->result->attr.dimension) + || (comp && comp->attr.dimension) +- || gfc_is_alloc_class_array_function (expr)); ++ || gfc_is_class_array_function (expr)); + gcc_assert (se->loop != NULL); + /* Access the previously obtained result. */ + gfc_conv_tmp_array_ref (se); +@@ -5461,7 +5492,7 @@ + fsym ? fsym->attr.intent : INTENT_INOUT, + fsym && fsym->attr.pointer); + +- else if (gfc_is_alloc_class_array_function (e) ++ else if (gfc_is_class_array_function (e) + && fsym && fsym->ts.type == BT_DERIVED) + /* See previous comment. For function actual argument, + the write out is not needed so the intent is set as +@@ -6302,7 +6333,7 @@ + call the finalization function of the temporary. Note that the + nullification of allocatable components needed by the result + is done in gfc_trans_assignment_1. */ +- if (expr && ((gfc_is_alloc_class_array_function (expr) ++ if (expr && ((gfc_is_class_array_function (expr) + && se->ss && se->ss->loop) + || gfc_is_alloc_class_scalar_function (expr)) + && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr)) +@@ -6313,6 +6344,7 @@ + int n; + if (se->ss && se->ss->loop) + { ++ gfc_add_block_to_block (&se->ss->loop->pre, &se->pre); + se->expr = gfc_evaluate_now (se->expr, &se->ss->loop->pre); + tmp = gfc_class_data_get (se->expr); + info->descriptor = tmp; +@@ -6335,6 +6367,11 @@ + CLASS_DATA (expr->value.function.esym->result)->attr); + } + ++ if ((gfc_is_class_array_function (expr) ++ || gfc_is_alloc_class_scalar_function (expr)) ++ && CLASS_DATA (expr->value.function.esym->result)->attr.pointer) ++ goto no_finalization; ++ + final_fndecl = gfc_class_vtab_final_get (se->expr); + is_final = fold_build2_loc (input_location, NE_EXPR, + logical_type_node, +@@ -6365,6 +6402,8 @@ + tmp = gfc_call_free (tmp); + gfc_add_expr_to_block (&se->post, tmp); + } ++ ++no_finalization: + expr->must_finalize = 0; + } + +@@ -8835,7 +8874,7 @@ + gfc_add_expr_to_block (&block, tmp); + } + } +- else if (gfc_bt_struct (ts.type) || ts.type == BT_CLASS) ++ else if (gfc_bt_struct (ts.type) || ts.type == BT_CLASS || ts.type == BT_COMPLEX) + { + gfc_add_block_to_block (&block, &lse->pre); + gfc_add_block_to_block (&block, &rse->pre); +@@ -8871,7 +8910,7 @@ + gfc_symbol *sym = expr1->symtree->n.sym; + + /* Play it safe with class functions assigned to a derived type. */ +- if (gfc_is_alloc_class_array_function (expr2) ++ if (gfc_is_class_array_function (expr2) + && expr1->ts.type == BT_DERIVED) + return true; + +@@ -9878,7 +9917,7 @@ + rss = NULL; + + if ((expr1->ts.type == BT_DERIVED) +- && (gfc_is_alloc_class_array_function (expr2) ++ && (gfc_is_class_array_function (expr2) + || gfc_is_alloc_class_scalar_function (expr2))) + expr2->must_finalize = 1; + +@@ -10085,7 +10124,7 @@ + a scalar to array assignment, this is done in gfc_trans_scalar_assign + as part of the deep copy. */ + if (!scalar_to_array && expr1->ts.type == BT_DERIVED +- && (gfc_is_alloc_class_array_function (expr2) ++ && (gfc_is_class_array_function (expr2) + || gfc_is_alloc_class_scalar_function (expr2))) + { + tmp = rse.expr; +@@ -10294,6 +10333,10 @@ + return tmp; + } + ++ if (UNLIMITED_POLY (expr1) && expr1->rank ++ && expr2->ts.type != BT_CLASS) ++ use_vptr_copy = true; ++ + /* Fallback to the scalarizer to generate explicit loops. */ + return gfc_trans_assignment_1 (expr1, expr2, init_flag, dealloc, + use_vptr_copy, may_alias); +Index: gcc/fortran/trans-array.c +=================================================================== +--- a/src/gcc/fortran/trans-array.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-array.c (.../branches/gcc-7-branch) +@@ -2652,6 +2652,8 @@ + gfc_init_se (&se, NULL); + se.loop = loop; + se.ss = ss; ++ if (gfc_is_class_array_function (expr)) ++ expr->must_finalize = 1; + gfc_conv_expr (&se, expr); + gfc_add_block_to_block (&outer_loop->pre, &se.pre); + gfc_add_block_to_block (&outer_loop->post, &se.post); +@@ -3071,7 +3073,7 @@ + } + + /* Multiply by the stride. */ +- if (!integer_onep (stride)) ++ if (stride != NULL && !integer_onep (stride)) + index = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type, + index, stride); + +@@ -3102,7 +3104,7 @@ + { + if (expr == NULL + || (expr->ts.type != BT_CLASS +- && !gfc_is_alloc_class_array_function (expr) ++ && !gfc_is_class_array_function (expr) + && !gfc_is_class_array_ref (expr, NULL))) + return false; + +@@ -3132,12 +3134,12 @@ + } + + if (class_ref == NULL && expr && expr->symtree->n.sym->attr.function +- && expr->symtree->n.sym == expr->symtree->n.sym->result) ++ && expr->symtree->n.sym == expr->symtree->n.sym->result ++ && expr->symtree->n.sym->backend_decl == current_function_decl) + { +- gcc_assert (expr->symtree->n.sym->backend_decl == current_function_decl); + decl = gfc_get_fake_result_decl (expr->symtree->n.sym, 0); + } +- else if (expr && gfc_is_alloc_class_array_function (expr)) ++ else if (expr && gfc_is_class_array_function (expr)) + { + size = NULL_TREE; + decl = NULL_TREE; +@@ -3160,6 +3162,8 @@ + + if (decl == NULL_TREE) + return false; ++ ++ se->class_vptr = gfc_evaluate_now (gfc_class_vptr_get (decl), &se->pre); + } + else if (class_ref == NULL) + { +@@ -3334,7 +3338,10 @@ + { + type = gfc_get_element_type (type); + tmp = TREE_OPERAND (cdecl, 0); +- tmp = gfc_get_class_array_ref (offset, tmp, NULL_TREE); ++ /* Note that the fourth argument in this call has been set false. ++ should any character dynamic types come this way, the 'len' ++ field of the unlimited object will not be used. */ ++ tmp = gfc_get_class_array_ref (offset, tmp, NULL_TREE, false); + tmp = fold_convert (build_pointer_type (type), tmp); + tmp = build_fold_indirect_ref_loc (input_location, tmp); + return tmp; +@@ -7125,7 +7132,11 @@ + else + { + /* Otherwise make a new one. */ +- parmtype = gfc_get_element_type (TREE_TYPE (desc)); ++ if (expr->ts.type == BT_CHARACTER && expr->ts.deferred) ++ parmtype = gfc_typenode_for_spec (&expr->ts); ++ else ++ parmtype = gfc_get_element_type (TREE_TYPE (desc)); ++ + parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen, codim, + loop.from, loop.to, 0, + GFC_ARRAY_UNKNOWN, false); +@@ -8598,7 +8609,7 @@ + break; + + case COPY_ALLOC_COMP: +- if (c->attr.pointer) ++ if (c->attr.pointer || c->attr.proc_pointer) + continue; + + /* We need source and destination components. */ +@@ -8642,6 +8653,31 @@ + + gfc_init_block (&tmpblock); + ++ gfc_add_modify (&tmpblock, gfc_class_vptr_get (dcmp), ++ gfc_class_vptr_get (comp)); ++ ++ /* Copy the unlimited '_len' field. If it is greater than zero ++ (ie. a character(_len)), multiply it by size and use this ++ for the malloc call. */ ++ if (UNLIMITED_POLY (c)) ++ { ++ tree ctmp; ++ gfc_add_modify (&tmpblock, gfc_class_len_get (dcmp), ++ gfc_class_len_get (comp)); ++ ++ size = gfc_evaluate_now (size, &tmpblock); ++ tmp = gfc_class_len_get (comp); ++ ctmp = fold_build2_loc (input_location, MULT_EXPR, ++ size_type_node, size, ++ fold_convert (size_type_node, tmp)); ++ tmp = fold_build2_loc (input_location, GT_EXPR, ++ logical_type_node, tmp, ++ build_zero_cst (TREE_TYPE (tmp))); ++ size = fold_build3_loc (input_location, COND_EXPR, ++ size_type_node, tmp, ctmp, size); ++ size = gfc_evaluate_now (size, &tmpblock); ++ } ++ + /* Coarray component have to have the same allocation status and + shape/type-parameter/effective-type on the LHS and RHS of an + intrinsic assignment. Hence, we did not deallocated them - and +@@ -9096,6 +9132,12 @@ + if (expr2 && rss == gfc_ss_terminator) + return NULL_TREE; + ++ /* Ensure that the string length from the current scope is used. */ ++ if (expr2->ts.type == BT_CHARACTER ++ && expr2->expr_type == EXPR_FUNCTION ++ && !expr2->value.function.isym) ++ expr2->ts.u.cl->backend_decl = rss->info->string_length; ++ + gfc_start_block (&fblock); + + /* Since the lhs is allocatable, this must be a descriptor type. +@@ -9340,6 +9382,8 @@ + gfc_array_index_type, tmp, + expr1->ts.u.cl->backend_decl); + } ++ else if (UNLIMITED_POLY (expr1) && expr2->ts.type != BT_CLASS) ++ tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&expr2->ts)); + else + tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&expr1->ts)); + tmp = fold_convert (gfc_array_index_type, tmp); +@@ -9366,6 +9410,28 @@ + gfc_add_modify (&fblock, tmp, + gfc_get_dtype_rank_type (expr1->rank,type)); + } ++ else if (UNLIMITED_POLY (expr1) && expr2->ts.type != BT_CLASS) ++ { ++ tree type; ++ tmp = gfc_conv_descriptor_dtype (desc); ++ type = gfc_typenode_for_spec (&expr2->ts); ++ gfc_add_modify (&fblock, tmp, ++ gfc_get_dtype_rank_type (expr2->rank,type)); ++ /* Set the _len field as well... */ ++ tmp = gfc_class_len_get (TREE_OPERAND (desc, 0)); ++ if (expr2->ts.type == BT_CHARACTER) ++ gfc_add_modify (&fblock, tmp, ++ fold_convert (TREE_TYPE (tmp), ++ TYPE_SIZE_UNIT (type))); ++ else ++ gfc_add_modify (&fblock, tmp, ++ build_int_cst (TREE_TYPE (tmp), 0)); ++ /* ...and the vptr. */ ++ tmp = gfc_class_vptr_get (TREE_OPERAND (desc, 0)); ++ tmp2 = gfc_get_symbol_decl (gfc_find_vtab (&expr2->ts)); ++ tmp2 = gfc_build_addr_expr (TREE_TYPE (tmp), tmp2); ++ gfc_add_modify (&fblock, tmp, tmp2); ++ } + else if (coarray && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc))) + { + gfc_add_modify (&fblock, gfc_conv_descriptor_dtype (desc), +@@ -9471,10 +9537,11 @@ + + + /* We already set the dtype in the case of deferred character +- length arrays. */ ++ length arrays and unlimited polymorphic arrays. */ + if (!(GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)) + && ((expr1->ts.type == BT_CHARACTER && expr1->ts.deferred) +- || coarray))) ++ || coarray)) ++ && !UNLIMITED_POLY (expr1)) + { + tmp = gfc_conv_descriptor_dtype (desc); + gfc_add_modify (&alloc_block, tmp, gfc_get_dtype (TREE_TYPE (desc))); +@@ -10007,7 +10074,7 @@ + if (!sym) + sym = expr->symtree->n.sym; + +- if (gfc_is_alloc_class_array_function (expr)) ++ if (gfc_is_class_array_function (expr)) + return gfc_get_array_ss (ss, expr, + CLASS_DATA (expr->value.function.esym->result)->as->rank, + GFC_SS_FUNCTION); +Index: gcc/fortran/symbol.c +=================================================================== +--- a/src/gcc/fortran/symbol.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/symbol.c (.../branches/gcc-7-branch) +@@ -1259,6 +1259,20 @@ + where)) + return false; + ++ /* F2008: C1282 A designator of a variable with the VOLATILE attribute ++ shall not appear in a pure subprogram. ++ ++ F2018: C1588 A local variable of a pure subprogram, or of a BLOCK ++ construct within a pure subprogram, shall not have the SAVE or ++ VOLATILE attribute. */ ++ if (gfc_pure (NULL)) ++ { ++ gfc_error ("VOLATILE attribute at %L cannot be specified in a " ++ "PURE procedure", where); ++ return false; ++ } ++ ++ + attr->volatile_ = 1; + attr->volatile_ns = gfc_current_ns; + return check_conflict (attr, name, where); +Index: gcc/fortran/decl.c +=================================================================== +--- a/src/gcc/fortran/decl.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/decl.c (.../branches/gcc-7-branch) +@@ -509,6 +509,7 @@ + newdata = gfc_get_data (); + newdata->var = gfc_get_data_variable (); + newdata->var->expr = gfc_get_variable_expr (st); ++ newdata->var->expr->where = sym->declared_at; + newdata->where = gfc_current_locus; + + /* Match initial value list. This also eats the terminal '/'. */ +@@ -573,6 +574,20 @@ + if (m != MATCH_YES) + goto cleanup; + ++ if (new_data->var->iter.var ++ && new_data->var->iter.var->ts.type == BT_INTEGER ++ && new_data->var->iter.var->symtree->n.sym->attr.implied_index == 1 ++ && new_data->var->list ++ && new_data->var->list->expr ++ && new_data->var->list->expr->ts.type == BT_CHARACTER ++ && new_data->var->list->expr->ref ++ && new_data->var->list->expr->ref->type == REF_SUBSTRING) ++ { ++ gfc_error ("Invalid substring in data-implied-do at %L in DATA " ++ "statement", &new_data->var->list->expr->where); ++ goto cleanup; ++ } ++ + m = top_val_list (new_data); + if (m != MATCH_YES) + goto cleanup; +@@ -620,27 +635,35 @@ + { + gfc_constructor_base array_head = NULL; + gfc_expr *expr = NULL; +- match m; ++ match m = MATCH_ERROR; + locus where; +- mpz_t repeat, size; ++ mpz_t repeat, cons_size, as_size; + bool scalar; + int cmp; + + gcc_assert (ts); + +- mpz_init_set_ui (repeat, 0); +- mpz_init (size); +- scalar = !as || !as->rank; +- + /* We have already matched '/' - now look for a constant list, as with + top_val_list from decl.c, but append the result to an array. */ + if (gfc_match ("/") == MATCH_YES) + { + gfc_error ("Empty old style initializer list at %C"); +- goto cleanup; ++ return MATCH_ERROR; + } + + where = gfc_current_locus; ++ scalar = !as || !as->rank; ++ ++ if (!scalar && !spec_size (as, &as_size)) ++ { ++ gfc_error ("Array in initializer list at %L must have an explicit shape", ++ as->type == AS_EXPLICIT ? &as->upper[0]->where : &where); ++ /* Nothing to cleanup yet. */ ++ return MATCH_ERROR; ++ } ++ ++ mpz_init_set_ui (repeat, 0); ++ + for (;;) + { + m = match_data_constant (&expr); +@@ -670,7 +693,10 @@ + + m = match_data_constant (&expr); + if (m == MATCH_NO) +- gfc_error ("Expected data constant after repeat spec at %C"); ++ { ++ m = MATCH_ERROR; ++ gfc_error ("Expected data constant after repeat spec at %C"); ++ } + if (m != MATCH_YES) + goto cleanup; + } +@@ -713,6 +739,9 @@ + goto syntax; + } + ++ /* If we break early from here out, we encountered an error. */ ++ m = MATCH_ERROR; ++ + /* Set up expr as an array constructor. */ + if (!scalar) + { +@@ -723,16 +752,18 @@ + expr->rank = as->rank; + expr->shape = gfc_get_shape (expr->rank); + +- /* Validate sizes. */ +- gcc_assert (gfc_array_size (expr, &size)); +- gcc_assert (spec_size (as, &repeat)); +- cmp = mpz_cmp (size, repeat); ++ /* Validate sizes. We built expr ourselves, so cons_size will be ++ constant (we fail above for non-constant expressions). ++ We still need to verify that the sizes match. */ ++ gcc_assert (gfc_array_size (expr, &cons_size)); ++ cmp = mpz_cmp (cons_size, as_size); + if (cmp < 0) +- gfc_error ("Not enough elements in array initializer at %C"); ++ gfc_error ("Not enough elements in array initializer at %C"); + else if (cmp > 0) +- gfc_error ("Too many elements in array initializer at %C"); ++ gfc_error ("Too many elements in array initializer at %C"); ++ mpz_clear (cons_size); + if (cmp) +- goto cleanup; ++ goto cleanup; + } + + /* Make sure scalar types match. */ +@@ -744,11 +775,11 @@ + expr->ts.u.cl->length_from_typespec = 1; + + *result = expr; +- mpz_clear (size); +- mpz_clear (repeat); +- return MATCH_YES; ++ m = MATCH_YES; ++ goto done; + + syntax: ++ m = MATCH_ERROR; + gfc_error ("Syntax error in old style initializer list at %C"); + + cleanup: +@@ -756,9 +787,12 @@ + expr->value.constructor = NULL; + gfc_free_expr (expr); + gfc_constructor_free (array_head); +- mpz_clear (size); ++ ++done: + mpz_clear (repeat); +- return MATCH_ERROR; ++ if (!scalar) ++ mpz_clear (as_size); ++ return m; + } + + +@@ -1115,14 +1149,12 @@ + if (sym->attr.proc == PROC_ST_FUNCTION) + return rc; + +- if (sym->attr.module_procedure +- && sym->attr.if_source == IFSRC_IFBODY) ++ if (sym->attr.module_procedure && sym->attr.if_source == IFSRC_IFBODY) + { + /* Create a partially populated interface symbol to carry the + characteristics of the procedure and the result. */ + sym->tlink = gfc_new_symbol (name, sym->ns); +- gfc_add_type (sym->tlink, &(sym->ts), +- &gfc_current_locus); ++ gfc_add_type (sym->tlink, &(sym->ts), &gfc_current_locus); + gfc_copy_attr (&sym->tlink->attr, &sym->attr, NULL); + if (sym->attr.dimension) + sym->tlink->as = gfc_copy_array_spec (sym->as); +@@ -1152,11 +1184,22 @@ + accessible names. */ + if (sym->attr.flavor != 0 + && sym->attr.proc != 0 +- && (sym->attr.subroutine || sym->attr.function) ++ && (sym->attr.subroutine || sym->attr.function || sym->attr.entry) + && sym->attr.if_source != IFSRC_UNKNOWN) + gfc_error_now ("Procedure %qs at %C is already defined at %L", + name, &sym->declared_at); + ++ if (sym->attr.flavor != 0 ++ && sym->attr.entry && sym->attr.if_source != IFSRC_UNKNOWN) ++ gfc_error_now ("Procedure %qs at %C is already defined at %L", ++ name, &sym->declared_at); ++ ++ if (sym->attr.external && sym->attr.procedure ++ && gfc_current_state () == COMP_CONTAINS) ++ gfc_error_now ("Contained procedure %qs at %C clashes with " ++ "procedure defined at %L", ++ name, &sym->declared_at); ++ + /* Trap a procedure with a name the same as interface in the + encompassing scope. */ + if (sym->attr.generic != 0 +@@ -1176,7 +1219,16 @@ + && sym->attr.access == 0 + && !module_fcn_entry) + gfc_error_now ("Procedure %qs at %C has an explicit interface " +- "and must not have attributes declared at %L", ++ "from a previous declaration", name); ++ } ++ ++ if (sym && !sym->gfc_new ++ && sym->attr.flavor != FL_UNKNOWN ++ && sym->attr.referenced == 0 && sym->attr.subroutine == 1 ++ && gfc_state_stack->state == COMP_CONTAINS ++ && gfc_state_stack->previous->state == COMP_SUBROUTINE) ++ { ++ gfc_error_now ("Procedure %qs at %C is already defined at %L", + name, &sym->declared_at); + } + +@@ -1201,10 +1253,10 @@ + /* See if the procedure should be a module procedure. */ + + if (((sym->ns->proc_name != NULL +- && sym->ns->proc_name->attr.flavor == FL_MODULE +- && sym->attr.proc != PROC_MODULE) +- || (module_fcn_entry && sym->attr.proc != PROC_MODULE)) +- && !gfc_add_procedure (&sym->attr, PROC_MODULE, sym->name, NULL)) ++ && sym->ns->proc_name->attr.flavor == FL_MODULE ++ && sym->attr.proc != PROC_MODULE) ++ || (module_fcn_entry && sym->attr.proc != PROC_MODULE)) ++ && !gfc_add_procedure (&sym->attr, PROC_MODULE, sym->name, NULL)) + rc = 2; + + return rc; +@@ -2183,7 +2235,10 @@ + /* At this point, we know for sure if the symbol is PARAMETER and can thus + determine (and check) whether it can be implied-shape. If it + was parsed as assumed-size, change it because PARAMETERs can not +- be assumed-size. */ ++ be assumed-size. ++ ++ An explicit-shape-array cannot appear under several conditions. ++ That check is done here as well. */ + if (as) + { + if (as->type == AS_IMPLIED_SHAPE && current_attr.flavor != FL_PARAMETER) +@@ -2205,6 +2260,50 @@ + m = MATCH_ERROR; + goto cleanup; + } ++ ++ /* F2018:C830 (R816) An explicit-shape-spec whose bounds are not ++ constant expressions shall appear only in a subprogram, derived ++ type definition, BLOCK construct, or interface body. */ ++ if (as->type == AS_EXPLICIT ++ && gfc_current_state () != COMP_BLOCK ++ && gfc_current_state () != COMP_DERIVED ++ && gfc_current_state () != COMP_FUNCTION ++ && gfc_current_state () != COMP_INTERFACE ++ && gfc_current_state () != COMP_SUBROUTINE) ++ { ++ gfc_expr *e; ++ bool not_constant = false; ++ ++ for (int i = 0; i < as->rank; i++) ++ { ++ e = gfc_copy_expr (as->lower[i]); ++ gfc_resolve_expr (e); ++ gfc_simplify_expr (e, 0); ++ if (e && (e->expr_type != EXPR_CONSTANT)) ++ { ++ not_constant = true; ++ break; ++ } ++ gfc_free_expr (e); ++ ++ e = gfc_copy_expr (as->upper[i]); ++ gfc_resolve_expr (e); ++ gfc_simplify_expr (e, 0); ++ if (e && (e->expr_type != EXPR_CONSTANT)) ++ { ++ not_constant = true; ++ break; ++ } ++ gfc_free_expr (e); ++ } ++ ++ if (not_constant) ++ { ++ gfc_error ("Explicit shaped array with nonconstant bounds at %C"); ++ m = MATCH_ERROR; ++ goto cleanup; ++ } ++ } + } + + char_len = NULL; +@@ -2918,8 +3017,39 @@ + if (seen_length == 0) + cl->length = gfc_get_int_expr (gfc_default_integer_kind, NULL, 1); + else +- cl->length = len; ++ { ++ /* If gfortran ends up here, then len may be reducible to a constant. ++ Try to do that here. If it does not reduce, simply assign len to ++ charlen. A complication occurs with user-defined generic functions, ++ which are not resolved. Use a private namespace to deal with ++ generic functions. */ + ++ if (len && len->expr_type != EXPR_CONSTANT) ++ { ++ gfc_namespace *old_ns; ++ gfc_expr *e; ++ ++ old_ns = gfc_current_ns; ++ gfc_current_ns = gfc_get_namespace (NULL, 0); ++ ++ e = gfc_copy_expr (len); ++ gfc_reduce_init_expr (e); ++ if (e->expr_type == EXPR_CONSTANT) ++ { ++ gfc_replace_expr (len, e); ++ if (mpz_cmp_si (len->value.integer, 0) < 0) ++ mpz_set_ui (len->value.integer, 0); ++ } ++ else ++ gfc_free_expr (e); ++ ++ gfc_free_namespace (gfc_current_ns); ++ gfc_current_ns = old_ns; ++ } ++ ++ cl->length = len; ++ } ++ + ts->u.cl = cl; + ts->kind = kind == 0 ? gfc_default_character_kind : kind; + ts->deferred = deferred; +@@ -8935,8 +9065,12 @@ + + if (!gensym->attr.generic && gensym->ts.type != BT_UNKNOWN) + { +- gfc_error ("Derived type name %qs at %C already has a basic type " +- "of %s", gensym->name, gfc_typename (&gensym->ts)); ++ if (gensym->ts.u.derived) ++ gfc_error ("Derived type name %qs at %C already has a basic type " ++ "of %s", gensym->name, gfc_typename (&gensym->ts)); ++ else ++ gfc_error ("Derived type name %qs at %C already has a basic type", ++ gensym->name); + return MATCH_ERROR; + } + +Index: gcc/fortran/array.c +=================================================================== +--- a/src/gcc/fortran/array.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/array.c (.../branches/gcc-7-branch) +@@ -1079,6 +1079,15 @@ + if (m != MATCH_YES) + return m; + ++ if (expr->expr_type == EXPR_FUNCTION ++ && expr->ts.type == BT_UNKNOWN ++ && strcmp(expr->symtree->name, "null") == 0) ++ { ++ gfc_error ("NULL() at %C cannot appear in an array constructor"); ++ gfc_free_expr (expr); ++ return MATCH_ERROR; ++ } ++ + gfc_constructor_append_expr (result, expr, &gfc_current_locus); + return MATCH_YES; + } +@@ -1998,7 +2007,9 @@ + gfc_ref *ref; + for (ref = p->expr->ref; ref; ref = ref->next) + if (ref->type == REF_SUBSTRING ++ && ref->u.ss.start + && ref->u.ss.start->expr_type == EXPR_CONSTANT ++ && ref->u.ss.end + && ref->u.ss.end->expr_type == EXPR_CONSTANT) + break; + +@@ -2021,7 +2032,8 @@ + else + return true; + +- gcc_assert (current_length != -1); ++ if (current_length < 0) ++ current_length = 0; + + if (found_length == -1) + found_length = current_length; +Index: gcc/fortran/trans-openmp.c +=================================================================== +--- a/src/gcc/fortran/trans-openmp.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-openmp.c (.../branches/gcc-7-branch) +@@ -1949,9 +1949,32 @@ + } + else + { +- tree type = gfc_typenode_for_spec (&n->sym->ts); +- OMP_CLAUSE_LINEAR_STEP (node) +- = fold_convert (type, last_step); ++ if (kind == OMP_CLAUSE_LINEAR_REF) ++ { ++ tree type; ++ if (n->sym->attr.flavor == FL_PROCEDURE) ++ { ++ type = gfc_get_function_type (n->sym); ++ type = build_pointer_type (type); ++ } ++ else ++ type = gfc_sym_type (n->sym); ++ if (POINTER_TYPE_P (type)) ++ type = TREE_TYPE (type); ++ /* Otherwise to be determined what exactly ++ should be done. */ ++ tree t = fold_convert (sizetype, last_step); ++ t = size_binop (MULT_EXPR, t, ++ TYPE_SIZE_UNIT (type)); ++ OMP_CLAUSE_LINEAR_STEP (node) = t; ++ } ++ else ++ { ++ tree type ++ = gfc_typenode_for_spec (&n->sym->ts); ++ OMP_CLAUSE_LINEAR_STEP (node) ++ = fold_convert (type, last_step); ++ } + } + if (n->sym->attr.dimension || n->sym->attr.allocatable) + OMP_CLAUSE_LINEAR_ARRAY (node) = 1; +Index: gcc/fortran/gfortran.h +=================================================================== +--- a/src/gcc/fortran/gfortran.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/gfortran.h (.../branches/gcc-7-branch) +@@ -863,7 +863,7 @@ + unsigned alloc_comp:1, pointer_comp:1, proc_pointer_comp:1, + private_comp:1, zero_comp:1, coarray_comp:1, lock_comp:1, + event_comp:1, defined_assign_comp:1, unlimited_polymorphic:1, +- has_dtio_procs:1; ++ has_dtio_procs:1, caf_token:1; + + /* This is a temporary selector for SELECT TYPE or an associate + variable for SELECT_TYPE or ASSOCIATE. */ +@@ -2856,6 +2856,8 @@ + extern int gfc_numeric_storage_size; + extern int gfc_character_storage_size; + ++#define gfc_integer_4_kind 4 ++ + /* symbol.c */ + void gfc_clear_new_implicit (void); + bool gfc_add_new_implicit_range (int, int); +@@ -3145,7 +3147,7 @@ + gfc_component * gfc_get_proc_ptr_comp (gfc_expr *); + bool gfc_is_proc_ptr_comp (gfc_expr *); + bool gfc_is_alloc_class_scalar_function (gfc_expr *); +-bool gfc_is_alloc_class_array_function (gfc_expr *); ++bool gfc_is_class_array_function (gfc_expr *); + + bool gfc_ref_this_image (gfc_ref *ref); + bool gfc_is_coindexed (gfc_expr *); +Index: gcc/fortran/ChangeLog +=================================================================== +--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,575 @@ ++2018-11-25 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/88073 ++ * frontend-passes.c (combine_array_constructor): Do not do ++ anything if in a WHERE statement. ++ ++2018-11-24 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/88143 ++ * resolve.c (resolve_variable): Check for associate names with ++ NULL target. ++ ++2019-11-03 Tobias Burnus ++ Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/87597 ++ * expr.c (gfc_simplify_expr): Avoid simplifying ++ the 'array' argument to lbound/ubound/lcobound/ ++ ucobound. ++ ++2018-10-12 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-07-10 Jakub Jelinek ++ ++ PR fortran/86421 ++ * module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and ++ _UVAL suffixes. ++ (mio_omp_declare_simd): Save and restore ref, val and uval modifiers ++ on linear clauses. Initialize n->where to gfc_current_locus. ++ ++2018-09-13 Paul Thomas ++ ++ Backported from trunk ++ PR fortran/87284 ++ * trans-expr.c (gfc_trans_class_init_assign): Access to ++ to array elements of the dynamic type requires that the array ++ reference be added to the class expression and not the _data ++ component, unlike scalar expressions. ++ ++2018-09-07 Janus Weil ++ ++ Backported from trunk ++ PR fortran/86116 ++ * interface.c (compare_type): Remove a CLASS/TYPE check. ++ (compare_type_characteristics): New function that behaves like the old ++ 'compare_type'. ++ (gfc_check_dummy_characteristics, gfc_check_result_characteristics): ++ Call 'compare_type_characteristics' instead of 'compare_type'. ++ ++2018-07-16 Fritz Reese ++ ++ PR fortran/83184 ++ Backport from trunk. ++ * decl.c (match_old_style_init): Initialize locus of variable expr when ++ creating a data variable. ++ (match_clist_expr): Verify array is explicit shape/size before ++ attempting to allocate constant array constructor. ++ ++2018-07-16 Fritz Reese ++ ++ Backport from trunk: ++ ++ PR fortran/86417 ++ * module.c (mio_component): Set component->loc when loading from module. ++ ++ PR fortran/83183 ++ PR fortran/86325 ++ * expr.c (class_allocatable, class_pointer, comp_allocatable, ++ comp_pointer): New helpers. ++ (component_initializer): Generate EXPR_NULL for allocatable or pointer ++ components. Do not generate initializers for components within BT_CLASS. ++ Do not assign to comp->initializer. ++ (gfc_generate_initializer): Use new helpers; move code to generate ++ EXPR_NULL for class allocatable components into component_initializer(). ++ ++2018-07-03 Paul Thomas ++ ++ PR fortran/82969 ++ PR fortran/86242 ++ * trans-array.c (structure_alloc_comps): Do not explicitly copy ++ procedure pointer components. ++ ++2018-06-25 Fritz Reese ++ ++ PR fortran/82972 ++ PR fortran/83088 ++ PR fortran/85851 ++ Backport from trunk. ++ * expr.c (component_initializer): Assign init expr to c->initializer. ++ (generate_isocbinding_initializer): New. ++ (gfc_generate_initializer): Call generate_isocbinding_initializer to ++ generate initializers for c_ptr and c_funptr with -finit-derived. ++ ++2018-06-25 Paul Thomas ++ ++ PR fortran/83118 ++ Back port from trunk ++ * resolve.c (resolve_ordinary_assign): Force the creation of a ++ vtable for assignment of non-polymorphic expressions to an ++ unlimited polymorphic object. ++ * trans-array.c (gfc_alloc_allocatable_for_assignment): Use the ++ size of the rhs type for such assignments. Set the dtype, _len ++ and vptrs appropriately. ++ * trans-expr.c (gfc_trans_assignment): Force the use of the ++ _copy function for these assignments. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-10 Jakub Jelinek ++ ++ PR fortran/85313 ++ * openmp.c (resolve_omp_do): Remove bogus if (j < i) break;. ++ (resolve_oacc_nested_loops): Likewise. Formatting fix. ++ ++2018-06-13 Steven G. Kargl ++ ++ PR fortran/86110 ++ * array.c (gfc_resolve_character_array_constructor): Avoid NULL ++ pointer dereference. ++ ++2018-06-12 Steven G. Kargl ++ ++ PR fortran/44491 ++ * expr.c (gfc_check_assign): Select non-NULL locus. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/38351 ++ * resolve.c (resolve_operator): Provide better error message for ++ derived type entity used in an binary intrinsic numeric operator. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/63514 ++ * symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/78278 ++ * data.c (gfc_assign_data_value): Re-arrange code to allow for ++ an error for double initialization of CHARACTER entities. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/86059 ++ * array.c (match_array_cons_element): NULL() cannot be in an ++ array constructor. ++ ++2018-06-09 Steven G. Kargl ++ ++ PR fortran/85138 ++ PR fortran/85996 ++ PR fortran/86051 ++ * decl.c (gfc_match_char_spec): Use private namespace in attempt to ++ reduce a charlen to a constant. ++ ++2018-06-07 Steven G. Kargl ++ ++ PR fortran/86045 ++ Backport from trunk. ++ * simplify.c (gfc_simplify_mod): Re-arrange code to test whether ++ 'P' is zero and issue an error if it is. ++ ++2018-06-07 Thomas Koenig ++ ++ PR fortran/85641 ++ Backport from trunk. ++ * frontend-passes.c (is_fe_temp): Add prototype. ++ (realloc_string_callback): Early return for frontend-generated ++ temporary. ++ ++2018-06-04 Steven G. Kargl ++ ++ PR fortran/85981 ++ * resolve.c (resolve_allocate_deallocate): Check errmsg is default ++ character kind. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85543 ++ Backport from trunk ++ * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL ++ pointer dereference. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85779 ++ Backport from trunk ++ * decl.c (gfc_match_derived_decl): Fix NULL point dereference. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85780 ++ Backport from trunk ++ * resolve.c (resolve_fl_procedure): Avoid NULL dereference. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85895 ++ Backport from trunk ++ * resolve.c (resolve_sync): Resolve expression before checking for ++ an error. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/80657 ++ Backport from trunk ++ * resolve.c (flag_fn_result_spec): Use the 'sym' argument to ++ test for self refs to the function result in the character len ++ expression. If a self reference is found, emit an error and ++ return true. ++ (resolve_fntype): Use the function symbol in the calls to the ++ above. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/82275 ++ Backport from trunk ++ * match.c (gfc_match_type_spec): Go through the array ref and ++ decrement 'rank' for every dimension that is an element. ++ ++2018-05-19 Paul Thomas ++ ++ PR fortran/82923 ++ PR fortran/66694 ++ PR fortran/82617 ++ Backport from trunk ++ * trans-array.c (gfc_alloc_allocatable_for_assignment): Set the ++ charlen backend_decl of the rhs expr to ss->info->string_length ++ so that the value in the current scope is used. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/83149 ++ Backport from trunk ++ * trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name ++ before accessing its components. ++ * trans-types.c (gfc_sym_type): If a character result has null ++ backend_decl, try the procedure symbol.. ++ ++2018-16-05 Paul Thomas ++ ++ PR fortran/83898 ++ Backport from trunk ++ * trans-stmt.c (trans_associate_var): Do not set cst_array_ctor ++ for characters. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/84546 ++ Backport from trunk ++ * trans-array.c (structure_alloc_comps): Make sure that the ++ vptr is copied and that the unlimited polymorphic _len is used ++ to compute the size to be allocated. ++ (build_array_ref): Set the 'unlimited' argument false in the ++ call to gfc_get_class_array_ref. ++ * trans-expr.c (gfc_get_class_array_ref): If unlimited, use the ++ unlimited polymorphic _len for the offset to the element. ++ (gfc_copy_class_to_class): Set the new 'unlimited' argument. ++ * trans.h : Add the boolean 'unlimited' to the prototype. ++ ++2018-05-12 Steven G. Kargl ++ ++ PR fortran/85542 ++ Backport from trunk ++ * expr.c (check_inquiry): Avoid NULL pointer dereference. ++ ++2018-05-12 Paul Thomas ++ ++ PR fortran/68846 ++ PR fortran/70864 ++ Backport from trunk ++ * resolve.c (get_temp_from_expr): The temporary must not have ++ dummy or intent attributes. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/70870 ++ Backport from trunk ++ * data.c (gfc_assign_data_value): Check that a data object does ++ not also have default initialization. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85521 ++ Backport from trunk ++ * array.c (gfc_resolve_character_array_constructor): Substrings ++ with upper bound smaller than lower bound are zero length strings. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85687 ++ Backport from trunk ++ * check.c (gfc_check_rank): Check that the argument is a data object. ++ ++2018-05-06 Andre Vehreschild ++ ++ PR fortran/85507 ++ Backport from trunk. ++ * dependency.c (gfc_dep_resolver): Revert looking at coarray dimension ++ introduced by r259385. ++ * trans-intrinsic.c (conv_caf_send): Always report a dependency for ++ same variables in coarray assignments. ++ ++2018-04-28 Andre Vehreschild ++ ++ PR fortran/81773 ++ PR fortran/83606 ++ Backport from trunk. ++ * dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored ++ during dependency computation. They define no data dependency. ++ * trans-array.c (conv_array_index_offset): The stride can not be set ++ here, prevent fail. ++ * trans-intrinsic.c (conv_caf_send): Add creation of temporary array ++ for caf_get's result and copying to the array with vectorial ++ indexing. ++ ++2018-04-24 Steven G. Kargl ++ ++ PR fortran/85520 ++ * decl.c (gfc_match_char_spec): Check for negative length and set to 0. ++ ++2018-03-28 Thomas Koenig ++ ++ PR fortran/85084 ++ Backport from trunk. ++ * frontend-passes.c (gfc_run_passes): Do not run front-end ++ optimizations if a previous error occurred. ++ ++2018-03-20 Steven G. Kargl ++ ++ PR fortran/85001 ++ * interface.c (symbol_rank): Remove bogus null pointer check that ++ crept in when translating a ternary operator into an if-else ++ constructor. ++ ++2018-03-19 Thomas Koenig ++ ++ PR fortran/84931 ++ Backport from trunk ++ * simplify.c (gfc_convert_constant): Correctly handle iterators ++ for type conversion. ++ ++2018-03-19 Steven G. Kargl ++ ++ PR fortran/77414 ++ * decl.c (get_proc_name): Check for a subroutine re-defined in ++ the contain portion of a subroutine. Change language of existing ++ error message to better describe the issue. While here fix whitespace ++ issues. ++ ++2018-03-19 Steven G. Kargl ++ ++ PR fortran/65453 ++ * decl.c (get_proc_name): Catch clash between a procedure statement ++ and a contained subprogram ++ ++2018-03-15 Steven G. Kargl ++ ++ PR fortran/78741 ++ * decl.c (get_proc_name): Check for clash of entry name with ++ subroutine name. ++ ++2018-03-12 Steven G. Kargl ++ ++ PR fortran/83939 ++ * resolve.c (resolve_fl_procedure): Enforce F2018:C15100. ++ ++2018-03-10 Steven G. Kargl ++ ++ PR fortran/84734 ++ * arith.c (check_result, eval_intrinsic): If result overflows, pass ++ the expression up the chain instead of a NULL pointer. ++ ++2018-03-08 Steven G. Kargl ++ ++ PR fortran/64124 ++ PR fortran/70409 ++ * decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant. ++ ++2018-03-06 Steven G. Kargl ++ ++ PR fortran/56667 ++ * primary.c (match_sym_complex_part): Give the matcher for an implied ++ do-loop a chance to run. ++ ++2018-03-04 Paul Thomas ++ ++ PR fortran/83076 ++ * resolve.c (resolve_fl_derived0): Add caf_token fields for ++ allocatable and pointer scalars, when -fcoarray selected. ++ * trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token ++ field as well as the backend_decl. ++ (gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module ++ derived types that are not vtypes. Components with caf_token ++ attribute are pvoid types. For a component requiring it, find ++ the caf_token field and have the component token field point to ++ its backend_decl. ++ ++2018-03-03 Harald Anlauf ++ ++ PR fortran/71085 ++ * trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not ++ dereference NULL pointer. ++ ++2018-03-03 Steven G. Kargl ++ ++ PR fortran/51434 ++ * simplify.c (gfc_simplify_transfer): Resolve mold. ++ ++2018-03-03 Paul Thomas ++ ++ PR fortran/80965 ++ * resolve.c (build_loc_call): Change symtree name from 'loc' to ++ '_loc'. ++ ++2018-03-03 Paul Thomas ++ ++ Backported from trunk. ++ PR fortran/78990 ++ * expr.c (gfc_is_class_array_function): Renamed from ++ 'gfc_is_alloc_class_array_function' and modified to return true ++ for pointers as well as allocatable results. ++ * gfortran.h : Change of name for prototype of above function. ++ * trans-array.c (gfc_add_loop_ss_code): Force finalization of ++ class array results. ++ (build_class_array_ref): Change assertion into a condition. ++ (build_class_array_ref): Set the se class_vptr for class array ++ function results. ++ (gfc_walk_function_expr): Reference gfc_is_class_array_function ++ as above. ++ * trans-decl.c (get_proc_result): Move it up before ++ gfc_trans_deferred_vars. ++ (gfc_trans_deferred_vars): Nullify explicit return class arrays ++ on entry. ++ * trans-expr.c (gfc_conv_class_to_class): Allow conversion of ++ class array functions that have an se class_vptr and use it ++ for the result vptr. ++ (gfc_conv_subref_array_arg): Rename reference to the above ++ function. ++ (gfc_conv_procedure_call): Ditto. Add the se pre block to the ++ loop pre block before the function is evaluated. Do not ++ finalize class pointer results. ++ (arrayfunc_assign_needs_temporary, gfc_trans_assignment_1) More ++ renamed references. ++ * trans-intrinsic.c (gfc_conv_intrinsic_size): Ditto. ++ ++2018-03-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-02-16 Jakub Jelinek ++ ++ PR fortran/84418 ++ * trans-openmp.c (gfc_trans_omp_clauses): For OMP_CLAUSE_LINEAR_REF ++ kind set OMP_CLAUSE_LINEAR_STEP to TYPE_SIZE_UNIT times last_step. ++ ++ 2018-01-31 Jakub Jelinek ++ ++ PR fortran/84116 ++ * openmp.c (gfc_match_omp_clauses): If all the linear ++ gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist ++ nor set *head = NULL. Formatting fixes. ++ ++2018-02-25 Steven G. Kargl ++ ++ ChangeLog for r257972 ++ PR fortran/83633 ++ * decl.c (variable_decl): Check that an explicit-shape-array with ++ nonconstant bounds is allowed. ++ ++2018-02-25 Thomas Koenig ++ ++ PR fortran/78238 ++ Backport from trunk ++ * gfortran.h (gfc_integer_4_kind): Define. ++ * resolve.c (resolve_select_type): Make sure that the ++ kind of c->high is gfc_integer_4_kind. ++ ++2018-02-24 Steven G. Kargl ++ ++ PR fortran/30792 ++ * decl.c (gfc_match_data): Check for invalid substring in ++ data-implied-do ++ ++2018-02-23 Steven G. Kargl ++ ++ PR fortran/84511 ++ * trans-io.c (transfer_expr): Deal with C_LOC in transfer statement. ++ ++2018-02-23 Steven G. Kargl ++ ++ PR fortran/84346 ++ * interface.c (compare_actual_formal): Issue error if keyword is ++ used in a statement function. ++ ++2018-02-23 Jerry DeLisle ++ ++ Backport from trunk ++ PR fortran/84506 ++ * trans-io.c (set_parameter_value_inquire): Adjust range check of ++ negative unit values for kind=8 units to the kind=4 negative limit. ++ ++2018-02-22 Thomas Koenig ++ ++ PR fortran/81116 ++ PR fortran/84495 ++ * gfortran.dg/realloc_on_assignment_29.f90: New test. ++ ++2018-02-19 Jerry DeLisle ++ ++ Backport from trunk ++ PR fortran/82007 ++ * resolve.c (resolve_transfer): Delete code looking for 'DT' ++ format specifiers in format strings. Set formatted to true if a ++ format string or format label is present. ++ * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix ++ whitespace. ++ ++2018-02-17 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/84270 ++ * frontend-passes (scalarized_expr): If the expression ++ is an assumed size array, leave in the last reference ++ and pass AR_SECTION instead of AR_FULL to gfc_resolve ++ in order to avoid an error. ++ ++2018-02-13 Alastair McKinstry ++ Janne Blomqvist ++ ++ * module.c (dump_module): Use lbasename to ensure that module ++ files are reproducible. ++ ++2018-02-12 Thomas Koenig ++ ++ PR fortran/68560 ++ * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function. ++ (gfc_conv_intrinsic_function): Call it. ++ ++2018-02-12 Francois-Xavier Coudert ++ ++ PR fortran/35299 ++ ChangeLog for r257566 ++ * resolve.c (resolve_formal_arglist): Update error message. ++ ++2018-02-12 Steven G. Kargl ++ ++ PR fortran/54223 ++ PR fortran/84276 ++ * interface.c (compare_actual_formal): Add in_statement_function ++ bool parameter. Skip check of INTENT attribute for statement ++ functions. Arguments to a statement function cannot be optional, ++ issue error for missing argument. ++ (gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Use ++ in_statement_function. ++ ++2018-02-07 Steven G. Kargl ++ ++ PR fortran/82994 ++ * match.c (gfc_match_deallocate): Check for NULL pointer. ++ ++2018-02-07 Steven G. Kargl ++ ++ PR fortran/82049 ++ * match.c (gfc_match_type_spec): If the charlen is non-NULL, then ++ try to resolve it. While here return early if possible. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/fortran/data.c +=================================================================== +--- a/src/gcc/fortran/data.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/data.c (.../branches/gcc-7-branch) +@@ -481,6 +481,21 @@ + mpz_clear (offset); + gcc_assert (repeat == NULL); + ++ /* Overwriting an existing initializer is non-standard but usually only ++ provokes a warning from other compilers. */ ++ if (init != NULL && init->where.lb && rvalue->where.lb) ++ { ++ /* Order in which the expressions arrive here depends on whether ++ they are from data statements or F95 style declarations. ++ Therefore, check which is the most recent. */ ++ expr = (LOCATION_LINE (init->where.lb->location) ++ > LOCATION_LINE (rvalue->where.lb->location)) ++ ? init : rvalue; ++ if (gfc_notify_std (GFC_STD_GNU, "re-initialization of %qs at %L", ++ symbol->name, &expr->where) == false) ++ return false; ++ } ++ + if (ref || last_ts->type == BT_CHARACTER) + { + /* An initializer has to be constant. */ +@@ -492,20 +507,13 @@ + } + else + { +- /* Overwriting an existing initializer is non-standard but usually only +- provokes a warning from other compilers. */ +- if (init != NULL) ++ if (lvalue->ts.type == BT_DERIVED ++ && gfc_has_default_initializer (lvalue->ts.u.derived)) + { +- /* Order in which the expressions arrive here depends on whether +- they are from data statements or F95 style declarations. +- Therefore, check which is the most recent. */ +- expr = (LOCATION_LINE (init->where.lb->location) +- > LOCATION_LINE (rvalue->where.lb->location)) +- ? init : rvalue; +- if (gfc_notify_std (GFC_STD_GNU, +- "re-initialization of %qs at %L", +- symbol->name, &expr->where) == false) +- return false; ++ gfc_error ("Nonpointer object %qs with default initialization " ++ "shall not appear in a DATA statement at %L", ++ symbol->name, &lvalue->where); ++ return false; + } + + expr = gfc_copy_expr (rvalue); +Index: gcc/fortran/trans-stmt.c +=================================================================== +--- a/src/gcc/fortran/trans-stmt.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-stmt.c (.../branches/gcc-7-branch) +@@ -1566,7 +1566,8 @@ + + desc = sym->backend_decl; + cst_array_ctor = e->expr_type == EXPR_ARRAY +- && gfc_constant_array_constructor_p (e->value.constructor); ++ && gfc_constant_array_constructor_p (e->value.constructor) ++ && e->ts.type != BT_CHARACTER; + + /* If association is to an expression, evaluate it and create temporary. + Otherwise, get descriptor of target for pointer assignment. */ +Index: gcc/fortran/expr.c +=================================================================== +--- a/src/gcc/fortran/expr.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/expr.c (.../branches/gcc-7-branch) +@@ -1823,7 +1823,20 @@ + break; + + case EXPR_FUNCTION: +- for (ap = p->value.function.actual; ap; ap = ap->next) ++ // For array-bound functions, we don't need to optimize ++ // the 'array' argument. In particular, if the argument ++ // is a PARAMETER, simplifying might convert an EXPR_VARIABLE ++ // into an EXPR_ARRAY; the latter has lbound = 1, the former ++ // can have any lbound. ++ ap = p->value.function.actual; ++ if (p->value.function.isym && ++ (p->value.function.isym->id == GFC_ISYM_LBOUND ++ || p->value.function.isym->id == GFC_ISYM_UBOUND ++ || p->value.function.isym->id == GFC_ISYM_LCOBOUND ++ || p->value.function.isym->id == GFC_ISYM_UCOBOUND)) ++ ap = ap->next; ++ ++ for ( ; ap; ap = ap->next) + if (!gfc_simplify_expr (ap->expr, type)) + return false; + +@@ -2315,7 +2328,7 @@ + + /* Assumed character length will not reduce to a constant expression + with LEN, as required by the standard. */ +- if (i == 5 && not_restricted ++ if (i == 5 && not_restricted && ap->expr->symtree + && ap->expr->symtree->n.sym->ts.type == BT_CHARACTER + && (ap->expr->symtree->n.sym->ts.u.cl->length == NULL + || ap->expr->symtree->n.sym->ts.deferred)) +@@ -3288,6 +3301,8 @@ + /* Only DATA Statements come here. */ + if (!conform) + { ++ locus *where; ++ + /* Numeric can be converted to any other numeric. And Hollerith can be + converted to any other type. */ + if ((gfc_numeric_ts (&lvalue->ts) && gfc_numeric_ts (&rvalue->ts)) +@@ -3297,8 +3312,9 @@ + if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL) + return true; + ++ where = lvalue->where.lb ? &lvalue->where : &rvalue->where; + gfc_error ("Incompatible types in DATA statement at %L; attempted " +- "conversion of %s to %s", &lvalue->where, ++ "conversion of %s to %s", where, + gfc_typename (&rvalue->ts), gfc_typename (&lvalue->ts)); + + return false; +@@ -4274,21 +4290,60 @@ + return init; + } + ++static bool ++class_allocatable (gfc_component *comp) ++{ ++ return comp->ts.type == BT_CLASS && CLASS_DATA (comp) ++ && CLASS_DATA (comp)->attr.allocatable; ++} ++ ++static bool ++class_pointer (gfc_component *comp) ++{ ++ return comp->ts.type == BT_CLASS && CLASS_DATA (comp) ++ && CLASS_DATA (comp)->attr.pointer; ++} ++ ++static bool ++comp_allocatable (gfc_component *comp) ++{ ++ return comp->attr.allocatable || class_allocatable (comp); ++} ++ ++static bool ++comp_pointer (gfc_component *comp) ++{ ++ return comp->attr.pointer ++ || comp->attr.pointer ++ || comp->attr.proc_pointer ++ || comp->attr.class_pointer ++ || class_pointer (comp); ++} ++ + /* Fetch or generate an initializer for the given component. + Only generate an initializer if generate is true. */ + + static gfc_expr * +-component_initializer (gfc_typespec *ts, gfc_component *c, bool generate) ++component_initializer (gfc_component *c, bool generate) + { + gfc_expr *init = NULL; + ++ /* Allocatable components always get EXPR_NULL. ++ Pointer components are only initialized when generating, and only if they ++ do not already have an initializer. */ ++ if (comp_allocatable (c) || (generate && comp_pointer (c) && !c->initializer)) ++ { ++ init = gfc_get_null_expr (&c->loc); ++ init->ts = c->ts; ++ return init; ++ } ++ + /* See if we can find the initializer immediately. */ +- if (c->initializer || !generate +- || (ts->type == BT_CLASS && !c->attr.allocatable)) ++ if (c->initializer || !generate) + return c->initializer; + + /* Recursively handle derived type components. */ +- if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS) ++ else if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS) + init = gfc_generate_initializer (&c->ts, true); + + else if (c->ts.type == BT_UNION && c->ts.u.derived->components) +@@ -4347,7 +4402,33 @@ + return gfc_generate_initializer (ts, false); + } + ++/* Generate an initializer expression for an iso_c_binding type ++ such as c_[fun]ptr. The appropriate initializer is c_null_[fun]ptr. */ + ++static gfc_expr * ++generate_isocbinding_initializer (gfc_symbol *derived) ++{ ++ /* The initializers have already been built into the c_null_[fun]ptr symbols ++ from gen_special_c_interop_ptr. */ ++ gfc_symtree *npsym = NULL; ++ if (0 == strcmp (derived->name, "c_ptr")) ++ gfc_find_sym_tree ("c_null_ptr", gfc_current_ns, true, &npsym); ++ else if (0 == strcmp (derived->name, "c_funptr")) ++ gfc_find_sym_tree ("c_null_funptr", gfc_current_ns, true, &npsym); ++ else ++ gfc_internal_error ("generate_isocbinding_initializer(): bad iso_c_binding" ++ " type, expected % or %"); ++ if (npsym) ++ { ++ gfc_expr *init = gfc_copy_expr (npsym->n.sym->value); ++ init->symtree = npsym; ++ init->ts.is_iso_c = true; ++ return init; ++ } ++ ++ return NULL; ++} ++ + /* Get or generate an expression for a default initializer of a derived type. + If -finit-derived is specified, generate default initialization expressions + for components that lack them when generate is set. */ +@@ -4357,8 +4438,12 @@ + { + gfc_expr *init, *tmp; + gfc_component *comp; ++ + generate = flag_init_derived && generate; + ++ if (ts->u.derived->ts.is_iso_c && generate) ++ return generate_isocbinding_initializer (ts->u.derived); ++ + /* See if we have a default initializer in this, but not in nested + types (otherwise we could use gfc_has_default_initializer()). + We don't need to check if we are going to generate them. */ +@@ -4366,9 +4451,7 @@ + if (!generate) + { + for (; comp; comp = comp->next) +- if (comp->initializer || comp->attr.allocatable +- || (comp->ts.type == BT_CLASS && CLASS_DATA (comp) +- && CLASS_DATA (comp)->attr.allocatable)) ++ if (comp->initializer || comp_allocatable (comp)) + break; + } + +@@ -4384,7 +4467,7 @@ + gfc_constructor *ctor = gfc_constructor_get(); + + /* Fetch or generate an initializer for the component. */ +- tmp = component_initializer (ts, comp, generate); ++ tmp = component_initializer (comp, generate); + if (tmp) + { + /* Save the component ref for STRUCTUREs and UNIONs. */ +@@ -4394,8 +4477,7 @@ + + /* If the initializer was not generated, we need a copy. */ + ctor->expr = comp->initializer ? gfc_copy_expr (tmp) : tmp; +- if ((comp->ts.type != tmp->ts.type +- || comp->ts.kind != tmp->ts.kind) ++ if ((comp->ts.type != tmp->ts.type || comp->ts.kind != tmp->ts.kind) + && !comp->attr.pointer && !comp->attr.proc_pointer) + { + bool val; +@@ -4405,15 +4487,6 @@ + } + } + +- if (comp->attr.allocatable +- || (comp->ts.type == BT_CLASS && CLASS_DATA (comp)->attr.allocatable)) +- { +- ctor->expr = gfc_get_expr (); +- ctor->expr->expr_type = EXPR_NULL; +- ctor->expr->where = init->where; +- ctor->expr->ts = comp->ts; +- } +- + gfc_constructor_append (&init->value.constructor, ctor); + } + +@@ -4762,7 +4835,7 @@ + /* Determine if an expression is a function with an allocatable class array + result. */ + bool +-gfc_is_alloc_class_array_function (gfc_expr *expr) ++gfc_is_class_array_function (gfc_expr *expr) + { + if (expr->expr_type == EXPR_FUNCTION + && expr->value.function.esym +@@ -4769,7 +4842,8 @@ + && expr->value.function.esym->result + && expr->value.function.esym->result->ts.type == BT_CLASS + && CLASS_DATA (expr->value.function.esym->result)->attr.dimension +- && CLASS_DATA (expr->value.function.esym->result)->attr.allocatable) ++ && (CLASS_DATA (expr->value.function.esym->result)->attr.allocatable ++ || CLASS_DATA (expr->value.function.esym->result)->attr.pointer)) + return true; + + return false; +Index: gcc/fortran/module.c +=================================================================== +--- a/src/gcc/fortran/module.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/module.c (.../branches/gcc-7-branch) +@@ -2791,6 +2791,8 @@ + if (c->attr.proc_pointer) + mio_typebound_proc (&c->tb); + ++ c->loc = gfc_current_locus; ++ + mio_rparen (); + } + +@@ -4016,6 +4018,9 @@ + minit ("UNIFORM", 3), + minit ("LINEAR", 4), + minit ("ALIGNED", 5), ++ minit ("LINEAR_REF", 33), ++ minit ("LINEAR_VAL", 34), ++ minit ("LINEAR_UVAL", 35), + minit (NULL, -1) + }; + +@@ -4058,7 +4063,10 @@ + } + for (n = ods->clauses->lists[OMP_LIST_LINEAR]; n; n = n->next) + { +- mio_name (4, omp_declare_simd_clauses); ++ if (n->u.linear_op == OMP_LINEAR_DEFAULT) ++ mio_name (4, omp_declare_simd_clauses); ++ else ++ mio_name (32 + n->u.linear_op, omp_declare_simd_clauses); + mio_symbol_ref (&n->sym); + mio_expr (&n->expr); + } +@@ -4099,11 +4107,20 @@ + case 4: + case 5: + *ptrs[t - 3] = n = gfc_get_omp_namelist (); ++ finish_namelist: ++ n->where = gfc_current_locus; + ptrs[t - 3] = &n->next; + mio_symbol_ref (&n->sym); + if (t != 3) + mio_expr (&n->expr); + break; ++ case 33: ++ case 34: ++ case 35: ++ *ptrs[1] = n = gfc_get_omp_namelist (); ++ n->u.linear_op = (enum gfc_omp_linear_op) (t - 32); ++ t = 4; ++ goto finish_namelist; + } + } + } +@@ -6063,8 +6080,10 @@ + gfc_fatal_error ("Can't open module file %qs for writing at %C: %s", + filename_tmp, xstrerror (errno)); + ++ /* Use lbasename to ensure module files are reproducible regardless ++ of the build path (see the reproducible builds project). */ + gzprintf (module_fp, "GFORTRAN module version '%s' created from %s\n", +- MOD_VERSION, gfc_source_file); ++ MOD_VERSION, lbasename (gfc_source_file)); + + /* Write the module itself. */ + iomode = IO_OUTPUT; +Index: gcc/fortran/trans-types.c +=================================================================== +--- a/src/gcc/fortran/trans-types.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-types.c (.../branches/gcc-7-branch) +@@ -1804,7 +1804,7 @@ + TREE_NO_WARNING (decl) = 1; + } + +- if (flag_coarray == GFC_FCOARRAY_LIB && codimen) ++ if (flag_coarray == GFC_FCOARRAY_LIB) + { + decl = gfc_add_field_to_struct_1 (fat_type, + get_identifier ("token"), +@@ -2168,6 +2168,14 @@ + if (sym->backend_decl && !sym->attr.function) + return TREE_TYPE (sym->backend_decl); + ++ if (sym->attr.result ++ && sym->ts.type == BT_CHARACTER ++ && sym->ts.u.cl->backend_decl == NULL_TREE ++ && sym->ns->proc_name ++ && sym->ns->proc_name->ts.u.cl ++ && sym->ns->proc_name->ts.u.cl->backend_decl != NULL_TREE) ++ sym->ts.u.cl->backend_decl = sym->ns->proc_name->ts.u.cl->backend_decl; ++ + if (sym->ts.type == BT_CHARACTER + && ((sym->attr.function && sym->attr.is_bind_c) + || (sym->attr.result +@@ -2334,6 +2342,7 @@ + for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next) + { + to_cm->backend_decl = from_cm->backend_decl; ++ to_cm->caf_token = from_cm->caf_token; + if (from_cm->ts.type == BT_UNION) + gfc_get_union_type (to_cm->ts.u.derived); + else if (from_cm->ts.type == BT_DERIVED +@@ -2444,7 +2453,11 @@ + gfc_dt_list *dt; + gfc_namespace *ns; + tree tmp; ++ bool coarray_flag; + ++ coarray_flag = flag_coarray == GFC_FCOARRAY_LIB ++ && derived->module && !derived->attr.vtype; ++ + if (derived->attr.unlimited_polymorphic + || (flag_coarray == GFC_FCOARRAY_LIB + && derived->from_intmod == INTMOD_ISO_FORTRAN_ENV +@@ -2636,7 +2649,9 @@ + field_type = build_pointer_type (tmp); + } + else if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS) +- field_type = c->ts.u.derived->backend_decl; ++ field_type = c->ts.u.derived->backend_decl; ++ else if (c->attr.caf_token) ++ field_type = pvoid_type_node; + else + { + if (c->ts.type == BT_CHARACTER && !c->ts.deferred) +@@ -2715,19 +2730,6 @@ + gcc_assert (field); + if (!c->backend_decl) + c->backend_decl = field; +- +- /* Do not add a caf_token field for classes' data components. */ +- if (codimen && !c->attr.dimension && !c->attr.codimension +- && (c->attr.allocatable || c->attr.pointer) +- && c->caf_token == NULL_TREE && strcmp ("_data", c->name) != 0) +- { +- char caf_name[GFC_MAX_SYMBOL_LEN]; +- snprintf (caf_name, GFC_MAX_SYMBOL_LEN, "_caf_%s", c->name); +- c->caf_token = gfc_add_field_to_struct (typenode, +- get_identifier (caf_name), +- pvoid_type_node, &chain); +- TREE_NO_WARNING (c->caf_token) = 1; +- } + } + + /* Now lay out the derived type, including the fields. */ +@@ -2753,6 +2755,24 @@ + + copy_derived_types: + ++ for (c = derived->components; c; c = c->next) ++ { ++ /* Do not add a caf_token field for class container components. */ ++ if ((codimen || coarray_flag) ++ && !c->attr.dimension && !c->attr.codimension ++ && (c->attr.allocatable || c->attr.pointer) ++ && !derived->attr.is_class) ++ { ++ char caf_name[GFC_MAX_SYMBOL_LEN]; ++ gfc_component *token; ++ snprintf (caf_name, GFC_MAX_SYMBOL_LEN, "_caf_%s", c->name); ++ token = gfc_find_component (derived, caf_name, true, true, NULL); ++ gcc_assert (token); ++ c->caf_token = token->backend_decl; ++ TREE_NO_WARNING (c->caf_token) = 1; ++ } ++ } ++ + for (dt = gfc_derived_types; dt; dt = dt->next) + gfc_copy_dt_decls_ifequal (derived, dt->derived, false); + +Index: gcc/fortran/trans.h +=================================================================== +--- a/src/gcc/fortran/trans.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans.h (.../branches/gcc-7-branch) +@@ -431,7 +431,7 @@ + void gfc_reset_vptr (stmtblock_t *, gfc_expr *); + void gfc_reset_len (stmtblock_t *, gfc_expr *); + tree gfc_get_vptr_from_expr (tree); +-tree gfc_get_class_array_ref (tree, tree, tree); ++tree gfc_get_class_array_ref (tree, tree, tree, bool); + tree gfc_copy_class_to_class (tree, tree, tree, bool); + bool gfc_add_finalizer_call (stmtblock_t *, gfc_expr *); + bool gfc_add_comp_finalizer_call (stmtblock_t *, tree, gfc_component *, bool); +Index: gcc/fortran/frontend-passes.c +=================================================================== +--- a/src/gcc/fortran/frontend-passes.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/frontend-passes.c (.../branches/gcc-7-branch) +@@ -48,6 +48,8 @@ + locus *, gfc_namespace *, + char *vname=NULL); + ++static bool is_fe_temp (gfc_expr *e); ++ + #ifdef CHECKING_P + static void check_locus (gfc_namespace *); + #endif +@@ -135,6 +137,10 @@ + check_locus (ns); + #endif + ++ gfc_get_errors (&w, &e); ++ if (e > 0) ++ return; ++ + if (flag_frontend_optimize) + { + optimize_namespace (ns); +@@ -145,10 +151,6 @@ + expr_array.release (); + } + +- gfc_get_errors (&w, &e); +- if (e > 0) +- return; +- + if (flag_realloc_lhs) + realloc_strings (ns); + } +@@ -231,22 +233,29 @@ + || !expr1->ts.deferred) + return 0; + +- expr2 = gfc_discard_nops (co->expr2); +- if (expr2->expr_type != EXPR_VARIABLE) ++ if (is_fe_temp (expr1)) + return 0; + +- found_substr = false; +- for (ref = expr2->ref; ref; ref = ref->next) ++ expr2 = gfc_discard_nops (co->expr2); ++ ++ if (expr2->expr_type == EXPR_VARIABLE) + { +- if (ref->type == REF_SUBSTRING) ++ found_substr = false; ++ for (ref = expr2->ref; ref; ref = ref->next) + { +- found_substr = true; +- break; ++ if (ref->type == REF_SUBSTRING) ++ { ++ found_substr = true; ++ break; ++ } + } ++ if (!found_substr) ++ return 0; + } +- if (!found_substr) ++ else if (expr2->expr_type != EXPR_OP ++ || expr2->value.op.op != INTRINSIC_CONCAT) + return 0; +- ++ + if (!gfc_check_dependency (expr1, expr2, true)) + return 0; + +@@ -619,7 +628,8 @@ + + /* Return length of char symbol, if constant. */ + +- if (e->symtree->n.sym->ts.u.cl && e->symtree->n.sym->ts.u.cl->length ++ if (e->symtree && e->symtree->n.sym->ts.u.cl ++ && e->symtree->n.sym->ts.u.cl->length + && e->symtree->n.sym->ts.u.cl->length->expr_type == EXPR_CONSTANT) + return gfc_copy_expr (e->symtree->n.sym->ts.u.cl->length); + +@@ -1348,6 +1358,10 @@ + if (iterator_level > 0) + return false; + ++ /* WHERE also doesn't work. */ ++ if (in_where > 0) ++ return false; ++ + op1 = e->value.op.op1; + op2 = e->value.op.op2; + +@@ -2750,11 +2764,27 @@ + is the lbound of a full ref. */ + int j; + gfc_array_ref *ar; ++ int to; + + ar = &ref->u.ar; +- ar->type = AR_FULL; +- for (j = 0; j < ar->dimen; j++) ++ ++ /* For assumed size, we need to keep around the final ++ reference in order not to get an error on resolution ++ below, and we cannot use AR_FULL. */ ++ ++ if (ar->as->type == AS_ASSUMED_SIZE) + { ++ ar->type = AR_SECTION; ++ to = ar->dimen - 1; ++ } ++ else ++ { ++ to = ar->dimen; ++ ar->type = AR_FULL; ++ } ++ ++ for (j = 0; j < to; j++) ++ { + gfc_free_expr (ar->start[j]); + ar->start[j] = NULL; + gfc_free_expr (ar->end[j]); +Index: gcc/fortran/resolve.c +=================================================================== +--- a/src/gcc/fortran/resolve.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/resolve.c (.../branches/gcc-7-branch) +@@ -512,8 +512,11 @@ + { + if (sym->as != NULL) + { +- gfc_error ("Argument %qs of statement function at %L must " +- "be scalar", sym->name, &sym->declared_at); ++ /* F03:C1263 (R1238) The function-name and each dummy-arg-name ++ shall be specified, explicitly or implicitly, to be scalar. */ ++ gfc_error ("Argument '%s' of statement function '%s' at %L " ++ "must be scalar", sym->name, proc->name, ++ &proc->declared_at); + continue; + } + +@@ -2903,8 +2906,8 @@ + + /* If SYM has references to outer arrays, so has the procedure calling + SYM. If SYM is a procedure pointer, we can assume the worst. */ +- if (sym->attr.array_outer_dependency +- || sym->attr.proc_pointer) ++ if ((sym->attr.array_outer_dependency || sym->attr.proc_pointer) ++ && gfc_current_ns->proc_name) + gfc_current_ns->proc_name->attr.array_outer_dependency = 1; + } + +@@ -3682,7 +3685,13 @@ + break; + } + +- sprintf (msg, ++ if (op1->ts.type == BT_DERIVED || op2->ts.type == BT_DERIVED) ++ sprintf (msg, ++ _("Unexpected derived-type entities in binary intrinsic " ++ "numeric operator %%<%s%%> at %%L"), ++ gfc_op2string (e->value.op.op)); ++ else ++ sprintf (msg, + _("Operands of binary numeric operator %%<%s%%> at %%L are %s/%s"), + gfc_op2string (e->value.op.op), gfc_typename (&op1->ts), + gfc_typename (&op2->ts)); +@@ -5123,7 +5132,7 @@ + the ts' type of the component refs is still array valued, which + can't be translated that way. */ + if (sym->assoc && e->rank == 0 && e->ref && sym->ts.type == BT_CLASS +- && sym->assoc->target->ts.type == BT_CLASS ++ && sym->assoc->target && sym->assoc->target->ts.type == BT_CLASS + && CLASS_DATA (sym->assoc->target)->as) + { + gfc_ref *ref = e->ref; +@@ -7551,12 +7560,17 @@ + gfc_check_vardef_context (errmsg, false, false, false, + _("ERRMSG variable")); + ++ /* F18:R928 alloc-opt is ERRMSG = errmsg-variable ++ F18:R930 errmsg-variable is scalar-default-char-variable ++ F18:R906 default-char-variable is variable ++ F18:C906 default-char-variable shall be default character. */ + if ((errmsg->ts.type != BT_CHARACTER + && !(errmsg->ref + && (errmsg->ref->type == REF_ARRAY + || errmsg->ref->type == REF_COMPONENT))) +- || errmsg->rank > 0 ) +- gfc_error ("Errmsg-variable at %L must be a scalar CHARACTER " ++ || errmsg->rank > 0 ++ || errmsg->ts.kind != gfc_default_character_kind) ++ gfc_error ("ERRMSG variable at %L shall be a scalar default CHARACTER " + "variable", &errmsg->where); + + for (p = code->ext.alloc.list; p; p = p->next) +@@ -8495,7 +8509,7 @@ + gfc_expr *loc_call; + loc_call = gfc_get_expr (); + loc_call->expr_type = EXPR_FUNCTION; +- gfc_get_sym_tree ("loc", gfc_current_ns, &loc_call->symtree, false); ++ gfc_get_sym_tree ("_loc", gfc_current_ns, &loc_call->symtree, false); + loc_call->symtree->n.sym->attr.flavor = FL_PROCEDURE; + loc_call->symtree->n.sym->attr.intrinsic = 1; + loc_call->symtree->n.sym->result = loc_call->symtree->n.sym; +@@ -8548,6 +8562,9 @@ + code->expr1->symtree->n.sym->ts = code->expr2->ts; + selector_type = CLASS_DATA (code->expr2)->ts.u.derived; + ++ if (code->expr2->rank && CLASS_DATA (code->expr1)->as) ++ CLASS_DATA (code->expr1)->as->rank = code->expr2->rank; ++ + /* F2008: C803 The selector expression must not be coindexed. */ + if (gfc_is_coindexed (code->expr2)) + { +@@ -8742,7 +8759,7 @@ + { + vtab = gfc_find_derived_vtab (c->ts.u.derived); + gcc_assert (vtab); +- c->high = gfc_get_int_expr (gfc_default_integer_kind, NULL, ++ c->high = gfc_get_int_expr (gfc_integer_4_kind, NULL, + c->ts.u.derived->hash_value); + } + else +@@ -8751,6 +8768,13 @@ + gcc_assert (vtab && CLASS_DATA (vtab)->initializer); + e = CLASS_DATA (vtab)->initializer; + c->high = gfc_copy_expr (e); ++ if (c->high->ts.kind != gfc_integer_4_kind) ++ { ++ gfc_typespec ts; ++ ts.kind = gfc_integer_4_kind; ++ ts.type = BT_INTEGER; ++ gfc_convert_type_warn (c->high, &ts, 2, 0); ++ } + } + + e = gfc_lval_expr_from_sym (vtab); +@@ -8996,19 +9020,9 @@ + else + derived = ts->u.derived->components->ts.u.derived; + +- if (dt->format_expr) +- { +- char *fmt; +- fmt = gfc_widechar_to_char (dt->format_expr->value.character.string, +- -1); +- if (strtok (fmt, "DT") != NULL) +- formatted = true; +- } +- else if (dt->format_label == &format_asterisk) +- { +- /* List directed io must call the formatted DTIO procedure. */ +- formatted = true; +- } ++ /* Determine when to use the formatted DTIO procedure. */ ++ if (dt && (dt->format_expr || dt->format_label)) ++ formatted = true; + + write = dt->dt_io_kind->value.iokind == M_WRITE + || dt->dt_io_kind->value.iokind == M_PRINT; +@@ -9296,6 +9310,7 @@ + } + + /* Check STAT. */ ++ gfc_resolve_expr (code->expr2); + if (code->expr2 + && (code->expr2->ts.type != BT_INTEGER || code->expr2->rank != 0 + || code->expr2->expr_type != EXPR_VARIABLE)) +@@ -9303,6 +9318,7 @@ + &code->expr2->where); + + /* Check ERRMSG. */ ++ gfc_resolve_expr (code->expr3); + if (code->expr3 + && (code->expr3->ts.type != BT_CHARACTER || code->expr3->rank != 0 + || code->expr3->expr_type != EXPR_VARIABLE)) +@@ -10135,6 +10151,11 @@ + && rhs->expr_type != EXPR_ARRAY) + gfc_add_data_component (rhs); + ++ /* Make sure there is a vtable and, in particular, a _copy for the ++ rhs type. */ ++ if (UNLIMITED_POLY (lhs) && lhs->rank && rhs->ts.type != BT_CLASS) ++ gfc_find_vtab (&rhs->ts); ++ + bool caf_convert_to_send = flag_coarray == GFC_FCOARRAY_LIB + && (lhs_coindexed + || (code->expr2->expr_type == EXPR_FUNCTION +@@ -10273,6 +10294,8 @@ + tmp->n.sym->attr.function = 0; + tmp->n.sym->attr.result = 0; + tmp->n.sym->attr.flavor = FL_VARIABLE; ++ tmp->n.sym->attr.dummy = 0; ++ tmp->n.sym->attr.intent = INTENT_UNKNOWN; + + if (as) + { +@@ -12225,6 +12248,19 @@ + } + } + ++ /* F2018, C15100: "The result of an elemental function shall be scalar, ++ and shall not have the POINTER or ALLOCATABLE attribute." The scalar ++ pointer is tested and caught elsewhere. */ ++ if (sym->attr.elemental && sym->result ++ && (sym->result->attr.allocatable || sym->result->attr.pointer)) ++ { ++ gfc_error ("Function result variable %qs at %L of elemental " ++ "function %qs shall not have an ALLOCATABLE or POINTER " ++ "attribute", sym->result->name, ++ &sym->result->declared_at, sym->name); ++ return false; ++ } ++ + if (sym->attr.is_bind_c && sym->attr.is_c_interop != 1) + { + gfc_formal_arglist *curr_arg; +@@ -12250,7 +12286,7 @@ + while (curr_arg != NULL) + { + /* Skip implicitly typed dummy args here. */ +- if (curr_arg->sym->attr.implicit_type == 0) ++ if (curr_arg->sym && curr_arg->sym->attr.implicit_type == 0) + if (!gfc_verify_c_interop_param (curr_arg->sym)) + /* If something is found to fail, record the fact so we + can mark the symbol for the procedure as not being +@@ -13799,6 +13835,31 @@ + if (!success) + return false; + ++ /* Now add the caf token field, where needed. */ ++ if (flag_coarray != GFC_FCOARRAY_NONE ++ && !sym->attr.is_class && !sym->attr.vtype) ++ { ++ for (c = sym->components; c; c = c->next) ++ if (!c->attr.dimension && !c->attr.codimension ++ && (c->attr.allocatable || c->attr.pointer)) ++ { ++ char name[GFC_MAX_SYMBOL_LEN+9]; ++ gfc_component *token; ++ sprintf (name, "_caf_%s", c->name); ++ token = gfc_find_component (sym, name, true, true, NULL); ++ if (token == NULL) ++ { ++ if (!gfc_add_component (sym, name, &token)) ++ return false; ++ token->ts.type = BT_VOID; ++ token->ts.kind = gfc_default_integer_kind; ++ token->attr.access = ACCESS_PRIVATE; ++ token->attr.artificial = 1; ++ token->attr.caf_token = 1; ++ } ++ } ++ } ++ + check_defined_assignments (sym); + + if (!sym->attr.defined_assign_comp && super_type) +@@ -15827,7 +15888,7 @@ + + static bool + flag_fn_result_spec (gfc_expr *expr, +- gfc_symbol *sym ATTRIBUTE_UNUSED, ++ gfc_symbol *sym, + int *f ATTRIBUTE_UNUSED) + { + gfc_namespace *ns; +@@ -15840,6 +15901,13 @@ + if (!ns->parent) + break; + ++ if (sym == s) ++ { ++ gfc_error ("Self reference in character length expression " ++ "for %qs at %L", sym->name, &expr->where); ++ return true; ++ } ++ + if (!s->fn_result_spec + && s->attr.flavor == FL_PARAMETER) + { +@@ -15922,7 +15990,7 @@ + } + + if (sym->ts.type == BT_CHARACTER) +- gfc_traverse_expr (sym->ts.u.cl->length, NULL, flag_fn_result_spec, 0); ++ gfc_traverse_expr (sym->ts.u.cl->length, sym, flag_fn_result_spec, 0); + } + + +Index: gcc/fortran/trans-decl.c +=================================================================== +--- a/src/gcc/fortran/trans-decl.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-decl.c (.../branches/gcc-7-branch) +@@ -603,10 +603,12 @@ + function scope. */ + if (current_function_decl != NULL_TREE) + { +- if (sym->ns->proc_name->backend_decl == current_function_decl +- || sym->result == sym) ++ if (sym->ns->proc_name ++ && (sym->ns->proc_name->backend_decl == current_function_decl ++ || sym->result == sym)) + gfc_add_decl_to_function (decl); +- else if (sym->ns->proc_name->attr.flavor == FL_LABEL) ++ else if (sym->ns->proc_name ++ && sym->ns->proc_name->attr.flavor == FL_LABEL) + /* This is a BLOCK construct. */ + add_decl_as_local (decl); + else +@@ -698,7 +700,8 @@ + } + + /* Keep variables larger than max-stack-var-size off stack. */ +- if (!sym->ns->proc_name->attr.recursive && !sym->attr.automatic ++ if (!(sym->ns->proc_name && sym->ns->proc_name->attr.recursive) ++ && !sym->attr.automatic + && INTEGER_CST_P (DECL_SIZE_UNIT (decl)) + && !gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl)) + /* Put variable length auto array pointers always into stack. */ +@@ -4142,6 +4145,24 @@ + return tmp; + } + ++ ++/* Get the result expression for a procedure. */ ++ ++static tree ++get_proc_result (gfc_symbol* sym) ++{ ++ if (sym->attr.subroutine || sym == sym->result) ++ { ++ if (current_fake_result_decl != NULL) ++ return TREE_VALUE (current_fake_result_decl); ++ ++ return NULL_TREE; ++ } ++ ++ return sym->result->backend_decl; ++} ++ ++ + /* Generate function entry and exit code, and add it to the function body. + This includes: + Allocation and initialization of array variables. +@@ -4251,7 +4272,22 @@ + else + gcc_assert (flag_f2c && proc_sym->ts.type == BT_COMPLEX); + } ++ else if (proc_sym == proc_sym->result && IS_CLASS_ARRAY (proc_sym)) ++ { ++ /* Nullify explicit return class arrays on entry. */ ++ tree type; ++ tmp = get_proc_result (proc_sym); ++ if (tmp && GFC_CLASS_TYPE_P (TREE_TYPE (tmp))) ++ { ++ gfc_start_block (&init); ++ tmp = gfc_class_data_get (tmp); ++ type = TREE_TYPE (gfc_conv_descriptor_data_get (tmp)); ++ gfc_conv_descriptor_data_set (&init, tmp, build_int_cst (type, 0)); ++ gfc_add_init_cleanup (block, gfc_finish_block (&init), NULL_TREE); ++ } ++ } + ++ + /* Initialize the INTENT(OUT) derived type dummy arguments. This + should be done here so that the offsets and lbounds of arrays + are available. */ +@@ -5981,23 +6017,6 @@ + } + + +-/* Get the result expression for a procedure. */ +- +-static tree +-get_proc_result (gfc_symbol* sym) +-{ +- if (sym->attr.subroutine || sym == sym->result) +- { +- if (current_fake_result_decl != NULL) +- return TREE_VALUE (current_fake_result_decl); +- +- return NULL_TREE; +- } +- +- return sym->result->backend_decl; +-} +- +- + /* Generate an appropriate return-statement for a procedure. */ + + tree +Index: gcc/fortran/match.c +=================================================================== +--- a/src/gcc/fortran/match.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/match.c (.../branches/gcc-7-branch) +@@ -2001,12 +2001,17 @@ + { + match m; + locus old_locus; +- char name[GFC_MAX_SYMBOL_LEN + 1]; ++ char c, name[GFC_MAX_SYMBOL_LEN + 1]; + + gfc_clear_ts (ts); + gfc_gobble_whitespace (); + old_locus = gfc_current_locus; + ++ /* If c isn't [a-z], then return immediately. */ ++ c = gfc_peek_ascii_char (); ++ if (!ISALPHA(c)) ++ return MATCH_NO; ++ + if (match_derived_type_spec (ts) == MATCH_YES) + { + /* Enforce F03:C401. */ +@@ -2045,6 +2050,8 @@ + ts->type = BT_CHARACTER; + + m = gfc_match_char_spec (ts); ++ if (ts->u.cl && ts->u.cl->length) ++ gfc_resolve_expr (ts->u.cl->length); + + if (m == MATCH_NO) + m = MATCH_YES; +@@ -2056,7 +2063,7 @@ + or list item in a type-list of an OpenMP reduction clause. Need to + differentiate REAL([KIND]=scalar-int-initialization-expr) from + REAL(A,[KIND]) and REAL(KIND,A). Logically, when this code was +- written the use of LOGICAL as a type-spec or intrinsic subprogram ++ written the use of LOGICAL as a type-spec or intrinsic subprogram + was overlooked. */ + + m = gfc_match (" %n", name); +@@ -4404,8 +4411,8 @@ + && (tail->expr->ref->type == REF_COMPONENT + || tail->expr->ref->type == REF_ARRAY)); + if (sym && sym->ts.type == BT_CLASS) +- b2 = !(CLASS_DATA (sym)->attr.allocatable +- || CLASS_DATA (sym)->attr.class_pointer); ++ b2 = !(CLASS_DATA (sym) && (CLASS_DATA (sym)->attr.allocatable ++ || CLASS_DATA (sym)->attr.class_pointer)); + else + b2 = sym && !(sym->attr.allocatable || sym->attr.pointer + || sym->attr.proc_pointer); +@@ -5707,6 +5714,7 @@ + { + gfc_ref *ref; + gfc_symbol *assoc_sym; ++ int rank = 0; + + assoc_sym = associate->symtree->n.sym; + +@@ -5743,14 +5751,28 @@ + selector->rank = ref->u.ar.dimen; + else + selector->rank = 0; ++ ++ rank = selector->rank; + } + +- if (selector->rank) ++ if (rank) + { +- assoc_sym->attr.dimension = 1; +- assoc_sym->as = gfc_get_array_spec (); +- assoc_sym->as->rank = selector->rank; +- assoc_sym->as->type = AS_DEFERRED; ++ for (int i = 0; i < ref->u.ar.dimen + ref->u.ar.codimen; i++) ++ if (ref->u.ar.dimen_type[i] == DIMEN_ELEMENT ++ || (ref->u.ar.dimen_type[i] == DIMEN_UNKNOWN ++ && ref->u.ar.end[i] == NULL ++ && ref->u.ar.stride[i] == NULL)) ++ rank--; ++ ++ if (rank) ++ { ++ assoc_sym->attr.dimension = 1; ++ assoc_sym->as = gfc_get_array_spec (); ++ assoc_sym->as->rank = rank; ++ assoc_sym->as->type = AS_DEFERRED; ++ } ++ else ++ assoc_sym->as = NULL; + } + else + assoc_sym->as = NULL; +Index: gcc/fortran/trans-io.c +=================================================================== +--- a/src/gcc/fortran/trans-io.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-io.c (.../branches/gcc-7-branch) +@@ -639,12 +639,12 @@ + /* Don't evaluate the UNIT number multiple times. */ + se.expr = gfc_evaluate_now (se.expr, &se.pre); + +- /* UNIT numbers should be greater than zero. */ ++ /* UNIT numbers should be greater than the min. */ + i = gfc_validate_kind (BT_INTEGER, 4, false); ++ val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].pedantic_min_int, 4); + cond1 = build2_loc (input_location, LT_EXPR, logical_type_node, + se.expr, +- fold_convert (TREE_TYPE (se.expr), +- integer_zero_node)); ++ fold_convert (TREE_TYPE (se.expr), val)); + /* UNIT numbers should be less than the max. */ + val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].huge, 4); + cond2 = build2_loc (input_location, GT_EXPR, logical_type_node, +@@ -2214,26 +2214,10 @@ + bool formatted = false; + gfc_dt *dt = code->ext.dt; + +- if (dt) +- { +- char *fmt = NULL; ++ /* Determine when to use the formatted DTIO procedure. */ ++ if (dt && (dt->format_expr || dt->format_label)) ++ formatted = true; + +- if (dt->format_label == &format_asterisk) +- { +- /* List directed io must call the formatted DTIO procedure. */ +- formatted = true; +- } +- else if (dt->format_expr) +- fmt = gfc_widechar_to_char (dt->format_expr->value.character.string, +- -1); +- else if (dt->format_label) +- fmt = gfc_widechar_to_char (dt->format_label->format->value.character.string, +- -1); +- if (fmt && strtok (fmt, "DT") != NULL) +- formatted = true; +- +- } +- + if (ts->type == BT_CLASS) + derived = ts->u.derived->components->ts.u.derived; + else +@@ -2293,6 +2277,16 @@ + ts->kind = gfc_index_integer_kind; + } + ++ /* gfortran reaches here for "print *, c_loc(xxx)". */ ++ if (ts->type == BT_VOID ++ && code->expr1 && code->expr1->ts.type == BT_VOID ++ && code->expr1->symtree ++ && strcmp (code->expr1->symtree->name, "c_loc") == 0) ++ { ++ ts->type = BT_INTEGER; ++ ts->kind = gfc_index_integer_kind; ++ } ++ + kind = ts->kind; + function = NULL; + arg2 = NULL; +@@ -2442,8 +2436,7 @@ + { + /* Recurse into the elements of the derived type. */ + expr = gfc_evaluate_now (addr_expr, &se->pre); +- expr = build_fold_indirect_ref_loc (input_location, +- expr); ++ expr = build_fold_indirect_ref_loc (input_location, expr); + + /* Make sure that the derived type has been built. An external + function, if only referenced in an io statement, requires this +Index: gcc/fortran/arith.c +=================================================================== +--- a/src/gcc/fortran/arith.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/arith.c (.../branches/gcc-7-branch) +@@ -555,10 +555,10 @@ + val = ARITH_OK; + } + +- if (val != ARITH_OK) ++ if (val == ARITH_OK || val == ARITH_OVERFLOW) ++ *rp = r; ++ else + gfc_free_expr (r); +- else +- *rp = r; + + return val; + } +@@ -1603,9 +1603,13 @@ + if (rc != ARITH_OK) + { + gfc_error (gfc_arith_error (rc), &op1->where); ++ if (rc == ARITH_OVERFLOW) ++ goto done; + return NULL; + } + ++done: ++ + gfc_free_expr (op1); + gfc_free_expr (op2); + return result; +Index: gcc/fortran/check.c +=================================================================== +--- a/src/gcc/fortran/check.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/check.c (.../branches/gcc-7-branch) +@@ -3764,8 +3764,11 @@ + ? a->value.function.esym->result->attr.pointer + : a->symtree->n.sym->result->attr.pointer; + +- if (a->expr_type == EXPR_OP || a->expr_type == EXPR_NULL +- || a->expr_type == EXPR_COMPCALL|| a->expr_type == EXPR_PPC ++ if (a->expr_type == EXPR_OP ++ || a->expr_type == EXPR_NULL ++ || a->expr_type == EXPR_COMPCALL ++ || a->expr_type == EXPR_PPC ++ || a->ts.type == BT_PROCEDURE + || !is_variable) + { + gfc_error ("The argument of the RANK intrinsic at %L must be a data " +Index: gcc/fortran/primary.c +=================================================================== +--- a/src/gcc/fortran/primary.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/primary.c (.../branches/gcc-7-branch) +@@ -1247,8 +1247,22 @@ + + if (sym->attr.flavor != FL_PARAMETER) + { +- gfc_error ("Expected PARAMETER symbol in complex constant at %C"); +- return MATCH_ERROR; ++ /* Give the matcher for implied do-loops a chance to run. This yields ++ a much saner error message for "write(*,*) (i, i=1, 6" where the ++ right parenthesis is missing. */ ++ char c; ++ gfc_gobble_whitespace (); ++ c = gfc_peek_ascii_char (); ++ if (c == '=' || c == ',') ++ { ++ m = MATCH_NO; ++ } ++ else ++ { ++ gfc_error ("Expected PARAMETER symbol in complex constant at %C"); ++ m = MATCH_ERROR; ++ } ++ return m; + } + + if (!sym->value) +Index: gcc/fortran/trans-intrinsic.c +=================================================================== +--- a/src/gcc/fortran/trans-intrinsic.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-intrinsic.c (.../branches/gcc-7-branch) +@@ -1860,7 +1860,7 @@ + + lhs_expr = code->ext.actual->expr; + rhs_expr = code->ext.actual->next->expr; +- may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, false) == 0 ++ may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, true) == 0 + ? boolean_false_node : boolean_true_node; + gfc_init_block (&block); + +@@ -1906,34 +1906,124 @@ + } + else + { +- /* If has_vector, pass descriptor for whole array and the +- vector bounds separately. */ +- gfc_array_ref *ar, ar2; +- bool has_vector = false; ++ bool has_vector = gfc_has_vector_subscript (lhs_expr); + +- if (gfc_is_coindexed (lhs_expr) && gfc_has_vector_subscript (lhs_expr)) ++ if (gfc_is_coindexed (lhs_expr) || !has_vector) + { +- has_vector = true; +- ar = gfc_find_array_ref (lhs_expr); +- ar2 = *ar; +- memset (ar, '\0', sizeof (*ar)); +- ar->as = ar2.as; +- ar->type = AR_FULL; ++ /* If has_vector, pass descriptor for whole array and the ++ vector bounds separately. */ ++ gfc_array_ref *ar, ar2; ++ bool has_tmp_lhs_array = false; ++ if (has_vector) ++ { ++ has_tmp_lhs_array = true; ++ ar = gfc_find_array_ref (lhs_expr); ++ ar2 = *ar; ++ memset (ar, '\0', sizeof (*ar)); ++ ar->as = ar2.as; ++ ar->type = AR_FULL; ++ } ++ lhs_se.want_pointer = 1; ++ gfc_conv_expr_descriptor (&lhs_se, lhs_expr); ++ /* Using gfc_conv_expr_descriptor, we only get the descriptor, but ++ that has the wrong type if component references are done. */ ++ lhs_type = gfc_typenode_for_spec (&lhs_expr->ts); ++ tmp = build_fold_indirect_ref_loc (input_location, lhs_se.expr); ++ gfc_add_modify (&lhs_se.pre, gfc_conv_descriptor_dtype (tmp), ++ gfc_get_dtype_rank_type (has_vector ? ar2.dimen ++ : lhs_expr->rank, ++ lhs_type)); ++ if (has_tmp_lhs_array) ++ { ++ vec = conv_caf_vector_subscript (&block, lhs_se.expr, &ar2); ++ *ar = ar2; ++ } + } +- lhs_se.want_pointer = 1; +- gfc_conv_expr_descriptor (&lhs_se, lhs_expr); +- /* Using gfc_conv_expr_descriptor, we only get the descriptor, but that +- has the wrong type if component references are done. */ +- lhs_type = gfc_typenode_for_spec (&lhs_expr->ts); +- tmp = build_fold_indirect_ref_loc (input_location, lhs_se.expr); +- gfc_add_modify (&lhs_se.pre, gfc_conv_descriptor_dtype (tmp), +- gfc_get_dtype_rank_type (has_vector ? ar2.dimen +- : lhs_expr->rank, +- lhs_type)); +- if (has_vector) ++ else + { +- vec = conv_caf_vector_subscript (&block, lhs_se.expr, &ar2); +- *ar = ar2; ++ /* Special casing for arr1 ([...]) = arr2[...], i.e. caf_get to ++ indexed array expression. This is rewritten to: ++ ++ tmp_array = arr2[...] ++ arr1 ([...]) = tmp_array ++ ++ because using the standard gfc_conv_expr (lhs_expr) did the ++ assignment with lhs and rhs exchanged. */ ++ ++ gfc_ss *lss_for_tmparray, *lss_real; ++ gfc_loopinfo loop; ++ gfc_se se; ++ stmtblock_t body; ++ tree tmparr_desc, src; ++ tree index = gfc_index_zero_node; ++ tree stride = gfc_index_zero_node; ++ int n; ++ ++ /* Walk both sides of the assignment, once to get the shape of the ++ temporary array to create right. */ ++ lss_for_tmparray = gfc_walk_expr (lhs_expr); ++ /* And a second time to be able to create an assignment of the ++ temporary to the lhs_expr. gfc_trans_create_temp_array replaces ++ the tree in the descriptor with the one for the temporary ++ array. */ ++ lss_real = gfc_walk_expr (lhs_expr); ++ gfc_init_loopinfo (&loop); ++ gfc_add_ss_to_loop (&loop, lss_for_tmparray); ++ gfc_add_ss_to_loop (&loop, lss_real); ++ gfc_conv_ss_startstride (&loop); ++ gfc_conv_loop_setup (&loop, &lhs_expr->where); ++ lhs_type = gfc_typenode_for_spec (&lhs_expr->ts); ++ gfc_trans_create_temp_array (&lhs_se.pre, &lhs_se.post, ++ lss_for_tmparray, lhs_type, NULL_TREE, ++ false, true, false, ++ &lhs_expr->where); ++ tmparr_desc = lss_for_tmparray->info->data.array.descriptor; ++ gfc_start_scalarized_body (&loop, &body); ++ gfc_init_se (&se, NULL); ++ gfc_copy_loopinfo_to_se (&se, &loop); ++ se.ss = lss_real; ++ gfc_conv_expr (&se, lhs_expr); ++ gfc_add_block_to_block (&body, &se.pre); ++ ++ /* Walk over all indexes of the loop. */ ++ for (n = loop.dimen - 1; n > 0; --n) ++ { ++ tmp = loop.loopvar[n]; ++ tmp = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, tmp, loop.from[n]); ++ tmp = fold_build2_loc (input_location, PLUS_EXPR, ++ gfc_array_index_type, tmp, index); ++ ++ stride = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, ++ loop.to[n - 1], loop.from[n - 1]); ++ stride = fold_build2_loc (input_location, PLUS_EXPR, ++ gfc_array_index_type, ++ stride, gfc_index_one_node); ++ ++ index = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, tmp, stride); ++ } ++ ++ index = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, ++ index, loop.from[0]); ++ ++ index = fold_build2_loc (input_location, PLUS_EXPR, ++ gfc_array_index_type, ++ loop.loopvar[0], index); ++ ++ src = build_fold_indirect_ref (gfc_conv_array_data (tmparr_desc)); ++ src = gfc_build_array_ref (src, index, NULL); ++ /* Now create the assignment of lhs_expr = tmp_array. */ ++ gfc_add_modify (&body, se.expr, src); ++ gfc_add_block_to_block (&body, &se.post); ++ lhs_se.expr = gfc_build_addr_expr (NULL_TREE, tmparr_desc); ++ gfc_trans_scalarizing_loops (&loop, &body); ++ gfc_add_block_to_block (&loop.pre, &loop.post); ++ gfc_add_expr_to_block (&lhs_se.post, gfc_finish_block (&loop.pre)); ++ gfc_free_ss (lss_for_tmparray); ++ gfc_free_ss (lss_real); + } + } + +@@ -5478,6 +5568,22 @@ + } + + static void ++gfc_conv_intrinsic_shape (gfc_se *se, gfc_expr *expr) ++{ ++ gfc_actual_arglist *s, *k; ++ gfc_expr *e; ++ ++ /* Remove the KIND argument, if present. */ ++ s = expr->value.function.actual; ++ k = s->next; ++ e = k->expr; ++ gfc_free_expr (e); ++ k->expr = NULL; ++ ++ gfc_conv_intrinsic_funcall (se, expr); ++} ++ ++static void + gfc_conv_intrinsic_shift (gfc_se * se, gfc_expr * expr, bool right_shift, + bool arithmetic) + { +@@ -6601,7 +6707,7 @@ + gfc_add_class_array_ref (actual->expr); + + argse.data_not_needed = 1; +- if (gfc_is_alloc_class_array_function (actual->expr)) ++ if (gfc_is_class_array_function (actual->expr)) + { + /* For functions that return a class array conv_expr_descriptor is not + able to get the descriptor right. Therefore this special case. */ +@@ -8589,6 +8695,10 @@ + conv_generic_with_optional_char_arg (se, expr, 1, 3); + break; + ++ case GFC_ISYM_SHAPE: ++ gfc_conv_intrinsic_shape (se, expr); ++ break; ++ + default: + gfc_conv_intrinsic_funcall (se, expr); + break; +Index: gcc/fortran/simplify.c +=================================================================== +--- a/src/gcc/fortran/simplify.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/simplify.c (.../branches/gcc-7-branch) +@@ -25,6 +25,7 @@ + #include "gfortran.h" + #include "arith.h" + #include "intrinsic.h" ++#include "match.h" + #include "target-memory.h" + #include "constructor.h" + #include "version.h" /* For version_string. */ +@@ -4641,43 +4642,48 @@ + gfc_expr *result; + int kind; + +- if (a->expr_type != EXPR_CONSTANT || p->expr_type != EXPR_CONSTANT) ++ /* First check p. */ ++ if (p->expr_type != EXPR_CONSTANT) + return NULL; + +- kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind; +- result = gfc_get_constant_expr (a->ts.type, kind, &a->where); +- +- switch (a->ts.type) ++ /* p shall not be 0. */ ++ switch (p->ts.type) + { + case BT_INTEGER: + if (mpz_cmp_ui (p->value.integer, 0) == 0) + { +- /* Result is processor-dependent. */ +- gfc_error ("Second argument MOD at %L is zero", &a->where); +- gfc_free_expr (result); ++ gfc_error ("Argument %qs of MOD at %L shall not be zero", ++ "P", &p->where); + return &gfc_bad_expr; + } +- mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer); + break; +- + case BT_REAL: + if (mpfr_cmp_ui (p->value.real, 0) == 0) + { +- /* Result is processor-dependent. */ +- gfc_error ("Second argument of MOD at %L is zero", &p->where); +- gfc_free_expr (result); ++ gfc_error ("Argument %qs of MOD at %L shall not be zero", ++ "P", &p->where); + return &gfc_bad_expr; + } +- +- gfc_set_model_kind (kind); +- mpfr_fmod (result->value.real, a->value.real, p->value.real, +- GFC_RND_MODE); + break; +- + default: + gfc_internal_error ("gfc_simplify_mod(): Bad arguments"); + } + ++ if (a->expr_type != EXPR_CONSTANT) ++ return NULL; ++ ++ kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind; ++ result = gfc_get_constant_expr (a->ts.type, kind, &a->where); ++ ++ if (a->ts.type == BT_INTEGER) ++ mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer); ++ else ++ { ++ gfc_set_model_kind (kind); ++ mpfr_fmod (result->value.real, a->value.real, p->value.real, ++ GFC_RND_MODE); ++ } ++ + return range_check (result, "MOD"); + } + +@@ -6579,11 +6585,13 @@ + unsigned char *buffer; + size_t result_length; + ++ if (!gfc_is_constant_expr (source) || !gfc_is_constant_expr (size)) ++ return NULL; + +- if (!gfc_is_constant_expr (source) +- || (gfc_init_expr_flag && !gfc_is_constant_expr (mold)) +- || !gfc_is_constant_expr (size)) ++ if (!gfc_resolve_expr (mold)) + return NULL; ++ if (gfc_init_expr_flag && !gfc_is_constant_expr (mold)) ++ return NULL; + + if (!gfc_calculate_transfer_sizes (source, mold, size, &source_size, + &result_size, &result_length)) +@@ -7172,26 +7180,32 @@ + { + gfc_expr *tmp; + if (c->iterator == NULL) +- tmp = f (c->expr, kind); ++ { ++ tmp = f (c->expr, kind); ++ if (tmp == NULL) ++ { ++ gfc_free_expr (result); ++ return NULL; ++ } ++ ++ gfc_constructor_append_expr (&result->value.constructor, ++ tmp, &c->where); ++ } + else + { ++ gfc_constructor *n; + g = gfc_convert_constant (c->expr, type, kind); +- if (g == &gfc_bad_expr) ++ if (g == NULL || g == &gfc_bad_expr) + { + gfc_free_expr (result); + return g; + } +- tmp = g; ++ n = gfc_constructor_get (); ++ n->expr = g; ++ n->iterator = gfc_copy_iterator (c->iterator); ++ n->where = c->where; ++ gfc_constructor_append (&result->value.constructor, n); + } +- +- if (tmp == NULL) +- { +- gfc_free_expr (result); +- return NULL; +- } +- +- gfc_constructor_append_expr (&result->value.constructor, +- tmp, &c->where); + } + + break; +Index: gcc/tree-eh.h +=================================================================== +--- a/src/gcc/tree-eh.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-eh.h (.../branches/gcc-7-branch) +@@ -37,6 +37,7 @@ + bool, tree, bool *); + extern bool operation_could_trap_p (enum tree_code, bool, bool, tree); + extern bool tree_could_trap_p (tree); ++extern tree rewrite_to_non_trapping_overflow (tree); + extern bool stmt_could_throw_p (gimple *); + extern bool tree_could_throw_p (tree); + extern bool stmt_can_throw_external (gimple *); +Index: gcc/ipa-devirt.c +=================================================================== +--- a/src/gcc/ipa-devirt.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-devirt.c (.../branches/gcc-7-branch) +@@ -1577,8 +1577,15 @@ + "in another translation unit")); + return false; + } +- gcc_assert (DECL_NONADDRESSABLE_P (f1) +- == DECL_NONADDRESSABLE_P (f2)); ++ if (DECL_BIT_FIELD (f1) != DECL_BIT_FIELD (f2)) ++ { ++ warn_odr (t1, t2, f1, f2, warn, warned, ++ G_("one field is bitfield while other is not")); ++ return false; ++ } ++ else ++ gcc_assert (DECL_NONADDRESSABLE_P (f1) ++ == DECL_NONADDRESSABLE_P (f2)); + } + + /* If one aggregate has more fields than the other, they +Index: gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/configure.ac (.../branches/gcc-7-branch) +@@ -2946,6 +2946,14 @@ + [elf,2,12,0], [--fatal-warnings], + [.section .rodata.str, "aMS", %progbits, 1]) + fi ++case "$target" in ++ i?86-*-solaris2.10* | x86_64-*-solaris2.10*) ++ # SHF_MERGE support in Solaris 10/x86 ld is broken. ++ if test x"$gnu_ld" = xno; then ++ gcc_cv_as_shf_merge=no ++ fi ++ ;; ++esac + AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE, + [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`], + [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.]) +@@ -6292,8 +6300,10 @@ + + # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit + # of jit/jit-playback.c. ++gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"` ++echo "gcc_driver_version: ${gcc_driver_version}" + cat > gcc-driver-name.h <offset, DECL_SIZE_UNIT (field)); + rli->bitpos = bitsize_zero_node; + rli->offset_align = MIN (rli->offset_align, desired_align); ++ ++ if (!multiple_of_p (bitsizetype, DECL_SIZE (field), ++ bitsize_int (rli->offset_align))) ++ { ++ tree type = strip_array_types (TREE_TYPE (field)); ++ /* The above adjusts offset_align just based on the start of the ++ field. The field might not have a size that is a multiple of ++ that offset_align though. If the field is an array of fixed ++ sized elements, assume there can be any multiple of those ++ sizes. If it is a variable length aggregate or array of ++ variable length aggregates, assume worst that the end is ++ just BITS_PER_UNIT aligned. */ ++ if (TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST) ++ { ++ if (TREE_INT_CST_LOW (TYPE_SIZE (type))) ++ { ++ unsigned HOST_WIDE_INT sz ++ = least_bit_hwi (TREE_INT_CST_LOW (TYPE_SIZE (type))); ++ rli->offset_align = MIN (rli->offset_align, sz); ++ } ++ } ++ else ++ rli->offset_align = MIN (rli->offset_align, BITS_PER_UNIT); ++ } + } + else if (targetm.ms_bitfield_layout_p (rli->t)) + { +Index: gcc/genmatch.c +=================================================================== +--- a/src/gcc/genmatch.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/genmatch.c (.../branches/gcc-7-branch) +@@ -2054,7 +2054,11 @@ + if (c->what + && (e = dyn_cast (c->what))) + { +- info[where].expr_p = true; ++ /* Zero-operand expression captures like ADDR_EXPR@0 are ++ similar as predicates -- if they are not mentioned in ++ the result we have to force them to have no side-effects. */ ++ if (e->ops.length () != 0) ++ info[where].expr_p = true; + info[where].force_single_use |= e->force_single_use; + } + } +Index: gcc/alias.c +=================================================================== +--- a/src/gcc/alias.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/alias.c (.../branches/gcc-7-branch) +@@ -2997,7 +2997,8 @@ + int ret; + + gcc_checking_assert (x_canonicalized +- ? (x_addr != NULL_RTX && x_mode != VOIDmode) ++ ? (x_addr != NULL_RTX ++ && (x_mode != VOIDmode || GET_MODE (x) == VOIDmode)) + : (x_addr == NULL_RTX && x_mode == VOIDmode)); + + if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem)) +Index: gcc/tree-if-conv.c +=================================================================== +--- a/src/gcc/tree-if-conv.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-if-conv.c (.../branches/gcc-7-branch) +@@ -2248,10 +2248,7 @@ + TREE_OPERAND (cond, 0), + TREE_OPERAND (cond, 1)); + else +- { +- gcc_assert (TREE_CODE (cond) == SSA_NAME); +- mask = cond; +- } ++ mask = cond; + + if (swap) + { +Index: gcc/tree-vect-loop.c +=================================================================== +--- a/src/gcc/tree-vect-loop.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-vect-loop.c (.../branches/gcc-7-branch) +@@ -50,6 +50,7 @@ + #include "cgraph.h" + #include "tree-cfg.h" + #include "tree-if-conv.h" ++#include "tree-eh.h" + + /* Loop Vectorization Pass. + +@@ -1055,7 +1056,8 @@ + may_be_zero)); + else + niter = fold_build3 (COND_EXPR, TREE_TYPE (niter), may_be_zero, +- build_int_cst (TREE_TYPE (niter), 0), niter); ++ build_int_cst (TREE_TYPE (niter), 0), ++ rewrite_to_non_trapping_overflow (niter)); + + may_be_zero = NULL_TREE; + } +Index: gcc/loop-unroll.c +=================================================================== +--- a/src/gcc/loop-unroll.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/loop-unroll.c (.../branches/gcc-7-branch) +@@ -477,7 +477,7 @@ + + exit_mod = niter % (max_unroll + 1); + +- auto_sbitmap wont_exit (max_unroll + 1); ++ auto_sbitmap wont_exit (max_unroll + 2); + bitmap_ones (wont_exit); + + auto_vec remove_edges; +Index: gcc/tree-vect-data-refs.c +=================================================================== +--- a/src/gcc/tree-vect-data-refs.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-vect-data-refs.c (.../branches/gcc-7-branch) +@@ -195,6 +195,45 @@ + } + + ++/* Return true if we know that the order of vectorized STMT_A and ++ vectorized STMT_B will be the same as the order of STMT_A and STMT_B. ++ At least one of the statements is a write. */ ++ ++static bool ++vect_preserves_scalar_order_p (gimple *stmt_a, gimple *stmt_b) ++{ ++ stmt_vec_info stmtinfo_a = vinfo_for_stmt (stmt_a); ++ stmt_vec_info stmtinfo_b = vinfo_for_stmt (stmt_b); ++ ++ /* Single statements are always kept in their original order. */ ++ if (!STMT_VINFO_GROUPED_ACCESS (stmtinfo_a) ++ && !STMT_VINFO_GROUPED_ACCESS (stmtinfo_b)) ++ return true; ++ ++ /* STMT_A and STMT_B belong to overlapping groups. All loads in a ++ group are emitted at the position of the last scalar load and all ++ stores in a group are emitted at the position of the last scalar store. ++ Compute that position and check whether the resulting order matches ++ the current one. */ ++ gimple *last_a = GROUP_FIRST_ELEMENT (stmtinfo_a); ++ if (last_a) ++ for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_a)); s; ++ s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) ++ last_a = get_later_stmt (last_a, s); ++ else ++ last_a = stmt_a; ++ gimple *last_b = GROUP_FIRST_ELEMENT (stmtinfo_b); ++ if (last_b) ++ for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_b)); s; ++ s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) ++ last_b = get_later_stmt (last_b, s); ++ else ++ last_b = stmt_b; ++ return ((get_later_stmt (last_a, last_b) == last_a) ++ == (get_later_stmt (stmt_a, stmt_b) == stmt_a)); ++} ++ ++ + /* Function vect_analyze_data_ref_dependence. + + Return TRUE if there (might) exist a dependence between a memory-reference +@@ -378,22 +417,25 @@ + ... = a[i]; + a[i+1] = ...; + where loads from the group interleave with the store. */ +- if (STMT_VINFO_GROUPED_ACCESS (stmtinfo_a) +- || STMT_VINFO_GROUPED_ACCESS (stmtinfo_b)) ++ if (!vect_preserves_scalar_order_p (DR_STMT (dra), DR_STMT (drb))) + { +- gimple *earlier_stmt; +- earlier_stmt = get_earlier_stmt (DR_STMT (dra), DR_STMT (drb)); +- if (DR_IS_WRITE +- (STMT_VINFO_DATA_REF (vinfo_for_stmt (earlier_stmt)))) +- { +- if (dump_enabled_p ()) +- dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, +- "READ_WRITE dependence in interleaving." +- "\n"); +- return true; +- } ++ if (dump_enabled_p ()) ++ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, ++ "READ_WRITE dependence in interleaving." ++ "\n"); ++ return true; + } + ++ unsigned int step_prec = TYPE_PRECISION (TREE_TYPE (DR_STEP (dra))); ++ if (loop->safelen < 2 ++ && !expr_not_equal_to (DR_STEP (dra), wi::zero (step_prec))) ++ { ++ if (dump_enabled_p ()) ++ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, ++ "step could be zero.\n"); ++ return true; ++ } ++ + continue; + } + +@@ -2515,7 +2557,7 @@ + /* Allow references with zero step for outer loops marked + with pragma omp simd only - it guarantees absence of + loop-carried dependencies between inner loop iterations. */ +- if (!loop->force_vectorize) ++ if (!loop->force_vectorize || loop->safelen < 2) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, +Index: gcc/gimplify.c +=================================================================== +--- a/src/gcc/gimplify.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/gimplify.c (.../branches/gcc-7-branch) +@@ -1125,10 +1125,6 @@ + asan_poison_variable (tree decl, bool poison, gimple_stmt_iterator *it, + bool before) + { +- /* When within an OMP context, do not emit ASAN_MARK internal fns. */ +- if (gimplify_omp_ctxp) +- return; +- + tree unit_size = DECL_SIZE_UNIT (decl); + tree base = build_fold_addr_expr (decl); + +@@ -1640,7 +1636,8 @@ + && TREE_ADDRESSABLE (decl) + && !TREE_STATIC (decl) + && !DECL_HAS_VALUE_EXPR_P (decl) +- && dbg_cnt (asan_use_after_scope)) ++ && dbg_cnt (asan_use_after_scope) ++ && !gimplify_omp_ctxp) + { + asan_poisoned_variables->add (decl); + asan_poison_variable (decl, false, seq_p); +@@ -4684,7 +4681,7 @@ + objects. Initializers for such objects must explicitly set + every field that needs to be set. */ + cleared = false; +- else if (!complete_p && !CONSTRUCTOR_NO_CLEARING (ctor)) ++ else if (!complete_p) + /* If the constructor isn't complete, clear the whole object + beforehand, unless CONSTRUCTOR_NO_CLEARING is set on it. + +@@ -4693,7 +4690,7 @@ + we'd need to *find* the elements that are not present, and that + requires trickery to avoid quadratic compile-time behavior in + large cases or excessive memory use in small cases. */ +- cleared = true; ++ cleared = !CONSTRUCTOR_NO_CLEARING (ctor); + else if (num_ctor_elements - num_nonzero_elements + > CLEAR_RATIO (optimize_function_for_speed_p (cfun)) + && num_nonzero_elements < num_ctor_elements / 4) +@@ -5776,8 +5773,11 @@ + } + else + /* The temporary may not be an SSA name as later abnormal and EH +- control flow may invalidate use/def domination. */ +- val = get_initialized_tmp_var (val, pre_p, post_p, false); ++ control flow may invalidate use/def domination. When in SSA ++ form then assume there are no such issues and SAVE_EXPRs only ++ appear via GENERIC foldings. */ ++ val = get_initialized_tmp_var (val, pre_p, post_p, ++ gimple_in_ssa_p (cfun)); + + TREE_OPERAND (*expr_p, 0) = val; + SAVE_EXPR_RESOLVED_P (*expr_p) = 1; +@@ -6458,7 +6458,8 @@ + clobber = build2 (MODIFY_EXPR, TREE_TYPE (temp), temp, clobber); + gimple_push_cleanup (temp, clobber, false, pre_p, true); + } +- if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope)) ++ if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope) ++ && !gimplify_omp_ctxp) + { + tree asan_cleanup = build_asan_poison_call_expr (temp); + if (asan_cleanup) +@@ -9546,9 +9547,26 @@ + t = TREE_VEC_ELT (OMP_FOR_INIT (for_stmt), i); + if (!is_gimple_constant (TREE_OPERAND (t, 1))) + { ++ tree type = TREE_TYPE (TREE_OPERAND (t, 0)); + TREE_OPERAND (t, 1) + = get_initialized_tmp_var (TREE_OPERAND (t, 1), +- pre_p, NULL, false); ++ gimple_seq_empty_p (for_pre_body) ++ ? pre_p : &for_pre_body, NULL, ++ false); ++ /* Reference to pointer conversion is considered useless, ++ but is significant for firstprivate clause. Force it ++ here. */ ++ if (TREE_CODE (type) == POINTER_TYPE ++ && (TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 1))) ++ == REFERENCE_TYPE)) ++ { ++ tree v = create_tmp_var (TYPE_MAIN_VARIANT (type)); ++ tree m = build2 (INIT_EXPR, TREE_TYPE (v), v, ++ TREE_OPERAND (t, 1)); ++ gimplify_and_add (m, gimple_seq_empty_p (for_pre_body) ++ ? pre_p : &for_pre_body); ++ TREE_OPERAND (t, 1) = v; ++ } + tree c = build_omp_clause (input_location, + OMP_CLAUSE_FIRSTPRIVATE); + OMP_CLAUSE_DECL (c) = TREE_OPERAND (t, 1); +@@ -9560,11 +9578,26 @@ + t = TREE_VEC_ELT (OMP_FOR_COND (for_stmt), i); + if (!is_gimple_constant (TREE_OPERAND (t, 1))) + { ++ tree type = TREE_TYPE (TREE_OPERAND (t, 0)); + TREE_OPERAND (t, 1) + = get_initialized_tmp_var (TREE_OPERAND (t, 1), + gimple_seq_empty_p (for_pre_body) + ? pre_p : &for_pre_body, NULL, + false); ++ /* Reference to pointer conversion is considered useless, ++ but is significant for firstprivate clause. Force it ++ here. */ ++ if (TREE_CODE (type) == POINTER_TYPE ++ && (TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 1))) ++ == REFERENCE_TYPE)) ++ { ++ tree v = create_tmp_var (TYPE_MAIN_VARIANT (type)); ++ tree m = build2 (INIT_EXPR, TREE_TYPE (v), v, ++ TREE_OPERAND (t, 1)); ++ gimplify_and_add (m, gimple_seq_empty_p (for_pre_body) ++ ? pre_p : &for_pre_body); ++ TREE_OPERAND (t, 1) = v; ++ } + tree c = build_omp_clause (input_location, + OMP_CLAUSE_FIRSTPRIVATE); + OMP_CLAUSE_DECL (c) = TREE_OPERAND (t, 1); +Index: gcc/lra-constraints.c +=================================================================== +--- a/src/gcc/lra-constraints.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lra-constraints.c (.../branches/gcc-7-branch) +@@ -3724,7 +3724,13 @@ + + curr_insn_set = single_set (curr_insn); + if (curr_insn_set != NULL_RTX && simple_move_p ()) +- return false; ++ { ++ /* We assume that the corresponding insn alternative has no ++ earlier clobbers. If it is not the case, don't define move ++ cost equal to 2 for the corresponding register classes. */ ++ lra_set_used_insn_alternative (curr_insn, LRA_NON_CLOBBERED_ALT); ++ return false; ++ } + + no_input_reloads_p = no_output_reloads_p = false; + goal_alt_number = -1; +@@ -3832,7 +3838,7 @@ + if (change_p) + /* If we've changed the instruction then any alternative that + we chose previously may no longer be valid. */ +- lra_set_used_insn_alternative (curr_insn, -1); ++ lra_set_used_insn_alternative (curr_insn, LRA_UNKNOWN_ALT); + + if (! check_only_p && curr_insn_set != NULL_RTX + && check_and_process_move (&change_p, &sec_mem_p)) +@@ -3840,7 +3846,7 @@ + + try_swapped: + +- reused_alternative_num = check_only_p ? -1 : curr_id->used_insn_alternative; ++ reused_alternative_num = check_only_p ? LRA_UNKNOWN_ALT : curr_id->used_insn_alternative; + if (lra_dump_file != NULL && reused_alternative_num >= 0) + fprintf (lra_dump_file, "Reusing alternative %d for insn #%u\n", + reused_alternative_num, INSN_UID (curr_insn)); +@@ -6708,7 +6714,7 @@ + } + lra_push_insn_and_update_insn_regno_info (curr_insn); + lra_set_used_insn_alternative_by_uid +- (INSN_UID (curr_insn), -1); ++ (INSN_UID (curr_insn), LRA_UNKNOWN_ALT); + done_p = true; + if (lra_dump_file != NULL) + { +@@ -6747,7 +6753,7 @@ + constraints pass. */ + lra_push_insn_and_update_insn_regno_info (curr_insn); + lra_set_used_insn_alternative_by_uid +- (INSN_UID (curr_insn), -1); ++ (INSN_UID (curr_insn), LRA_UNKNOWN_ALT); + } + else if (restored_regs_p) + /* The instruction has been restored to the form that +Index: gcc/calls.c +=================================================================== +--- a/src/gcc/calls.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/calls.c (.../branches/gcc-7-branch) +@@ -1196,65 +1196,79 @@ + static tree + alloc_max_size (void) + { +- if (!alloc_object_size_limit) +- { +- alloc_object_size_limit = TYPE_MAX_VALUE (ssizetype); ++ if (alloc_object_size_limit) ++ return alloc_object_size_limit; + +- if (warn_alloc_size_limit) +- { +- char *end = NULL; +- errno = 0; +- unsigned HOST_WIDE_INT unit = 1; +- unsigned HOST_WIDE_INT limit +- = strtoull (warn_alloc_size_limit, &end, 10); ++ alloc_object_size_limit = TYPE_MAX_VALUE (ssizetype); + +- if (!errno) +- { +- if (end && *end) +- { +- /* Numeric option arguments are at most INT_MAX. Make it +- possible to specify a larger value by accepting common +- suffixes. */ +- if (!strcmp (end, "kB")) +- unit = 1000; +- else if (!strcasecmp (end, "KiB") || strcmp (end, "KB")) +- unit = 1024; +- else if (!strcmp (end, "MB")) +- unit = HOST_WIDE_INT_UC (1000) * 1000; +- else if (!strcasecmp (end, "MiB")) +- unit = HOST_WIDE_INT_UC (1024) * 1024; +- else if (!strcasecmp (end, "GB")) +- unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000; +- else if (!strcasecmp (end, "GiB")) +- unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024; +- else if (!strcasecmp (end, "TB")) +- unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000; +- else if (!strcasecmp (end, "TiB")) +- unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024; +- else if (!strcasecmp (end, "PB")) +- unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000; +- else if (!strcasecmp (end, "PiB")) +- unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024; +- else if (!strcasecmp (end, "EB")) +- unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000 +- * 1000; +- else if (!strcasecmp (end, "EiB")) +- unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024 +- * 1024; +- else +- unit = 0; +- } ++ if (!warn_alloc_size_limit) ++ return alloc_object_size_limit; + +- if (unit) +- { +- wide_int w = wi::uhwi (limit, HOST_BITS_PER_WIDE_INT + 64); +- w *= unit; +- if (wi::ltu_p (w, alloc_object_size_limit)) +- alloc_object_size_limit = wide_int_to_tree (ssizetype, w); +- } +- } ++ const char *optname = "-Walloc-size-larger-than="; ++ ++ char *end = NULL; ++ errno = 0; ++ unsigned HOST_WIDE_INT unit = 1; ++ unsigned HOST_WIDE_INT limit ++ = strtoull (warn_alloc_size_limit, &end, 10); ++ ++ /* If the value is too large to be represented use the maximum ++ representable value that strtoull sets limit to (setting ++ errno to ERANGE). */ ++ ++ if (end && *end) ++ { ++ /* Numeric option arguments are at most INT_MAX. Make it ++ possible to specify a larger value by accepting common ++ suffixes. */ ++ if (!strcmp (end, "kB")) ++ unit = 1000; ++ else if (!strcasecmp (end, "KiB") || !strcmp (end, "KB")) ++ unit = 1024; ++ else if (!strcmp (end, "MB")) ++ unit = HOST_WIDE_INT_UC (1000) * 1000; ++ else if (!strcasecmp (end, "MiB")) ++ unit = HOST_WIDE_INT_UC (1024) * 1024; ++ else if (!strcasecmp (end, "GB")) ++ unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000; ++ else if (!strcasecmp (end, "GiB")) ++ unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024; ++ else if (!strcasecmp (end, "TB")) ++ unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000; ++ else if (!strcasecmp (end, "TiB")) ++ unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024; ++ else if (!strcasecmp (end, "PB")) ++ unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000; ++ else if (!strcasecmp (end, "PiB")) ++ unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024; ++ else if (!strcasecmp (end, "EB")) ++ unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000 ++ * 1000; ++ else if (!strcasecmp (end, "EiB")) ++ unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024 ++ * 1024; ++ else ++ { ++ /* This could mean an unknown suffix or a bad prefix, like ++ "+-1". */ ++ warning_at (UNKNOWN_LOCATION, 0, ++ "invalid argument %qs to %qs", ++ warn_alloc_size_limit, optname); ++ /* Ignore the limit extracted by strtoull. */ ++ unit = 0; + } + } ++ ++ if (unit) ++ { ++ widest_int w = wi::mul (limit, unit); ++ if (w < wi::to_widest (alloc_object_size_limit)) ++ alloc_object_size_limit ++ = wide_int_to_tree (ptrdiff_type_node, w); ++ else ++ alloc_object_size_limit = build_all_ones_cst (size_type_node); ++ } ++ + return alloc_object_size_limit; + } + +@@ -3133,9 +3147,14 @@ + if (CALL_EXPR_RETURN_SLOT_OPT (exp) + && target + && MEM_P (target) +- && !(MEM_ALIGN (target) < TYPE_ALIGN (rettype) +- && SLOW_UNALIGNED_ACCESS (TYPE_MODE (rettype), +- MEM_ALIGN (target)))) ++ /* If rettype is addressable, we may not create a temporary. ++ If target is properly aligned at runtime and the compiler ++ just doesn't know about it, it will work fine, otherwise it ++ will be UB. */ ++ && (TREE_ADDRESSABLE (rettype) ++ || !(MEM_ALIGN (target) < TYPE_ALIGN (rettype) ++ && SLOW_UNALIGNED_ACCESS (TYPE_MODE (rettype), ++ MEM_ALIGN (target))))) + structure_value_addr = XEXP (target, 0); + else + { +Index: gcc/genmodes.c +=================================================================== +--- a/src/gcc/genmodes.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/genmodes.c (.../branches/gcc-7-branch) +@@ -116,6 +116,7 @@ + switch (c) + { + case MODE_INT: return MODE_COMPLEX_INT; ++ case MODE_PARTIAL_INT: return MODE_COMPLEX_INT; + case MODE_FLOAT: return MODE_COMPLEX_FLOAT; + default: + error ("no complex class for class %s", mode_class_names[c]); +Index: gcc/gimple-match-head.c +=================================================================== +--- a/src/gcc/gimple-match-head.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/gimple-match-head.c (.../branches/gcc-7-branch) +@@ -99,11 +99,27 @@ + } + } + ++ /* Limit recursion, there are cases like PR80887 and others, for ++ example when value-numbering presents us with unfolded expressions ++ that we are really not prepared to handle without eventual ++ oscillation like ((_50 + 0) + 8) where _50 gets mapped to _50 ++ itself as available expression. */ ++ static unsigned depth; ++ if (depth > 10) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "Aborting expression simplification due to " ++ "deep recursion\n"); ++ return false; ++ } ++ ++ ++depth; + code_helper res_code2; + tree res_ops2[3] = {}; + if (gimple_simplify (&res_code2, res_ops2, seq, valueize, + *res_code, type, res_ops[0])) + { ++ --depth; + *res_code = res_code2; + res_ops[0] = res_ops2[0]; + res_ops[1] = res_ops2[1]; +@@ -110,6 +126,7 @@ + res_ops[2] = res_ops2[2]; + return true; + } ++ --depth; + + return false; + } +@@ -159,11 +176,23 @@ + canonicalized = true; + } + ++ /* Limit recursion, see gimple_resimplify1. */ ++ static unsigned depth; ++ if (depth > 10) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "Aborting expression simplification due to " ++ "deep recursion\n"); ++ return false; ++ } ++ ++ ++depth; + code_helper res_code2; + tree res_ops2[3] = {}; + if (gimple_simplify (&res_code2, res_ops2, seq, valueize, + *res_code, type, res_ops[0], res_ops[1])) + { ++ --depth; + *res_code = res_code2; + res_ops[0] = res_ops2[0]; + res_ops[1] = res_ops2[1]; +@@ -170,6 +199,7 @@ + res_ops[2] = res_ops2[2]; + return true; + } ++ --depth; + + return canonicalized; + } +@@ -218,6 +248,17 @@ + canonicalized = true; + } + ++ /* Limit recursion, see gimple_resimplify1. */ ++ static unsigned depth; ++ if (depth > 10) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "Aborting expression simplification due to " ++ "deep recursion\n"); ++ return false; ++ } ++ ++ ++depth; + code_helper res_code2; + tree res_ops2[3] = {}; + if (gimple_simplify (&res_code2, res_ops2, seq, valueize, +@@ -224,6 +265,7 @@ + *res_code, type, + res_ops[0], res_ops[1], res_ops[2])) + { ++ --depth; + *res_code = res_code2; + res_ops[0] = res_ops2[0]; + res_ops[1] = res_ops2[1]; +@@ -230,6 +272,7 @@ + res_ops[2] = res_ops2[2]; + return true; + } ++ --depth; + + return canonicalized; + } +Index: gcc/lower-subreg.c +=================================================================== +--- a/src/gcc/lower-subreg.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lower-subreg.c (.../branches/gcc-7-branch) +@@ -490,7 +490,16 @@ + were the same number and size of pieces. Hopefully this + doesn't happen much. */ + +- if (outer_words == 1 && inner_words > 1) ++ if (outer_words == 1 ++ && inner_words > 1 ++ /* Don't allow to decompose floating point subregs of ++ multi-word pseudos if the floating point mode does ++ not have word size, because otherwise we'd generate ++ a subreg with that floating mode from a different ++ sized integral pseudo which is not allowed by ++ validate_subreg. */ ++ && (!FLOAT_MODE_P (GET_MODE (x)) ++ || outer_size == UNITS_PER_WORD)) + { + bitmap_set_bit (decomposable_context, regno); + iter.skip_subrtxes (); +Index: gcc/expmed.c +=================================================================== +--- a/src/gcc/expmed.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/expmed.c (.../branches/gcc-7-branch) +@@ -4314,6 +4314,11 @@ + HOST_WIDE_INT d = INTVAL (op1); + unsigned HOST_WIDE_INT abs_d; + ++ /* Not prepared to handle division/remainder by ++ 0xffffffffffffffff8000000000000000 etc. */ ++ if (d == HOST_WIDE_INT_MIN && size > HOST_BITS_PER_WIDE_INT) ++ break; ++ + /* Since d might be INT_MIN, we have to cast to + unsigned HOST_WIDE_INT before negating to avoid + undefined signed overflow. */ +@@ -4357,9 +4362,7 @@ + compute_mode) + != CODE_FOR_nothing))) + ; +- else if (EXACT_POWER_OF_2_OR_ZERO_P (abs_d) +- && (size <= HOST_BITS_PER_WIDE_INT +- || abs_d != (unsigned HOST_WIDE_INT) d)) ++ else if (EXACT_POWER_OF_2_OR_ZERO_P (abs_d)) + { + if (rem_flag) + { +@@ -5886,6 +5889,18 @@ + if (tem != 0) + return tem; + ++ /* If one operand is constant, make it the second one. Only do this ++ if the other operand is not constant as well. */ ++ ++ if (swap_commutative_operands_p (op0, op1)) ++ { ++ std::swap (op0, op1); ++ code = swap_condition (code); ++ } ++ ++ if (mode == VOIDmode) ++ mode = GET_MODE (op0); ++ + if (!target) + target = gen_reg_rtx (word_mode); + +Index: gcc/tree-dfa.c +=================================================================== +--- a/src/gcc/tree-dfa.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-dfa.c (.../branches/gcc-7-branch) +@@ -438,7 +438,7 @@ + referenced the last field of a struct or a union member + then we have to adjust maxsize by the padding at the end + of our field. */ +- if (seen_variable_array_ref && maxsize != -1) ++ if (seen_variable_array_ref) + { + tree stype = TREE_TYPE (TREE_OPERAND (exp, 0)); + tree next = DECL_CHAIN (field); +@@ -454,7 +454,7 @@ + || ssize == NULL + || TREE_CODE (ssize) != INTEGER_CST) + maxsize = -1; +- else ++ else if (maxsize != -1) + { + offset_int tem = (wi::to_offset (ssize) + - wi::to_offset (fsize)); +@@ -463,6 +463,11 @@ + maxsize += tem; + } + } ++ /* An component ref with an adjacent field up in the ++ structure hierarchy constrains the size of any variable ++ array ref lower in the access hierarchy. */ ++ else ++ seen_variable_array_ref = false; + } + } + else +@@ -617,7 +622,9 @@ + + if (DECL_P (exp)) + { +- if (flag_unconstrained_commons && VAR_P (exp) && DECL_COMMON (exp)) ++ if (VAR_P (exp) ++ && ((flag_unconstrained_commons && DECL_COMMON (exp)) ++ || (DECL_EXTERNAL (exp) && seen_variable_array_ref))) + { + tree sz_tree = TYPE_SIZE (TREE_TYPE (exp)); + /* If size is unknown, or we have read to the end, assume there +Index: gcc/emit-rtl.c +=================================================================== +--- a/src/gcc/emit-rtl.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/emit-rtl.c (.../branches/gcc-7-branch) +@@ -5851,7 +5851,7 @@ + attrs = ggc_cleared_alloc (); + attrs->align = BITS_PER_UNIT; + attrs->addrspace = ADDR_SPACE_GENERIC; +- if (mode != BLKmode) ++ if (mode != BLKmode && mode != VOIDmode) + { + attrs->size_known_p = true; + attrs->size = GET_MODE_SIZE (mode); +Index: gcc/cfgexpand.c +=================================================================== +--- a/src/gcc/cfgexpand.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cfgexpand.c (.../branches/gcc-7-branch) +@@ -1252,10 +1252,10 @@ + allocate it, which means that in-frame portion is just a + pointer. ??? We've got a pseudo for sure here, do we + actually dynamically allocate its spilling area if needed? +- ??? Isn't it a problem when POINTER_SIZE also exceeds +- MAX_SUPPORTED_STACK_ALIGNMENT, as on cris and lm32? */ ++ ??? Isn't it a problem when Pmode alignment also exceeds ++ MAX_SUPPORTED_STACK_ALIGNMENT, as can happen on cris and lm32? */ + if (align > MAX_SUPPORTED_STACK_ALIGNMENT) +- align = POINTER_SIZE; ++ align = GET_MODE_ALIGNMENT (Pmode); + + record_alignment_for_reg_var (align); + } +@@ -1375,7 +1375,7 @@ + /* If the variable alignment is very large we'll dynamicaly allocate + it, which means that in-frame portion is just a pointer. */ + if (align > MAX_SUPPORTED_STACK_ALIGNMENT) +- align = POINTER_SIZE; ++ align = GET_MODE_ALIGNMENT (Pmode); + + record_alignment_for_reg_var (align); + +@@ -1592,7 +1592,7 @@ + /* If the variable alignment is very large we'll dynamicaly allocate + it, which means that in-frame portion is just a pointer. */ + if (align > MAX_SUPPORTED_STACK_ALIGNMENT) +- align = POINTER_SIZE; ++ align = GET_MODE_ALIGNMENT (Pmode); + } + + record_alignment_for_reg_var (align); +@@ -2997,14 +2997,14 @@ + + generating_concat_p = 0; + +- if ((TREE_CODE (val) == INDIRECT_REF +- && allows_mem) ++ if ((TREE_CODE (val) == INDIRECT_REF && allows_mem) + || (DECL_P (val) + && (allows_mem || REG_P (DECL_RTL (val))) + && ! (REG_P (DECL_RTL (val)) + && GET_MODE (DECL_RTL (val)) != TYPE_MODE (type))) + || ! allows_reg +- || is_inout) ++ || is_inout ++ || TREE_ADDRESSABLE (type)) + { + op = expand_expr (val, NULL_RTX, VOIDmode, + !allows_reg ? EXPAND_MEMORY : EXPAND_WRITE); +@@ -3013,7 +3013,7 @@ + + if (! allows_reg && !MEM_P (op)) + error ("output number %d not directly addressable", i); +- if ((! allows_mem && MEM_P (op)) ++ if ((! allows_mem && MEM_P (op) && GET_MODE (op) != BLKmode) + || GET_CODE (op) == CONCAT) + { + rtx old_op = op; +@@ -6466,6 +6466,14 @@ + find_many_sub_basic_blocks (blocks); + purge_all_dead_edges (); + ++ /* After initial rtl generation, call back to finish generating ++ exception support code. We need to do this before cleaning up ++ the CFG as the code does not expect dead landing pads. */ ++ if (fun->eh->region_tree != NULL) ++ finish_eh_generation (); ++ ++ /* Call expand_stack_alignment after finishing all ++ updates to crtl->preferred_stack_boundary. */ + expand_stack_alignment (); + + /* Fixup REG_EQUIV notes in the prologue if there are tailcalls in this +@@ -6473,12 +6481,6 @@ + if (crtl->tail_call_emit) + fixup_tail_calls (); + +- /* After initial rtl generation, call back to finish generating +- exception support code. We need to do this before cleaning up +- the CFG as the code does not expect dead landing pads. */ +- if (fun->eh->region_tree != NULL) +- finish_eh_generation (); +- + /* Remove unreachable blocks, otherwise we cannot compute dominators + which are needed for loop state verification. As a side-effect + this also compacts blocks. +Index: gcc/simplify-rtx.c +=================================================================== +--- a/src/gcc/simplify-rtx.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/simplify-rtx.c (.../branches/gcc-7-branch) +@@ -3299,7 +3299,8 @@ + if (CONST_INT_P (trueop1) + && exact_log2 (UINTVAL (trueop1)) > 0) + return simplify_gen_binary (AND, mode, op0, +- gen_int_mode (INTVAL (op1) - 1, mode)); ++ gen_int_mode (UINTVAL (trueop1) - 1, ++ mode)); + break; + + case MOD: +Index: gcc/tree-ssa-pre.c +=================================================================== +--- a/src/gcc/tree-ssa-pre.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-pre.c (.../branches/gcc-7-branch) +@@ -2787,11 +2787,7 @@ + unsigned int operand = 1; + vn_reference_op_t currop = &ref->operands[0]; + tree sc = NULL_TREE; +- tree fn; +- if (TREE_CODE (currop->op0) == FUNCTION_DECL) +- fn = currop->op0; +- else +- fn = find_or_generate_expression (block, currop->op0, stmts); ++ tree fn = find_or_generate_expression (block, currop->op0, stmts); + if (!fn) + return NULL_TREE; + if (currop->op1) +@@ -2809,14 +2805,27 @@ + return NULL_TREE; + args.quick_push (arg); + } +- gcall *call +- = gimple_build_call_vec ((TREE_CODE (fn) == FUNCTION_DECL +- ? build_fold_addr_expr (fn) : fn), args); ++ gcall *call = gimple_build_call_vec (fn, args); + gimple_call_set_with_bounds (call, currop->with_bounds); + if (sc) + gimple_call_set_chain (call, sc); + tree forcedname = make_ssa_name (currop->type); + gimple_call_set_lhs (call, forcedname); ++ /* There's no CCP pass after PRE which would re-compute alignment ++ information so make sure we re-materialize this here. */ ++ if (gimple_call_builtin_p (call, BUILT_IN_ASSUME_ALIGNED) ++ && args.length () - 2 <= 1 ++ && tree_fits_uhwi_p (args[1]) ++ && (args.length () != 3 || tree_fits_uhwi_p (args[2]))) ++ { ++ unsigned HOST_WIDE_INT halign = tree_to_uhwi (args[1]); ++ unsigned HOST_WIDE_INT hmisalign ++ = args.length () == 3 ? tree_to_uhwi (args[2]) : 0; ++ if ((halign & (halign - 1)) == 0 ++ && (hmisalign & ~(halign - 1)) == 0) ++ set_ptr_info_alignment (get_ptr_info (forcedname), ++ halign, hmisalign); ++ } + gimple_set_vuse (call, BB_LIVE_VOP_ON_EXIT (block)); + gimple_seq_add_stmt_without_update (&forced_stmts, call); + folded = forcedname; +Index: gcc/graphite.h +=================================================================== +--- a/src/gcc/graphite.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/graphite.h (.../branches/gcc-7-branch) +@@ -37,6 +37,8 @@ + #include + #include + #include ++#include ++#include + + typedef struct poly_dr *poly_dr_p; + +Index: gcc/lto/lto.c +=================================================================== +--- a/src/gcc/lto/lto.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lto/lto.c (.../branches/gcc-7-branch) +@@ -53,6 +53,7 @@ + #include "lto-symtab.h" + #include "stringpool.h" + #include "fold-const.h" ++#include "builtins.h" + + + /* Number of parallel tasks to run, -1 if we want to use GNU Make jobserver. */ +@@ -829,12 +830,19 @@ + register_resolution (struct lto_file_decl_data *file_data, tree decl, + enum ld_plugin_symbol_resolution resolution) + { ++ bool existed; + if (resolution == LDPR_UNKNOWN) + return; + if (!file_data->resolution_map) + file_data->resolution_map + = new hash_map; +- file_data->resolution_map->put (decl, resolution); ++ ld_plugin_symbol_resolution_t &res ++ = file_data->resolution_map->get_or_insert (decl, &existed); ++ if (!existed ++ || resolution == LDPR_PREVAILING_DEF_IRONLY ++ || resolution == LDPR_PREVAILING_DEF ++ || resolution == LDPR_PREVAILING_DEF_IRONLY_EXP) ++ res = resolution; + } + + /* Register DECL with the global symbol table and change its +@@ -877,7 +885,19 @@ + decl, get_resolution (data_in, ix)); + } + ++/* Check if T is a decl and needs register its resolution info. */ + ++static void ++lto_maybe_register_decl (struct data_in *data_in, tree t, unsigned ix) ++{ ++ if (TREE_CODE (t) == VAR_DECL) ++ lto_register_var_decl_in_symtab (data_in, t, ix); ++ else if (TREE_CODE (t) == FUNCTION_DECL ++ && !DECL_BUILT_IN (t)) ++ lto_register_function_decl_in_symtab (data_in, t, ix); ++} ++ ++ + /* For the type T re-materialize it in the type variant list and + the pointer/reference-to chains. */ + +@@ -1607,7 +1627,10 @@ + /* Fixup the streamer cache with the prevailing nodes according + to the tree node mapping computed by compare_tree_sccs. */ + if (len == 1) +- streamer_tree_cache_replace_tree (cache, pscc->entries[0], from); ++ { ++ lto_maybe_register_decl (data_in, pscc->entries[0], from); ++ streamer_tree_cache_replace_tree (cache, pscc->entries[0], from); ++ } + else + { + tree *map2 = XALLOCAVEC (tree, 2 * len); +@@ -1619,8 +1642,12 @@ + qsort (map2, len, 2 * sizeof (tree), cmp_tree); + qsort (map, len, 2 * sizeof (tree), cmp_tree); + for (unsigned i = 0; i < len; ++i) +- streamer_tree_cache_replace_tree (cache, map[2*i], +- (uintptr_t)map2[2*i]); ++ { ++ lto_maybe_register_decl (data_in, map[2*i], ++ (uintptr_t)map2[2*i]); ++ streamer_tree_cache_replace_tree (cache, map[2*i], ++ (uintptr_t)map2[2*i]); ++ } + } + + /* Free the tree nodes from the read SCC. */ +@@ -1759,13 +1786,7 @@ + } + if (!flag_ltrans) + { +- /* Register variables and functions with the +- symbol table. */ +- if (TREE_CODE (t) == VAR_DECL) +- lto_register_var_decl_in_symtab (data_in, t, from + i); +- else if (TREE_CODE (t) == FUNCTION_DECL +- && !DECL_BUILT_IN (t)) +- lto_register_function_decl_in_symtab (data_in, t, from + i); ++ lto_maybe_register_decl (data_in, t, from + i); + /* Scan the tree for references to global functions or + variables and record those for later fixup. */ + if (mentions_vars_p (t)) +@@ -2858,13 +2879,25 @@ + + /* Store resolutions into the symbol table. */ + +- ld_plugin_symbol_resolution_t *res; + FOR_EACH_SYMBOL (snode) +- if (snode->real_symbol_p () +- && snode->lto_file_data +- && snode->lto_file_data->resolution_map +- && (res = snode->lto_file_data->resolution_map->get (snode->decl))) +- snode->resolution = *res; ++ if (snode->externally_visible && snode->real_symbol_p () ++ && snode->lto_file_data && snode->lto_file_data->resolution_map ++ && !is_builtin_fn (snode->decl) ++ && !(VAR_P (snode->decl) && DECL_HARD_REGISTER (snode->decl))) ++ { ++ ld_plugin_symbol_resolution_t *res; ++ ++ res = snode->lto_file_data->resolution_map->get (snode->decl); ++ if (!res || *res == LDPR_UNKNOWN) ++ { ++ if (snode->output_to_lto_symbol_table_p ()) ++ fatal_error (input_location, "missing resolution data for %s", ++ IDENTIFIER_POINTER ++ (DECL_ASSEMBLER_NAME (snode->decl))); ++ } ++ else ++ snode->resolution = *res; ++ } + for (i = 0; all_file_decl_data[i]; i++) + if (all_file_decl_data[i]->resolution_map) + { +Index: gcc/lto/lto-partition.c +=================================================================== +--- a/src/gcc/lto/lto-partition.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lto/lto-partition.c (.../branches/gcc-7-branch) +@@ -756,7 +756,8 @@ + if (npartitions < n_lto_partitions) + partition_size = total_size / (n_lto_partitions - npartitions); + else +- partition_size = INT_MAX; ++ /* Watch for overflow. */ ++ partition_size = INT_MAX / 16; + + if (partition_size < PARAM_VALUE (MIN_PARTITION_SIZE)) + partition_size = PARAM_VALUE (MIN_PARTITION_SIZE); +Index: gcc/lto/ChangeLog +=================================================================== +--- a/src/gcc/lto/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lto/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,102 @@ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-19 Martin Liska ++ ++ * lto-symtab.c (lto_symtab_resolve_symbols): Do not bail out ++ for multiple PREVAILING_DEF_IRONLY for common symbols. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-10 Martin Liska ++ ++ PR lto/85248 ++ * lto-symtab.c (lto_symtab_merge_p): Do not check for ++ TREE_VALUES of error attributes. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-10 Richard Biener ++ Martin Liska ++ ++ PR lto/85248 ++ * lto-symtab.c (lto_symtab_merge_p): Handle noreturn attribute. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-01-23 Martin Liska ++ ++ PR lto/81440 ++ * lto-symtab.c (lto_symtab_merge): Handle and do not warn about ++ trailing arrays at the end of a struct. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-08 Jan Hubicka ++ ++ * lto-partition.c (lto_balanced_map): Watch overflow. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-08 Jan Hubicka ++ ++ PR ipa/81360 ++ * lto.c (unify_scc): Register prevailing trees, not trees to be freed. ++ (read_cgraph_and_symbols): Use ++ symtab_node::output_to_lto_symbol_table_p. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-01-30 Jan Hubicka ++ ++ * lto.c (register_resolution): Remove forgotten sanity check. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-01-30 Jan Hubicka ++ ++ PR lto/81004 ++ * lto.c: Include builtins.h ++ (register_resolution): Merge resolutions in case trees was ++ merged across units. ++ (lto_maybe_register_decl): Break out from ... ++ (lto_read_decls): ... here. ++ (unify_scc): Also register decls here. ++ (read_cgraph_and_symbols): Sanity check that all resolutions was ++ read. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-02-02 Eric Botcazou ++ ++ PR lto/83954 ++ * lto-symtab.c (warn_type_compatibility_p): Do not recurse into the ++ component type of array types with non-aliased component. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2018-01-30 Jan Hubicka ++ ++ PR lto/83954 ++ * lto-symtab.c (warn_type_compatibility_p): Silence false positive ++ for type match warning on arrays of pointers. ++ ++2018-03-06 Martin Liska ++ ++ Backport from mainline ++ 2017-10-13 Jan Hubicka ++ ++ * lto-lang.c (lto_post_options): Clean shlib flag when not doing PIC. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: gcc/lto/lto-lang.c +=================================================================== +--- a/src/gcc/lto/lto-lang.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lto/lto-lang.c (.../branches/gcc-7-branch) +@@ -840,11 +840,13 @@ + flag_pie is 2. */ + flag_pie = MAX (flag_pie, flag_pic); + flag_pic = flag_pie; ++ flag_shlib = 0; + break; + + case LTO_LINKER_OUTPUT_EXEC: /* Normal executable */ + flag_pic = 0; + flag_pie = 0; ++ flag_shlib = 0; + break; + + case LTO_LINKER_OUTPUT_UNKNOWN: +Index: gcc/lto/lto-symtab.c +=================================================================== +--- a/src/gcc/lto/lto-symtab.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/lto/lto-symtab.c (.../branches/gcc-7-branch) +@@ -283,11 +283,25 @@ + alias_set_type set1 = get_alias_set (type); + alias_set_type set2 = get_alias_set (prevailing_type); + +- if (set1 && set2 && set1 != set2 +- && (!POINTER_TYPE_P (type) || !POINTER_TYPE_P (prevailing_type) ++ if (set1 && set2 && set1 != set2) ++ { ++ tree t1 = type, t2 = prevailing_type; ++ ++ /* Alias sets of arrays with aliased components are the same as alias ++ sets of the inner types. */ ++ while (TREE_CODE (t1) == ARRAY_TYPE ++ && !TYPE_NONALIASED_COMPONENT (t1) ++ && TREE_CODE (t2) == ARRAY_TYPE ++ && !TYPE_NONALIASED_COMPONENT (t2)) ++ { ++ t1 = TREE_TYPE (t1); ++ t2 = TREE_TYPE (t2); ++ } ++ if ((!POINTER_TYPE_P (t1) || !POINTER_TYPE_P (t2)) + || (set1 != TYPE_ALIAS_SET (ptr_type_node) +- && set2 != TYPE_ALIAS_SET (ptr_type_node)))) +- lev |= 5; ++ && set2 != TYPE_ALIAS_SET (ptr_type_node))) ++ lev |= 5; ++ } + } + + return lev; +@@ -351,7 +365,22 @@ + return false; + + if (DECL_SIZE (decl) && DECL_SIZE (prevailing_decl) +- && !tree_int_cst_equal (DECL_SIZE (decl), DECL_SIZE (prevailing_decl)) ++ && !tree_int_cst_equal (DECL_SIZE (decl), DECL_SIZE (prevailing_decl))) ++ { ++ if (!DECL_COMMON (decl) && !DECL_EXTERNAL (decl)) ++ return false; ++ ++ tree type = TREE_TYPE (decl); ++ ++ /* For record type, check for array at the end of the structure. */ ++ if (TREE_CODE (type) == RECORD_TYPE) ++ { ++ tree field = TYPE_FIELDS (type); ++ while (DECL_CHAIN (field) != NULL_TREE) ++ field = DECL_CHAIN (field); ++ ++ return TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE; ++ } + /* As a special case do not warn about merging + int a[]; + and +@@ -358,11 +387,9 @@ + int a[]={1,2,3}; + here the first declaration is COMMON + and sizeof(a) == sizeof (int). */ +- && ((!DECL_COMMON (decl) && !DECL_EXTERNAL (decl)) +- || TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE +- || TYPE_SIZE (TREE_TYPE (decl)) +- != TYPE_SIZE (TREE_TYPE (TREE_TYPE (decl))))) +- return false; ++ else if (TREE_CODE (type) == ARRAY_TYPE) ++ return (TYPE_SIZE (decl) == TYPE_SIZE (TREE_TYPE (type))); ++ } + + return true; + } +@@ -438,9 +465,14 @@ + /* If the chain is already resolved there is nothing else to do. */ + if (prevailing) + { +- /* Assert it's the only one. */ ++ /* Assert it's the only one. ++ GCC should silence multiple PREVAILING_DEF_IRONLY defs error ++ on COMMON symbols since it isn't error. ++ See: https://sourceware.org/bugzilla/show_bug.cgi?id=23079. */ + for (e = prevailing->next_sharing_asm_name; e; e = e->next_sharing_asm_name) + if (lto_symtab_symbol_p (e) ++ && !DECL_COMMON (prevailing->decl) ++ && !DECL_COMMON (e->decl) + && (e->resolution == LDPR_PREVAILING_DEF_IRONLY + || e->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP + || e->resolution == LDPR_PREVAILING_DEF)) +@@ -544,6 +576,9 @@ + return false; + } + } ++ ++ /* FIXME: after MPX is removed, use flags_from_decl_or_type ++ function instead. PR lto/85248. */ + if (DECL_ATTRIBUTES (prevailing) != DECL_ATTRIBUTES (decl)) + { + tree prev_attr = lookup_attribute ("error", DECL_ATTRIBUTES (prevailing)); +@@ -571,6 +606,16 @@ + "warning attribute mismatch\n"); + return false; + } ++ ++ prev_attr = lookup_attribute ("noreturn", DECL_ATTRIBUTES (prevailing)); ++ attr = lookup_attribute ("noreturn", DECL_ATTRIBUTES (decl)); ++ if ((prev_attr == NULL) != (attr == NULL)) ++ { ++ if (symtab->dump_file) ++ fprintf (symtab->dump_file, "Not merging decls; " ++ "noreturn attribute mismatch\n"); ++ return false; ++ } + } + return true; + } +Index: gcc/ipa-prop.c +=================================================================== +--- a/src/gcc/ipa-prop.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-prop.c (.../branches/gcc-7-branch) +@@ -111,12 +111,13 @@ + typedef value_range *compare_type; + static hashval_t + hash (const value_range *p) +- { +- gcc_checking_assert (!p->equiv); +- hashval_t t = (hashval_t) p->type; +- t = iterative_hash_expr (p->min, t); +- return iterative_hash_expr (p->max, t); +- } ++ { ++ gcc_checking_assert (!p->equiv); ++ inchash::hash hstate (p->type); ++ hstate.add_ptr (p->min); ++ hstate.add_ptr (p->max); ++ return hstate.end (); ++ } + static bool + equal (const value_range *a, const value_range *b) + { +@@ -4352,8 +4353,7 @@ + + gcc_checking_assert (adj->offset % BITS_PER_UNIT == 0); + base = gimple_call_arg (stmt, adj->base_index); +- loc = DECL_P (base) ? DECL_SOURCE_LOCATION (base) +- : EXPR_LOCATION (base); ++ loc = gimple_location (stmt); + + if (TREE_CODE (base) != ADDR_EXPR + && POINTER_TYPE_P (TREE_TYPE (base))) +@@ -4445,6 +4445,7 @@ + else + expr = create_tmp_reg (TREE_TYPE (expr)); + gimple_assign_set_lhs (tem, expr); ++ gimple_set_location (tem, loc); + gsi_insert_before (&gsi, tem, GSI_SAME_STMT); + } + } +Index: gcc/gimple-ssa-store-merging.c +=================================================================== +--- a/src/gcc/gimple-ssa-store-merging.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/gimple-ssa-store-merging.c (.../branches/gcc-7-branch) +@@ -812,12 +812,14 @@ + { + struct store_immediate_info *info; + unsigned int i; ++ tree store_lhs ++ = gimple_store_p (stmt) ? gimple_get_lhs (stmt) : NULL_TREE; + FOR_EACH_VEC_ELT ((*chain_info)->m_store_info, i, info) + { +- if (ref_maybe_used_by_stmt_p (stmt, +- gimple_assign_lhs (info->stmt)) +- || stmt_may_clobber_ref_p (stmt, +- gimple_assign_lhs (info->stmt))) ++ tree lhs = gimple_assign_lhs (info->stmt); ++ if (ref_maybe_used_by_stmt_p (stmt, lhs) ++ || stmt_may_clobber_ref_p (stmt, lhs) ++ || (store_lhs && refs_output_dependent_p (store_lhs, lhs))) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + { +Index: gcc/varasm.c +=================================================================== +--- a/src/gcc/varasm.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/varasm.c (.../branches/gcc-7-branch) +@@ -1241,10 +1241,9 @@ + if (!VAR_P (decl) && TREE_CODE (decl) != CONST_DECL) + return false; + +- /* Detect decls created by dw2_force_const_mem. Such decls are +- special because DECL_INITIAL doesn't specify the decl's true value. +- dw2_output_indirect_constants will instead call assemble_variable +- with dont_output_data set to 1 and then print the contents itself. */ ++ /* DECL_INITIAL (decl) set to decl is a hack used for some decls that ++ are never used from code directly and we never want object block handling ++ for those. */ + if (DECL_INITIAL (decl) == decl) + return false; + +Index: gcc/sched-deps.c +=================================================================== +--- a/src/gcc/sched-deps.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/sched-deps.c (.../branches/gcc-7-branch) +@@ -2851,9 +2851,11 @@ + { + rtx insn_set = single_set (insn); + ++ if (!insn_set) ++ return; ++ + prev = prev_nonnote_nondebug_insn (insn); + if (!prev +- || !insn_set + || !single_set (prev)) + return; + +@@ -2920,6 +2922,8 @@ + = alloc_INSN_LIST (insn, deps->sched_before_next_jump); + + /* Make sure epilogue insn is scheduled after preceding jumps. */ ++ add_dependence_list (insn, deps->last_pending_memory_flush, 1, ++ REG_DEP_ANTI, true); + add_dependence_list (insn, deps->pending_jump_insns, 1, REG_DEP_ANTI, + true); + } +Index: gcc/tree-ssa.c +=================================================================== +--- a/src/gcc/tree-ssa.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa.c (.../branches/gcc-7-branch) +@@ -1423,7 +1423,8 @@ + if (! DECL_P (decl)) + return NULL_TREE; + if (! is_gimple_reg_type (TREE_TYPE (base)) +- || VOID_TYPE_P (TREE_TYPE (base))) ++ || VOID_TYPE_P (TREE_TYPE (base)) ++ || TREE_THIS_VOLATILE (decl) != TREE_THIS_VOLATILE (base)) + return decl; + if ((TREE_CODE (TREE_TYPE (decl)) == VECTOR_TYPE + || TREE_CODE (TREE_TYPE (decl)) == COMPLEX_TYPE) +Index: gcc/rtl.h +=================================================================== +--- a/src/gcc/rtl.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/rtl.h (.../branches/gcc-7-branch) +@@ -3832,6 +3832,25 @@ + return UNKNOWN; + } + ++/* Return true if X is an operation that always operates on the full ++ registers for WORD_REGISTER_OPERATIONS architectures. */ ++ ++inline bool ++word_register_operation_p (const_rtx x) ++{ ++ switch (GET_CODE (x)) ++ { ++ case ROTATE: ++ case ROTATERT: ++ case SIGN_EXTRACT: ++ case ZERO_EXTRACT: ++ return false; ++ ++ default: ++ return true; ++ } ++} ++ + /* gtype-desc.c. */ + extern void gt_ggc_mx (rtx &); + extern void gt_pch_nx (rtx &); +Index: gcc/tree-vect-stmts.c +=================================================================== +--- a/src/gcc/tree-vect-stmts.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-vect-stmts.c (.../branches/gcc-7-branch) +@@ -2753,7 +2753,7 @@ + if (cfn != CFN_LAST) + fndecl = targetm.vectorize.builtin_vectorized_function + (cfn, vectype_out, vectype_in); +- else ++ else if (callee) + fndecl = targetm.vectorize.builtin_md_vectorized_function + (callee, vectype_out, vectype_in); + } +@@ -5479,15 +5479,34 @@ + /* Handle uses. */ + if (j == 0) + { +- if (op_type == binary_op || op_type == ternary_op) ++ if (op_type == binary_op) + vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1, + slp_node, -1); ++ else if (op_type == ternary_op) ++ { ++ if (slp_node) ++ { ++ auto_vec ops(3); ++ ops.quick_push (op0); ++ ops.quick_push (op1); ++ ops.quick_push (op2); ++ auto_vec > vec_defs(3); ++ vect_get_slp_defs (ops, slp_node, &vec_defs, -1); ++ vec_oprnds0 = vec_defs[0]; ++ vec_oprnds1 = vec_defs[1]; ++ vec_oprnds2 = vec_defs[2]; ++ } ++ else ++ { ++ vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1, ++ NULL, -1); ++ vect_get_vec_defs (op2, NULL_TREE, stmt, &vec_oprnds2, NULL, ++ NULL, -1); ++ } ++ } + else + vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL, + slp_node, -1); +- if (op_type == ternary_op) +- vect_get_vec_defs (op2, NULL_TREE, stmt, &vec_oprnds2, NULL, +- slp_node, -1); + } + else + { +Index: gcc/tree-inline.c +=================================================================== +--- a/src/gcc/tree-inline.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-inline.c (.../branches/gcc-7-branch) +@@ -57,6 +57,7 @@ + #include "cfgloop.h" + #include "builtins.h" + #include "tree-chkp.h" ++#include "attribs.h" + + + /* I'm not real happy about this, but we need to handle gimple and +@@ -1182,6 +1183,7 @@ + *tp = gimple_fold_indirect_ref (ptr); + if (! *tp) + { ++ type = remap_type (type, id); + if (TREE_CODE (ptr) == ADDR_EXPR) + { + *tp +@@ -1941,8 +1943,7 @@ + && id->call_stmt + && (decl = gimple_call_fndecl (stmt)) + && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL +- && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN +- && ! gimple_call_va_arg_pack_p (id->call_stmt)) ++ && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN) + { + /* __builtin_va_arg_pack_len () should be replaced by + the number of anonymous arguments. */ +@@ -1960,10 +1961,32 @@ + if (POINTER_BOUNDS_P (gimple_call_arg (id->call_stmt, i))) + nargs--; + +- count = build_int_cst (integer_type_node, nargs); +- new_stmt = gimple_build_assign (gimple_call_lhs (stmt), count); +- gsi_replace (©_gsi, new_stmt, false); +- stmt = new_stmt; ++ if (!gimple_call_lhs (stmt)) ++ { ++ /* Drop unused calls. */ ++ gsi_remove (©_gsi, false); ++ continue; ++ } ++ else if (!gimple_call_va_arg_pack_p (id->call_stmt)) ++ { ++ count = build_int_cst (integer_type_node, nargs); ++ new_stmt = gimple_build_assign (gimple_call_lhs (stmt), count); ++ gsi_replace (©_gsi, new_stmt, false); ++ stmt = new_stmt; ++ } ++ else if (nargs != 0) ++ { ++ tree newlhs; ++ if (gimple_in_ssa_p (cfun)) ++ newlhs = make_ssa_name (integer_type_node, NULL); ++ else ++ newlhs = create_tmp_reg (integer_type_node); ++ count = build_int_cst (integer_type_node, nargs); ++ new_stmt = gimple_build_assign (gimple_call_lhs (stmt), ++ PLUS_EXPR, newlhs, count); ++ gimple_call_set_lhs (stmt, newlhs); ++ gsi_insert_after (©_gsi, new_stmt, GSI_NEW_STMT); ++ } + } + else if (call_stmt + && id->call_stmt +@@ -6024,6 +6047,25 @@ + = copy_arguments_for_versioning (DECL_ARGUMENTS (old_decl), &id, + args_to_skip, &vars); + ++ /* Remove omp declare simd attribute from the new attributes. */ ++ if (tree a = lookup_attribute ("omp declare simd", ++ DECL_ATTRIBUTES (new_decl))) ++ { ++ while (tree a2 = lookup_attribute ("omp declare simd", TREE_CHAIN (a))) ++ a = a2; ++ a = TREE_CHAIN (a); ++ for (tree *p = &DECL_ATTRIBUTES (new_decl); *p != a;) ++ if (is_attribute_p ("omp declare simd", get_attribute_name (*p))) ++ *p = TREE_CHAIN (*p); ++ else ++ { ++ tree chain = TREE_CHAIN (*p); ++ *p = copy_node (*p); ++ p = &TREE_CHAIN (*p); ++ *p = chain; ++ } ++ } ++ + DECL_INITIAL (new_decl) = remap_blocks (DECL_INITIAL (id.src_fn), &id); + BLOCK_SUPERCONTEXT (DECL_INITIAL (new_decl)) = new_decl; + +Index: gcc/symtab.c +=================================================================== +--- a/src/gcc/symtab.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/symtab.c (.../branches/gcc-7-branch) +@@ -35,6 +35,7 @@ + #include "output.h" + #include "ipa-utils.h" + #include "calls.h" ++#include "builtins.h" + + static const char *ipa_ref_use_name[] = {"read","write","addr","alias","chkp"}; + +@@ -2279,3 +2280,58 @@ + + return false; + } ++ ++/* Return true if symbol should be output to the symbol table. */ ++ ++bool ++symtab_node::output_to_lto_symbol_table_p (void) ++{ ++ /* Only externally visible symbols matter. */ ++ if (!TREE_PUBLIC (decl)) ++ return false; ++ if (!real_symbol_p ()) ++ return false; ++ /* FIXME: variables probably should not be considered as real symbols at ++ first place. */ ++ if (VAR_P (decl) && DECL_HARD_REGISTER (decl)) ++ return false; ++ /* FIXME: Builtins corresponding to real functions probably should have ++ symbol table entries. */ ++ if (is_builtin_fn (decl)) ++ return false; ++ ++ /* We have real symbol that should be in symbol table. However try to trim ++ down the refernces to libraries bit more because linker will otherwise ++ bring unnecesary object files into the final link. ++ FIXME: The following checks can easily be confused i.e. by self recursive ++ function or self-referring variable. */ ++ ++ /* We keep external functions in symtab for sake of inlining ++ and devirtualization. We do not want to see them in symbol table as ++ references unless they are really used. */ ++ cgraph_node *cnode = dyn_cast (this); ++ if (cnode && (!definition || DECL_EXTERNAL (decl)) ++ && cnode->callers) ++ return true; ++ ++ /* Ignore all references from external vars initializers - they are not really ++ part of the compilation unit until they are used by folding. Some symbols, ++ like references to external construction vtables can not be referred to at ++ all. We decide this at can_refer_decl_in_current_unit_p. */ ++ if (!definition || DECL_EXTERNAL (decl)) ++ { ++ int i; ++ struct ipa_ref *ref; ++ for (i = 0; iterate_referring (i, ref); i++) ++ { ++ if (ref->use == IPA_REF_ALIAS) ++ continue; ++ if (is_a (ref->referring)) ++ return true; ++ if (!DECL_EXTERNAL (ref->referring->decl)) ++ return true; ++ } ++ return false; ++ } ++ return true; ++} +Index: gcc/tree-ssa-phiprop.c +=================================================================== +--- a/src/gcc/tree-ssa-phiprop.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-phiprop.c (.../branches/gcc-7-branch) +@@ -270,6 +270,7 @@ + use_operand_p arg_p, use; + ssa_op_iter i; + bool phi_inserted; ++ bool changed; + tree type = NULL_TREE; + + if (!POINTER_TYPE_P (TREE_TYPE (ptr)) +@@ -317,6 +318,7 @@ + /* Replace the first dereference of *ptr if there is one and if we + can move the loads to the place of the ptr phi node. */ + phi_inserted = false; ++ changed = false; + FOR_EACH_IMM_USE_STMT (use_stmt, ui, ptr) + { + gimple *def_stmt; +@@ -403,7 +405,7 @@ + unlink_stmt_vdef (use_stmt); + gsi_remove (&gsi, true); + +- phi_inserted = true; ++ changed = true; + } + + /* Found a proper dereference. Insert a phi node if this +@@ -424,6 +426,7 @@ + gsi_remove (&gsi, true); + + phi_inserted = true; ++ changed = true; + } + else + { +@@ -431,6 +434,7 @@ + load. */ + gimple_assign_set_rhs1 (use_stmt, res); + update_stmt (use_stmt); ++ changed = true; + } + + next:; +@@ -437,7 +441,7 @@ + /* Continue searching for a proper dereference. */ + } + +- return phi_inserted; ++ return changed; + } + + /* Main entry for phiprop pass. */ +Index: gcc/combine.c +=================================================================== +--- a/src/gcc/combine.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/combine.c (.../branches/gcc-7-branch) +@@ -5482,11 +5482,15 @@ + x = gen_rtx_CLOBBER (mode, const0_rtx); + } + else if (CONST_SCALAR_INT_P (new_rtx) +- && GET_CODE (x) == ZERO_EXTEND) ++ && (GET_CODE (x) == ZERO_EXTEND ++ || GET_CODE (x) == FLOAT ++ || GET_CODE (x) == UNSIGNED_FLOAT)) + { +- x = simplify_unary_operation (ZERO_EXTEND, GET_MODE (x), +- new_rtx, GET_MODE (XEXP (x, 0))); +- gcc_assert (x); ++ x = simplify_unary_operation (GET_CODE (x), GET_MODE (x), ++ new_rtx, ++ GET_MODE (XEXP (x, 0))); ++ if (!x) ++ return gen_rtx_CLOBBER (VOIDmode, const0_rtx); + } + else + SUBST (XEXP (x, i), new_rtx); +@@ -5637,7 +5641,11 @@ + /* If everything is a comparison, what we have is highly unlikely + to be simpler, so don't use it. */ + && ! (COMPARISON_P (x) +- && (COMPARISON_P (true_rtx) || COMPARISON_P (false_rtx)))) ++ && (COMPARISON_P (true_rtx) || COMPARISON_P (false_rtx))) ++ /* Similarly, if we end up with one of the expressions the same ++ as the original, it is certainly not simpler. */ ++ && ! rtx_equal_p (x, true_rtx) ++ && ! rtx_equal_p (x, false_rtx)) + { + rtx cop1 = const0_rtx; + enum rtx_code cond_code = simplify_comparison (NE, &cond, &cop1); +@@ -6325,7 +6333,7 @@ + pc_rtx, pc_rtx, 0, 0, 0); + if (reg_mentioned_p (from, false_rtx)) + false_rtx = subst (known_cond (copy_rtx (false_rtx), false_code, +- from, false_val), ++ from, false_val), + pc_rtx, pc_rtx, 0, 0, 0); + + SUBST (XEXP (x, 1), swapped ? false_rtx : true_rtx); +@@ -9179,6 +9187,7 @@ + + if (COMPARISON_P (cond0) + && COMPARISON_P (cond1) ++ && SCALAR_INT_MODE_P (mode) + && ((GET_CODE (cond0) == reversed_comparison_code (cond1, NULL) + && rtx_equal_p (XEXP (cond0, 0), XEXP (cond1, 0)) + && rtx_equal_p (XEXP (cond0, 1), XEXP (cond1, 1))) +@@ -9327,12 +9336,12 @@ + if (COMPARISON_P (x)) + { + if (comparison_dominates_p (cond, code)) +- return const_true_rtx; ++ return VECTOR_MODE_P (GET_MODE (x)) ? x : const_true_rtx; + + code = reversed_comparison_code (x, NULL); + if (code != UNKNOWN + && comparison_dominates_p (cond, code)) +- return const0_rtx; ++ return CONST0_RTX (GET_MODE (x)); + else + return x; + } +@@ -9375,7 +9384,7 @@ + /* We must simplify subreg here, before we lose track of the + original inner_mode. */ + new_rtx = simplify_subreg (GET_MODE (x), r, +- inner_mode, SUBREG_BYTE (x)); ++ inner_mode, SUBREG_BYTE (x)); + if (new_rtx) + return new_rtx; + else +@@ -9400,7 +9409,7 @@ + /* We must simplify the zero_extend here, before we lose + track of the original inner_mode. */ + new_rtx = simplify_unary_operation (ZERO_EXTEND, GET_MODE (x), +- r, inner_mode); ++ r, inner_mode); + if (new_rtx) + return new_rtx; + else +@@ -11322,8 +11331,15 @@ + x = gen_rtx_LSHIFTRT (inner_mode, XEXP (x, 0), GEN_INT (start)); + else + x = XEXP (x, 0); ++ + if (mode != inner_mode) +- x = gen_lowpart_SUBREG (mode, x); ++ { ++ if (REG_P (x) && HARD_REGISTER_P (x) ++ && !can_change_dest_mode (x, 0, mode)) ++ continue; ++ ++ x = gen_lowpart_SUBREG (mode, x); ++ } + } + else if (GET_CODE (x) == ZERO_EXTEND + && SCALAR_INT_MODE_P (mode) +@@ -11335,7 +11351,13 @@ + size = GET_MODE_PRECISION (GET_MODE (XEXP (x, 0))); + x = SUBREG_REG (XEXP (x, 0)); + if (GET_MODE (x) != mode) +- x = gen_lowpart_SUBREG (mode, x); ++ { ++ if (REG_P (x) && HARD_REGISTER_P (x) ++ && !can_change_dest_mode (x, 0, mode)) ++ continue; ++ ++ x = gen_lowpart_SUBREG (mode, x); ++ } + } + else if (GET_CODE (x) == ZERO_EXTEND + && SCALAR_INT_MODE_P (mode) +@@ -13081,8 +13103,11 @@ + if (REG_P (dest)) + { + /* If we are setting the whole register, we know its value. Otherwise +- show that we don't know the value. We can handle SUBREG in +- some cases. */ ++ show that we don't know the value. We can handle a SUBREG if it's ++ the low part, but we must be careful with paradoxical SUBREGs on ++ RISC architectures because we cannot strip e.g. an extension around ++ a load and record the naked load since the RTL middle-end considers ++ that the upper bits are defined according to LOAD_EXTEND_OP. */ + if (GET_CODE (setter) == SET && dest == SET_DEST (setter)) + record_value_for_reg (dest, record_dead_insn, SET_SRC (setter)); + else if (GET_CODE (setter) == SET +@@ -13091,8 +13116,12 @@ + && GET_MODE_PRECISION (GET_MODE (dest)) <= BITS_PER_WORD + && subreg_lowpart_p (SET_DEST (setter))) + record_value_for_reg (dest, record_dead_insn, +- gen_lowpart (GET_MODE (dest), +- SET_SRC (setter))); ++ WORD_REGISTER_OPERATIONS ++ && word_register_operation_p (SET_SRC (setter)) ++ && paradoxical_subreg_p (SET_DEST (setter)) ++ ? SET_SRC (setter) ++ : gen_lowpart (GET_MODE (dest), ++ SET_SRC (setter))); + else + record_value_for_reg (dest, record_dead_insn, NULL_RTX); + } +Index: gcc/hsa-gen.c +=================================================================== +--- a/src/gcc/hsa-gen.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/hsa-gen.c (.../branches/gcc-7-branch) +@@ -917,9 +917,13 @@ + else if (lookup_attribute ("hsa_group_segment", + DECL_ATTRIBUTES (decl))) + segment = BRIG_SEGMENT_GROUP; +- else if (TREE_STATIC (decl) +- || lookup_attribute ("hsa_global_segment", +- DECL_ATTRIBUTES (decl))) ++ else if (TREE_STATIC (decl)) ++ { ++ segment = BRIG_SEGMENT_GLOBAL; ++ allocation = BRIG_ALLOCATION_PROGRAM; ++ } ++ else if (lookup_attribute ("hsa_global_segment", ++ DECL_ATTRIBUTES (decl))) + segment = BRIG_SEGMENT_GLOBAL; + else + segment = BRIG_SEGMENT_PRIVATE; +Index: gcc/tree-vect-generic.c +=================================================================== +--- a/src/gcc/tree-vect-generic.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-vect-generic.c (.../branches/gcc-7-branch) +@@ -89,12 +89,8 @@ + return vector_last_type; + } + +- /* We build a new type, but we canonicalize it nevertheless, +- because it still saves some memory. */ + vector_last_nunits = nunits; +- vector_last_type = type_hash_canon (nunits, +- build_vector_type (vector_inner_type, +- nunits)); ++ vector_last_type = build_vector_type (vector_inner_type, nunits); + return vector_last_type; + } + +Index: gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config.gcc (.../branches/gcc-7-branch) +@@ -1461,7 +1461,7 @@ + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h" + ;; + x86_64-*-rtems*) +- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h" ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h rtems.h" + ;; + i[34567]86-*-rdos*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h" +@@ -2046,10 +2046,17 @@ + ;; + riscv*-*-elf* | riscv*-*-rtems*) + tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h" +- case "x${enable_multilib}" in +- xno) ;; +- xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;; +- *) echo "Unknown value for enable_multilib"; exit 1 ++ case ${target} in ++ *-*-rtems*) ++ tm_file="${tm_file} rtems.h riscv/rtems.h" ++ tmake_file="${tmake_file} riscv/t-rtems" ++ ;; ++ *) ++ case "x${enable_multilib}" in ++ xno) ;; ++ xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;; ++ *) echo "Unknown value for enable_multilib"; exit 1 ++ esac + esac + tmake_file="${tmake_file} riscv/t-riscv" + gnu_ld=yes +@@ -2057,11 +2064,6 @@ + # Force .init_array support. The configure script cannot always + # automatically detect that GAS supports it, yet we require it. + gcc_cv_initfini_array=yes +- case ${target} in +- riscv*-*-rtems*) +- tm_file="${tm_file} rtems.h riscv/rtems.h" +- ;; +- esac + ;; + mips*-*-netbsd*) # NetBSD/mips, either endian. + target_cpu_default="MASK_ABICALLS" +Index: gcc/tree-ssa-structalias.c +=================================================================== +--- a/src/gcc/tree-ssa-structalias.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-structalias.c (.../branches/gcc-7-branch) +@@ -7274,6 +7274,7 @@ + struct vls_data + { + unsigned short clique; ++ bool escaped_p; + bitmap rvars; + }; + +@@ -7285,6 +7286,7 @@ + { + unsigned short clique = ((vls_data *) data)->clique; + bitmap rvars = ((vls_data *) data)->rvars; ++ bool escaped_p = ((vls_data *) data)->escaped_p; + if (TREE_CODE (base) == MEM_REF + || TREE_CODE (base) == TARGET_MEM_REF) + { +@@ -7305,7 +7307,8 @@ + return false; + + vi = get_varinfo (find (vi->id)); +- if (bitmap_intersect_p (rvars, vi->solution)) ++ if (bitmap_intersect_p (rvars, vi->solution) ++ || (escaped_p && bitmap_bit_p (vi->solution, escaped_id))) + return false; + } + +@@ -7382,6 +7385,7 @@ + unsigned short clique = 0; + unsigned short last_ruid = 0; + bitmap rvars = BITMAP_ALLOC (NULL); ++ bool escaped_p = false; + for (unsigned i = 0; i < num_ssa_names; ++i) + { + tree ptr = ssa_name (i); +@@ -7451,7 +7455,12 @@ + last_ruid); + } + if (used) +- bitmap_set_bit (rvars, restrict_var->id); ++ { ++ bitmap_set_bit (rvars, restrict_var->id); ++ varinfo_t escaped = get_varinfo (find (escaped_id)); ++ if (bitmap_bit_p (escaped->solution, restrict_var->id)) ++ escaped_p = true; ++ } + } + } + +@@ -7464,7 +7473,7 @@ + parameters) we can't restrict scoping properly thus the following + is too aggressive there. For now we have excluded those globals from + getting into the MR_DEPENDENCE machinery. */ +- vls_data data = { clique, rvars }; ++ vls_data data = { clique, escaped_p, rvars }; + basic_block bb; + FOR_EACH_BB_FN (bb, cfun) + for (gimple_stmt_iterator gsi = gsi_start_bb (bb); +Index: gcc/tree-cfg.c +=================================================================== +--- a/src/gcc/tree-cfg.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-cfg.c (.../branches/gcc-7-branch) +@@ -6640,7 +6640,16 @@ + ; + else if (block == p->orig_block + || p->orig_block == NULL_TREE) +- TREE_SET_BLOCK (t, p->new_block); ++ { ++ /* tree_node_can_be_shared says we can share invariant ++ addresses but unshare_expr copies them anyways. Make sure ++ to unshare before adjusting the block in place - we do not ++ always see a copy here. */ ++ if (TREE_CODE (t) == ADDR_EXPR ++ && is_gimple_min_invariant (t)) ++ *tp = t = unshare_expr (t); ++ TREE_SET_BLOCK (t, p->new_block); ++ } + else if (flag_checking) + { + while (block && TREE_CODE (block) == BLOCK && block != p->orig_block) +Index: gcc/tree-ssa-reassoc.c +=================================================================== +--- a/src/gcc/tree-ssa-reassoc.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-reassoc.c (.../branches/gcc-7-branch) +@@ -470,7 +470,8 @@ + + /* We want integer ones to end up last no matter what, since they are + the ones we can do the most with. */ +-#define INTEGER_CONST_TYPE 1 << 3 ++#define INTEGER_CONST_TYPE 1 << 4 ++#define FLOAT_ONE_CONST_TYPE 1 << 3 + #define FLOAT_CONST_TYPE 1 << 2 + #define OTHER_CONST_TYPE 1 << 1 + +@@ -482,7 +483,14 @@ + if (INTEGRAL_TYPE_P (TREE_TYPE (t))) + return INTEGER_CONST_TYPE; + else if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (t))) +- return FLOAT_CONST_TYPE; ++ { ++ /* Sort -1.0 and 1.0 constants last, while in some cases ++ const_binop can't optimize some inexact operations, multiplication ++ by -1.0 or 1.0 can be always merged with others. */ ++ if (real_onep (t) || real_minus_onep (t)) ++ return FLOAT_ONE_CONST_TYPE; ++ return FLOAT_CONST_TYPE; ++ } + else + return OTHER_CONST_TYPE; + } +@@ -501,7 +509,7 @@ + if (oeb->rank == 0 && oea->rank == 0) + { + if (constant_type (oeb->op) != constant_type (oea->op)) +- return constant_type (oeb->op) - constant_type (oea->op); ++ return constant_type (oea->op) - constant_type (oeb->op); + else + /* To make sorting result stable, we use unique IDs to determine + order. */ +@@ -2870,7 +2878,8 @@ + static bool + optimize_range_tests_var_bound (enum tree_code opcode, int first, int length, + vec *ops, +- struct range_entry *ranges) ++ struct range_entry *ranges, ++ basic_block first_bb) + { + int i; + bool any_changes = false; +@@ -2967,6 +2976,60 @@ + if (idx == NULL) + continue; + ++ /* maybe_optimize_range_tests allows statements without side-effects ++ in the basic blocks as long as they are consumed in the same bb. ++ Make sure rhs2's def stmt is not among them, otherwise we can't ++ use safely get_nonzero_bits on it. E.g. in: ++ # RANGE [-83, 1] NONZERO 173 ++ # k_32 = PHI ++ ... ++ if (k_32 >= 0) ++ goto ; [26.46%] ++ else ++ goto ; [73.54%] ++ ++ [local count: 140323371]: ++ # RANGE [0, 1] NONZERO 1 ++ _5 = (int) k_32; ++ # RANGE [0, 4] NONZERO 4 ++ _21 = _5 << 2; ++ # RANGE [0, 4] NONZERO 4 ++ iftmp.0_44 = (char) _21; ++ if (k_32 < iftmp.0_44) ++ goto ; [84.48%] ++ else ++ goto ; [15.52%] ++ the ranges on _5/_21/iftmp.0_44 are flow sensitive, assume that ++ k_32 >= 0. If we'd optimize k_32 >= 0 to true and k_32 < iftmp.0_44 ++ to (unsigned) k_32 < (unsigned) iftmp.0_44, then we would execute ++ those stmts even for negative k_32 and the value ranges would be no ++ longer guaranteed and so the optimization would be invalid. */ ++ if (opcode == ERROR_MARK) ++ { ++ gimple *g = SSA_NAME_DEF_STMT (rhs2); ++ basic_block bb2 = gimple_bb (g); ++ if (bb2 ++ && bb2 != first_bb ++ && dominated_by_p (CDI_DOMINATORS, bb2, first_bb)) ++ { ++ /* As an exception, handle a few common cases. */ ++ if (gimple_assign_cast_p (g) ++ && INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_rhs1 (g))) ++ && TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (g))) ++ && (TYPE_PRECISION (TREE_TYPE (rhs2)) ++ > TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (g))))) ++ /* Zero-extension is always ok. */ ; ++ else if (is_gimple_assign (g) ++ && gimple_assign_rhs_code (g) == BIT_AND_EXPR ++ && TREE_CODE (gimple_assign_rhs2 (g)) == INTEGER_CST ++ && !wi::neg_p (gimple_assign_rhs2 (g))) ++ /* Masking with INTEGER_CST with MSB clear is always ok ++ too. */ ; ++ else ++ continue; ++ } ++ } ++ + wide_int nz = get_nonzero_bits (rhs2); + if (wi::neg_p (nz)) + continue; +@@ -3093,11 +3156,12 @@ + maybe_optimize_range_tests for inter-bb range optimization. + In that case if oe->op is NULL, oe->id is bb->index whose + GIMPLE_COND is && or ||ed into the test, and oe->rank says +- the actual opcode. */ ++ the actual opcode. ++ FIRST_BB is the first basic block if OPCODE is ERROR_MARK. */ + + static bool + optimize_range_tests (enum tree_code opcode, +- vec *ops) ++ vec *ops, basic_block first_bb) + { + unsigned int length = ops->length (), i, j, first; + operand_entry *oe; +@@ -3175,7 +3239,7 @@ + any_changes |= optimize_range_tests_to_bit_test (opcode, first, length, + ops, ranges); + any_changes |= optimize_range_tests_var_bound (opcode, first, length, ops, +- ranges); ++ ranges, first_bb); + + if (any_changes && opcode != ERROR_MARK) + { +@@ -3922,7 +3986,7 @@ + break; + } + if (ops.length () > 1) +- any_changes = optimize_range_tests (ERROR_MARK, &ops); ++ any_changes = optimize_range_tests (ERROR_MARK, &ops, first_bb); + if (any_changes) + { + unsigned int idx, max_idx = 0; +@@ -5674,7 +5738,7 @@ + if (is_vector) + optimize_vec_cond_expr (rhs_code, &ops); + else +- optimize_range_tests (rhs_code, &ops); ++ optimize_range_tests (rhs_code, &ops, NULL); + } + + if (rhs_code == MULT_EXPR && !is_vector) +Index: gcc/config/nvptx/nvptx.c +=================================================================== +--- a/src/gcc/config/nvptx/nvptx.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/nvptx/nvptx.c (.../branches/gcc-7-branch) +@@ -1875,9 +1875,15 @@ + + if (sym) + { +- fprintf (asm_out_file, "generic("); ++ bool function = (SYMBOL_REF_DECL (sym) ++ && (TREE_CODE (SYMBOL_REF_DECL (sym)) == FUNCTION_DECL)); ++ if (!function) ++ fprintf (asm_out_file, "generic("); + output_address (VOIDmode, sym); +- fprintf (asm_out_file, val ? ") + " : ")"); ++ if (!function) ++ fprintf (asm_out_file, ")"); ++ if (val) ++ fprintf (asm_out_file, " + "); + } + + if (!sym || val) +@@ -2002,6 +2008,9 @@ + nvptx_assemble_decl_begin (FILE *file, const char *name, const char *section, + const_tree type, HOST_WIDE_INT size, unsigned align) + { ++ bool atype = (TREE_CODE (type) == ARRAY_TYPE) ++ && (TYPE_DOMAIN (type) == NULL_TREE); ++ + while (TREE_CODE (type) == ARRAY_TYPE) + type = TREE_TYPE (type); + +@@ -2041,6 +2050,8 @@ + /* We make everything an array, to simplify any initialization + emission. */ + fprintf (file, "[" HOST_WIDE_INT_PRINT_DEC "]", init_frag.remaining); ++ else if (atype) ++ fprintf (file, "[]"); + } + + /* Called when the initializer for a decl has been completely output through +Index: gcc/config/alpha/alpha.md +=================================================================== +--- a/src/gcc/config/alpha/alpha.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/alpha/alpha.md (.../branches/gcc-7-branch) +@@ -4915,7 +4915,7 @@ + + + ;; Subroutine of stack space allocation. Perform a stack probe. +-(define_expand "probe_stack" ++(define_expand "stack_probe_internal" + [(set (match_dup 1) (match_operand:DI 0 "const_int_operand"))] + "" + { +@@ -4950,12 +4950,14 @@ + + int probed = 4096; + +- emit_insn (gen_probe_stack (GEN_INT (- probed))); ++ emit_insn (gen_stack_probe_internal (GEN_INT (- probed))); + while (probed + 8192 < INTVAL (operands[1])) +- emit_insn (gen_probe_stack (GEN_INT (- (probed += 8192)))); ++ emit_insn (gen_stack_probe_internal ++ (GEN_INT (- (probed += 8192)))); + + if (probed + 4096 < INTVAL (operands[1])) +- emit_insn (gen_probe_stack (GEN_INT (- INTVAL(operands[1])))); ++ emit_insn (gen_stack_probe_internal ++ (GEN_INT (- INTVAL(operands[1])))); + } + + operands[1] = GEN_INT (- INTVAL (operands[1])); +Index: gcc/config/alpha/alpha.c +=================================================================== +--- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-7-branch) +@@ -7750,13 +7750,13 @@ + int probed; + + for (probed = 4096; probed < probed_size; probed += 8192) +- emit_insn (gen_probe_stack (GEN_INT (-probed))); ++ emit_insn (gen_stack_probe_internal (GEN_INT (-probed))); + + /* We only have to do this probe if we aren't saving registers or + if we are probing beyond the frame because of -fstack-check. */ + if ((sa_size == 0 && probed_size > probed - 4096) + || flag_stack_check) +- emit_insn (gen_probe_stack (GEN_INT (-probed_size))); ++ emit_insn (gen_stack_probe_internal (GEN_INT (-probed_size))); + } + + if (frame_size != 0) +Index: gcc/config/s390/s390.md +=================================================================== +--- a/src/gcc/config/s390/s390.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390.md (.../branches/gcc-7-branch) +@@ -89,6 +89,7 @@ + UNSPEC_LTREF + UNSPEC_INSN + UNSPEC_EXECUTE ++ UNSPEC_EXECUTE_JUMP + + ; Atomic Support + UNSPEC_MB +@@ -302,6 +303,8 @@ + [ + ; Sibling call register. + (SIBCALL_REGNUM 1) ++ ; A call-clobbered reg which can be used in indirect branch thunks ++ (INDIRECT_BRANCH_THUNK_REGNUM 1) + ; Literal pool base register. + (BASE_REGNUM 13) + ; Return address register. +@@ -398,6 +401,10 @@ + ; Bitposition of operand types + (PFPO_OP0_TYPE_SHIFT 16) + (PFPO_OP1_TYPE_SHIFT 8) ++ ; Decide whether current DFP or BFD rounding mode should be used ++ ; for the conversion. ++ (PFPO_RND_MODE_DFP 0) ++ (PFPO_RND_MODE_BFP 1) + ]) + + ; Immediate operands for tbegin and tbeginc +@@ -471,7 +478,10 @@ + z196_cracked" + (const_string "none")) + +-(define_attr "mnemonic" "bcr_flush,unknown" (const_string "unknown")) ++; mnemonics which only get defined through if_then_else currently ++; don't get added to the list values automatically and hence need to ++; be listed here. ++(define_attr "mnemonic" "b,bas,bc,bcr_flush,unknown" (const_string "unknown")) + + ;; Length in bytes. + +@@ -5348,9 +5358,13 @@ + { + HOST_WIDE_INT flags; + ++ /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the ++ rounding mode of the target format needs to be used. */ ++ + flags = (PFPO_CONVERT | + PFPO_OP_TYPE_ << PFPO_OP0_TYPE_SHIFT | +- PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT); ++ PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT | ++ PFPO_RND_MODE_DFP); + + operands[2] = GEN_INT (flags); + }) +@@ -5370,9 +5384,13 @@ + { + HOST_WIDE_INT flags; + ++ /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the ++ rounding mode of the target format needs to be used. */ ++ + flags = (PFPO_CONVERT | + PFPO_OP_TYPE_ << PFPO_OP0_TYPE_SHIFT | +- PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT); ++ PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT | ++ PFPO_RND_MODE_BFP); + + operands[2] = GEN_INT (flags); + }) +@@ -5413,9 +5431,13 @@ + { + HOST_WIDE_INT flags; + ++ /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the ++ rounding mode of the target format needs to be used. */ ++ + flags = (PFPO_CONVERT | + PFPO_OP_TYPE_ << PFPO_OP0_TYPE_SHIFT | +- PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT); ++ PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT | ++ PFPO_RND_MODE_DFP); + + operands[2] = GEN_INT (flags); + }) +@@ -5435,9 +5457,13 @@ + { + HOST_WIDE_INT flags; + ++ /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the ++ rounding mode of the target format needs to be used. */ ++ + flags = (PFPO_CONVERT | + PFPO_OP_TYPE_ << PFPO_OP0_TYPE_SHIFT | +- PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT); ++ PFPO_OP_TYPE_ << PFPO_OP1_TYPE_SHIFT | ++ PFPO_RND_MODE_BFP); + + operands[2] = GEN_INT (flags); + }) +@@ -8845,17 +8871,17 @@ + DONE; + }) + ++; CLZ result is in hard reg op0 - this is the high part of the target operand ++; The source with the left-most one bit cleared is in hard reg op0 + 1 - the low part + (define_insn "clztidi2" + [(set (match_operand:TI 0 "register_operand" "=d") + (ior:TI +- (ashift:TI +- (zero_extend:TI +- (xor:DI (match_operand:DI 1 "register_operand" "d") +- (lshiftrt (match_operand:DI 2 "const_int_operand" "") +- (subreg:SI (clz:DI (match_dup 1)) 4)))) +- +- (const_int 64)) +- (zero_extend:TI (clz:DI (match_dup 1))))) ++ (ashift:TI (zero_extend:TI (clz:DI (match_operand:DI 1 "register_operand" "d"))) ++ (const_int 64)) ++ (zero_extend:TI ++ (xor:DI (match_dup 1) ++ (lshiftrt (match_operand:DI 2 "const_int_operand" "") ++ (subreg:SI (clz:DI (match_dup 1)) 4)))))) + (clobber (reg:CC CC_REGNUM))] + "UINTVAL (operands[2]) == HOST_WIDE_INT_1U << 63 + && TARGET_EXTIMM && TARGET_ZARCH" +@@ -9069,7 +9095,7 @@ + (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)]) + (match_operand 0 "address_operand" "ZQZR") + (pc)))] +- "" ++ "!TARGET_INDIRECT_BRANCH_NOBP_JUMP" + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return "b%C1r\t%0"; +@@ -9079,6 +9105,9 @@ + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_operand 0 "register_operand" "") ++ (const_string "bcr") (const_string "bc"))) + (set_attr "type" "branch") + (set_attr "atype" "agen")]) + +@@ -9090,8 +9119,26 @@ + (ANY_RETURN) + (pc)))] + "s390_can_use__insn ()" +- "b%C0r\t%%r14" +- [(set_attr "op_type" "RR") ++{ ++ if (TARGET_INDIRECT_BRANCH_NOBP_RET) ++ { ++ s390_indirect_branch_via_thunk (RETURN_REGNUM, ++ INVALID_REGNUM, ++ operands[0], ++ s390_indirect_branch_type_return); ++ return ""; ++ } ++ else ++ return "b%C0r\t%%r14"; ++} ++ [(set (attr "op_type") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "RIL") ++ (const_string "RR"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "brcl") ++ (const_string "bcr"))) + (set_attr "type" "jsr") + (set_attr "atype" "agen")]) + +@@ -9144,7 +9191,7 @@ + (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)]) + (pc) + (match_operand 0 "address_operand" "ZQZR")))] +- "" ++ "!TARGET_INDIRECT_BRANCH_NOBP_JUMP" + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return "b%D1r\t%0"; +@@ -9154,6 +9201,9 @@ + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_operand 0 "register_operand" "") ++ (const_string "bcr") (const_string "bc"))) + (set_attr "type" "branch") + (set_attr "atype" "agen")]) + +@@ -9658,22 +9708,145 @@ + ; + else + operands[0] = force_reg (Pmode, operands[0]); ++ ++ if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK) ++ { ++ operands[0] = force_reg (Pmode, operands[0]); ++ if (TARGET_CPU_Z10) ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_indirect_jump_via_thunkdi_z10 (operands[0])); ++ else ++ emit_jump_insn (gen_indirect_jump_via_thunksi_z10 (operands[0])); ++ } ++ else ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_indirect_jump_via_thunkdi (operands[0])); ++ else ++ emit_jump_insn (gen_indirect_jump_via_thunksi (operands[0])); ++ } ++ DONE; ++ } ++ ++ if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK) ++ { ++ operands[0] = force_reg (Pmode, operands[0]); ++ rtx label_ref = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ()); ++ if (TARGET_CPU_Z10) ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_indirect_jump_via_inlinethunkdi_z10 (operands[0], ++ label_ref)); ++ else ++ emit_jump_insn (gen_indirect_jump_via_inlinethunksi_z10 (operands[0], ++ label_ref)); ++ } ++ else ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_indirect_jump_via_inlinethunkdi (operands[0], ++ label_ref, ++ force_reg (Pmode, label_ref))); ++ else ++ emit_jump_insn (gen_indirect_jump_via_inlinethunksi (operands[0], ++ label_ref, ++ force_reg (Pmode, label_ref))); ++ } ++ DONE; ++ } + }) + +-; The first constraint must be an "extra address constraint" in order +-; to trigger address reloading in LRA/reload + (define_insn "*indirect_jump" + [(set (pc) +- (match_operand 0 "address_operand" "ZR,a"))] +- "" +- "@ +- b\t%a0 +- br\t%0" +- [(set_attr "op_type" "RX,RR") ++ (match_operand 0 "address_operand" "ZR"))] ++ "!TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK" ++{ ++ if (get_attr_op_type (insn) == OP_TYPE_RR) ++ return "br\t%0"; ++ else ++ return "b\t%a0"; ++} ++ [(set (attr "op_type") ++ (if_then_else (match_operand 0 "register_operand" "") ++ (const_string "RR") (const_string "RX"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_operand 0 "register_operand" "") ++ (const_string "br") (const_string "b"))) + (set_attr "type" "branch") +- (set_attr "atype" "agen") +- (set_attr "cpu_facility" "*")]) ++ (set_attr "atype" "agen")]) + ++(define_insn "indirect_jump_via_thunk_z10" ++ [(set (pc) ++ (match_operand:P 0 "register_operand" "a"))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK ++ && TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_jump); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "jg") ++ (set_attr "type" "branch") ++ (set_attr "atype" "agen")]) ++ ++(define_insn "indirect_jump_via_thunk" ++ [(set (pc) ++ (match_operand:P 0 "register_operand" " a")) ++ (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK ++ && !TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_jump); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "jg") ++ (set_attr "type" "branch") ++ (set_attr "atype" "agen")]) ++ ++ ++; The label_ref is wrapped into an if_then_else in order to hide it ++; from mark_jump_label. Without this the label_ref would become the ++; ONLY jump target of that jump breaking the control flow graph. ++(define_insn "indirect_jump_via_inlinethunk_z10" ++ [(unspec [(if_then_else (match_operand:P 1 "larl_operand" "X") ++ (const_int 0) ++ (const_int 0)) ++ (const_int 0)] UNSPEC_EXECUTE_JUMP) ++ (set (pc) (match_operand:P 0 "register_operand" "a"))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK ++ && TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_inline_thunk (operands[1]); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "type" "branch") ++ (set_attr "length" "10")]) ++ ++(define_insn "indirect_jump_via_inlinethunk" ++ [(unspec [(if_then_else (match_operand:P 1 "larl_operand" "X") ++ (const_int 0) ++ (const_int 0)) ++ (match_operand:P 2 "register_operand" "a")] UNSPEC_EXECUTE_JUMP) ++ (set (pc) (match_operand:P 0 "register_operand" "a"))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK ++ && !TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_inline_thunk (operands[2]); ++ return ""; ++} ++ [(set_attr "op_type" "RX") ++ (set_attr "type" "branch") ++ (set_attr "length" "8")]) ++ + ; FIXME: LRA does not appear to be able to deal with MEMs being + ; checked against address constraints like ZR above. So make this a + ; separate pattern for now. +@@ -9680,7 +9853,7 @@ + (define_insn "*indirect2_jump" + [(set (pc) + (match_operand 0 "nonimmediate_operand" "a,T"))] +- "" ++ "!TARGET_INDIRECT_BRANCH_NOBP_JUMP" + "@ + br\t%0 + bi\t%0" +@@ -9693,11 +9866,74 @@ + ; casesi instruction pattern(s). + ; + +-(define_insn "casesi_jump" +- [(set (pc) (match_operand 0 "address_operand" "ZR")) +- (use (label_ref (match_operand 1 "" "")))] ++(define_expand "casesi_jump" ++ [(parallel ++ [(set (pc) (match_operand 0 "address_operand")) ++ (use (label_ref (match_operand 1 "")))])] + "" + { ++ if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK) ++ { ++ operands[0] = force_reg (GET_MODE (operands[0]), operands[0]); ++ ++ if (TARGET_CPU_Z10) ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_casesi_jump_via_thunkdi_z10 (operands[0], ++ operands[1])); ++ else ++ emit_jump_insn (gen_casesi_jump_via_thunksi_z10 (operands[0], ++ operands[1])); ++ } ++ else ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_casesi_jump_via_thunkdi (operands[0], ++ operands[1])); ++ else ++ emit_jump_insn (gen_casesi_jump_via_thunksi (operands[0], ++ operands[1])); ++ } ++ DONE; ++ } ++ ++ if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK) ++ { ++ operands[0] = force_reg (Pmode, operands[0]); ++ rtx label_ref = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ()); ++ if (TARGET_CPU_Z10) ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_casesi_jump_via_inlinethunkdi_z10 (operands[0], ++ operands[1], ++ label_ref)); ++ else ++ emit_jump_insn (gen_casesi_jump_via_inlinethunksi_z10 (operands[0], ++ operands[1], ++ label_ref)); ++ } ++ else ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_casesi_jump_via_inlinethunkdi (operands[0], ++ operands[1], ++ label_ref, ++ force_reg (Pmode, label_ref))); ++ else ++ emit_jump_insn (gen_casesi_jump_via_inlinethunksi (operands[0], ++ operands[1], ++ label_ref, ++ force_reg (Pmode, label_ref))); ++ } ++ DONE; ++ } ++}) ++ ++(define_insn "*casesi_jump" ++ [(set (pc) (match_operand 0 "address_operand" "ZR")) ++ (use (label_ref (match_operand 1 "" "")))] ++ "!TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK" ++{ + if (get_attr_op_type (insn) == OP_TYPE_RR) + return "br\t%0"; + else +@@ -9706,9 +9942,85 @@ + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_operand 0 "register_operand" "") ++ (const_string "br") (const_string "b"))) + (set_attr "type" "branch") + (set_attr "atype" "agen")]) + ++(define_insn "casesi_jump_via_thunk_z10" ++ [(set (pc) (match_operand:P 0 "register_operand" "a")) ++ (use (label_ref (match_operand 1 "" "")))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK ++ && TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_jump); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "jg") ++ (set_attr "type" "branch") ++ (set_attr "atype" "agen")]) ++ ++(define_insn "casesi_jump_via_thunk" ++ [(set (pc) (match_operand:P 0 "register_operand" "a")) ++ (use (label_ref (match_operand 1 "" ""))) ++ (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK ++ && !TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_jump); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "jg") ++ (set_attr "type" "branch") ++ (set_attr "atype" "agen")]) ++ ++ ++; The label_ref is wrapped into an if_then_else in order to hide it ++; from mark_jump_label. Without this the label_ref would become the ++; ONLY jump target of that jump breaking the control flow graph. ++(define_insn "casesi_jump_via_inlinethunk_z10" ++ [(unspec [(if_then_else (match_operand:P 2 "larl_operand" "X") ++ (const_int 0) ++ (const_int 0)) ++ (const_int 0)] UNSPEC_EXECUTE_JUMP) ++ (set (pc) (match_operand:P 0 "register_operand" "a")) ++ (use (label_ref (match_operand 1 "" "")))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK ++ && TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_inline_thunk (operands[2]); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "type" "cs") ++ (set_attr "length" "10")]) ++ ++(define_insn "casesi_jump_via_inlinethunk" ++ [(unspec [(if_then_else (match_operand:P 2 "larl_operand" "X") ++ (const_int 0) ++ (const_int 0)) ++ (match_operand:P 3 "register_operand" "a")] UNSPEC_EXECUTE_JUMP) ++ (set (pc) (match_operand:P 0 "register_operand" "a")) ++ (use (label_ref (match_operand 1 "" "")))] ++ "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK ++ && !TARGET_CPU_Z10" ++{ ++ s390_indirect_branch_via_inline_thunk (operands[3]); ++ return ""; ++} ++ [(set_attr "op_type" "RX") ++ (set_attr "type" "cs") ++ (set_attr "length" "8")]) ++ + (define_expand "casesi" + [(match_operand:SI 0 "general_operand" "") + (match_operand:SI 1 "general_operand" "") +@@ -9813,8 +10125,27 @@ + (match_operand 0 "const_int_operand" "n"))] + "SIBLING_CALL_P (insn) + && GET_MODE (XEXP (XEXP (PATTERN (insn), 0), 0)) == Pmode" +- "br\t%%r1" +- [(set_attr "op_type" "RR") ++{ ++ if (TARGET_INDIRECT_BRANCH_NOBP_CALL) ++ { ++ gcc_assert (TARGET_CPU_Z10); ++ s390_indirect_branch_via_thunk (SIBCALL_REGNUM, ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_call); ++ return ""; ++ } ++ else ++ return "br\t%%r1"; ++} ++ [(set (attr "op_type") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL") ++ (const_string "RIL") ++ (const_string "RR"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL") ++ (const_string "jg") ++ (const_string "br"))) + (set_attr "type" "branch") + (set_attr "atype" "agen")]) + +@@ -9854,8 +10185,27 @@ + (match_operand 1 "const_int_operand" "n")))] + "SIBLING_CALL_P (insn) + && GET_MODE (XEXP (XEXP (XEXP (PATTERN (insn), 1), 0), 0)) == Pmode" +- "br\t%%r1" +- [(set_attr "op_type" "RR") ++{ ++ if (TARGET_INDIRECT_BRANCH_NOBP_CALL) ++ { ++ gcc_assert (TARGET_CPU_Z10); ++ s390_indirect_branch_via_thunk (SIBCALL_REGNUM, ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_call); ++ return ""; ++ } ++ else ++ return "br\t%%r1"; ++} ++ [(set (attr "op_type") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL") ++ (const_string "RIL") ++ (const_string "RR"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL") ++ (const_string "jg") ++ (const_string "br"))) + (set_attr "type" "branch") + (set_attr "atype" "agen")]) + +@@ -9921,7 +10271,9 @@ + [(call (mem:QI (match_operand 0 "address_operand" "ZR")) + (match_operand 1 "const_int_operand" "n")) + (clobber (match_operand 2 "register_operand" "=r"))] +- "!SIBLING_CALL_P (insn) && GET_MODE (operands[2]) == Pmode" ++ "!TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && !SIBLING_CALL_P (insn) ++ && GET_MODE (operands[2]) == Pmode" + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return "basr\t%2,%0"; +@@ -9931,10 +10283,54 @@ + [(set (attr "op_type") + (if_then_else (match_operand 0 "register_operand" "") + (const_string "RR") (const_string "RX"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_operand 0 "register_operand" "") ++ (const_string "basr") (const_string "bas"))) + (set_attr "type" "jsr") + (set_attr "atype" "agen") + (set_attr "z196prop" "z196_cracked")]) + ++(define_insn "*basr_via_thunk_z10" ++ [(call (mem:QI (match_operand:P 0 "register_operand" "a")) ++ (match_operand 1 "const_int_operand" "n")) ++ (clobber (match_operand:P 2 "register_operand" "=&r"))] ++ "TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && TARGET_CPU_Z10 ++ && !SIBLING_CALL_P (insn)" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ REGNO (operands[2]), ++ NULL_RTX, ++ s390_indirect_branch_type_call); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "brasl") ++ (set_attr "type" "jsr") ++ (set_attr "atype" "agen") ++ (set_attr "z196prop" "z196_cracked")]) ++ ++(define_insn "*basr_via_thunk" ++ [(call (mem:QI (match_operand:P 0 "register_operand" "a")) ++ (match_operand 1 "const_int_operand" "n")) ++ (clobber (match_operand:P 2 "register_operand" "=&r")) ++ (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))] ++ "TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && !TARGET_CPU_Z10 ++ && !SIBLING_CALL_P (insn)" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ REGNO (operands[2]), ++ NULL_RTX, ++ s390_indirect_branch_type_call); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "brasl") ++ (set_attr "type" "jsr") ++ (set_attr "atype" "agen") ++ (set_attr "z196prop" "z196_cracked")]) ++ + ; + ; call_value instruction pattern(s). + ; +@@ -9982,7 +10378,9 @@ + (call (mem:QI (match_operand 1 "address_operand" "ZR")) + (match_operand 2 "const_int_operand" "n"))) + (clobber (match_operand 3 "register_operand" "=r"))] +- "!SIBLING_CALL_P (insn) && GET_MODE (operands[3]) == Pmode" ++ "!TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && !SIBLING_CALL_P (insn) ++ && GET_MODE (operands[3]) == Pmode" + { + if (get_attr_op_type (insn) == OP_TYPE_RR) + return "basr\t%3,%1"; +@@ -9992,10 +10390,58 @@ + [(set (attr "op_type") + (if_then_else (match_operand 1 "register_operand" "") + (const_string "RR") (const_string "RX"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_operand 1 "register_operand" "") ++ (const_string "basr") (const_string "bas"))) + (set_attr "type" "jsr") + (set_attr "atype" "agen") + (set_attr "z196prop" "z196_cracked")]) + ++(define_insn "*basr_r_via_thunk_z10" ++ [(set (match_operand 0 "" "") ++ (call (mem:QI (match_operand 1 "register_operand" "a")) ++ (match_operand 2 "const_int_operand" "n"))) ++ (clobber (match_operand 3 "register_operand" "=&r"))] ++ "TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && TARGET_CPU_Z10 ++ && !SIBLING_CALL_P (insn) ++ && GET_MODE (operands[3]) == Pmode" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[1]), ++ REGNO (operands[3]), ++ NULL_RTX, ++ s390_indirect_branch_type_call); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "brasl") ++ (set_attr "type" "jsr") ++ (set_attr "atype" "agen") ++ (set_attr "z196prop" "z196_cracked")]) ++ ++(define_insn "*basr_r_via_thunk" ++ [(set (match_operand 0 "" "") ++ (call (mem:QI (match_operand 1 "register_operand" "a")) ++ (match_operand 2 "const_int_operand" "n"))) ++ (clobber (match_operand 3 "register_operand" "=&r")) ++ (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))] ++ "TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && !TARGET_CPU_Z10 ++ && !SIBLING_CALL_P (insn) ++ && GET_MODE (operands[3]) == Pmode" ++{ ++ s390_indirect_branch_via_thunk (REGNO (operands[1]), ++ REGNO (operands[3]), ++ NULL_RTX, ++ s390_indirect_branch_type_call); ++ return ""; ++} ++ [(set_attr "op_type" "RIL") ++ (set_attr "mnemonic" "brasl") ++ (set_attr "type" "jsr") ++ (set_attr "atype" "agen") ++ (set_attr "z196prop" "z196_cracked")]) ++ + ;; + ;;- Thread-local storage support. + ;; +@@ -10737,21 +11183,105 @@ + (define_insn "" + [(ANY_RETURN)] + "s390_can_use__insn ()" +- "br\t%%r14" +- [(set_attr "op_type" "RR") ++{ ++ if (TARGET_INDIRECT_BRANCH_NOBP_RET) ++ { ++ /* The target is always r14 so there is no clobber ++ of r1 needed for pre z10 targets. */ ++ s390_indirect_branch_via_thunk (RETURN_REGNUM, ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_return); ++ return ""; ++ } ++ else ++ return "br\t%%r14"; ++} ++ [(set (attr "op_type") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "RIL") ++ (const_string "RR"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "jg") ++ (const_string "br"))) + (set_attr "type" "jsr") + (set_attr "atype" "agen")]) + +-(define_insn "*return" ++ ++(define_expand "return_use" ++ [(parallel ++ [(return) ++ (use (match_operand 0 "register_operand" "a"))])] ++ "" ++{ ++ if (!TARGET_CPU_Z10 ++ && TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION) ++ { ++ if (TARGET_64BIT) ++ emit_jump_insn (gen_returndi_prez10 (operands[0])); ++ else ++ emit_jump_insn (gen_returnsi_prez10 (operands[0])); ++ DONE; ++ } ++}) ++ ++(define_insn "*return" + [(return) +- (use (match_operand 0 "register_operand" "a"))] +- "GET_MODE (operands[0]) == Pmode" +- "br\t%0" +- [(set_attr "op_type" "RR") ++ (use (match_operand:P 0 "register_operand" "a"))] ++ "TARGET_CPU_Z10 || !TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION" ++{ ++ if (TARGET_INDIRECT_BRANCH_NOBP_RET) ++ { ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_return); ++ return ""; ++ } ++ else ++ return "br\t%0"; ++} ++ [(set (attr "op_type") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "RIL") ++ (const_string "RR"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "jg") ++ (const_string "br"))) + (set_attr "type" "jsr") + (set_attr "atype" "agen")]) + ++(define_insn "return_prez10" ++ [(return) ++ (use (match_operand:P 0 "register_operand" "a")) ++ (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))] ++ "!TARGET_CPU_Z10 && TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION" ++{ ++ if (TARGET_INDIRECT_BRANCH_NOBP_RET) ++ { ++ s390_indirect_branch_via_thunk (REGNO (operands[0]), ++ INVALID_REGNUM, ++ NULL_RTX, ++ s390_indirect_branch_type_return); ++ return ""; ++ } ++ else ++ return "br\t%0"; ++} ++ [(set (attr "op_type") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "RIL") ++ (const_string "RR"))) ++ (set (attr "mnemonic") ++ (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET") ++ (const_string "jg") ++ (const_string "br"))) ++ (set_attr "type" "jsr") ++ (set_attr "atype" "agen")]) + ++ + ;; Instruction definition to extend a 31-bit pointer into a 64-bit + ;; pointer. This is used for compatibility. + +Index: gcc/config/s390/s390.opt +=================================================================== +--- a/src/gcc/config/s390/s390.opt (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390.opt (.../branches/gcc-7-branch) +@@ -229,3 +229,62 @@ + mlra + Target Report Var(s390_lra_flag) Init(1) Save + Use LRA instead of reload. ++ ++mindirect-branch= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch) Init(indirect_branch_keep) ++Wrap all indirect branches into execute in order to disable branch ++prediction. ++ ++mindirect-branch-jump= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_jump) Init(indirect_branch_keep) ++Wrap indirect table jumps and computed gotos into execute in order to ++disable branch prediction. Using thunk or thunk-extern with this ++option requires the thunks to be considered signal handlers to order to ++generate correct CFI. For environments where unwinding (e.g. for ++exceptions) is required please use thunk-inline instead. ++ ++mindirect-branch-call= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_call) Init(indirect_branch_keep) ++Wrap all indirect calls into execute in order to disable branch prediction. ++ ++mfunction-return= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return) Init(indirect_branch_keep) ++Wrap all indirect return branches into execute in order to disable branch ++prediction. ++ ++mfunction-return-mem= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_mem) Init(indirect_branch_keep) ++Wrap indirect return branches into execute in order to disable branch ++prediction. This affects only branches where the return address is ++going to be restored from memory. ++ ++mfunction-return-reg= ++Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_reg) Init(indirect_branch_keep) ++Wrap indirect return branches into execute in order to disable branch ++prediction. This affects only branches where the return address ++doesn't need to be restored from memory. ++ ++Enum ++Name(indirect_branch) Type(enum indirect_branch) ++Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options): ++ ++EnumValue ++Enum(indirect_branch) String(keep) Value(indirect_branch_keep) ++ ++EnumValue ++Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk) ++ ++EnumValue ++Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline) ++ ++EnumValue ++Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern) ++ ++mindirect-branch-table ++Target Report Var(s390_indirect_branch_table) Init(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE) ++Generate sections .s390_indirect_jump, .s390_indirect_call, ++.s390_return_reg, and .s390_return_mem to contain the indirect branch ++locations which have been patched as part of using one of the ++-mindirect-branch* or -mfunction-return* options. The sections ++consist of an array of 32 bit elements. Each entry holds the offset ++from the entry to the patched location. +Index: gcc/config/s390/s390-builtin-types.def +=================================================================== +--- a/src/gcc/config/s390/s390-builtin-types.def (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390-builtin-types.def (.../branches/gcc-7-branch) +@@ -124,6 +124,7 @@ + DEF_OPAQUE_VECTOR_TYPE (BT_BV4SI, BT_BINT, 4) + DEF_FN_TYPE_0 (BT_FN_INT, BT_INT) + DEF_FN_TYPE_0 (BT_FN_UINT, BT_UINT) ++DEF_FN_TYPE_0 (BT_FN_VOID, BT_VOID) + DEF_FN_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT) + DEF_FN_TYPE_1 (BT_FN_INT_VOIDPTR, BT_INT, BT_VOIDPTR) + DEF_FN_TYPE_1 (BT_FN_OV4SI_INT, BT_OV4SI, BT_INT) +Index: gcc/config/s390/s390-opts.h +=================================================================== +--- a/src/gcc/config/s390/s390-opts.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390-opts.h (.../branches/gcc-7-branch) +@@ -43,4 +43,13 @@ + PROCESSOR_max + }; + ++ ++/* Values for -mindirect-branch and -mfunction-return options. */ ++enum indirect_branch { ++ indirect_branch_unset = 0, ++ indirect_branch_keep, ++ indirect_branch_thunk, ++ indirect_branch_thunk_inline, ++ indirect_branch_thunk_extern ++}; + #endif +Index: gcc/config/s390/s390-protos.h +=================================================================== +--- a/src/gcc/config/s390/s390-protos.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390-protos.h (.../branches/gcc-7-branch) +@@ -53,6 +53,7 @@ + extern int s390_cannot_change_mode_class (machine_mode, machine_mode, + enum reg_class); + extern bool s390_function_arg_vector (machine_mode, const_tree); ++extern bool s390_return_addr_from_memory(void); + #if S390_USE_TARGET_ATTRIBUTE + extern tree s390_valid_target_attribute_tree (tree args, + struct gcc_options *opts, +@@ -147,6 +148,17 @@ + extern bool s390_extzv_shift_ok (int, int, unsigned HOST_WIDE_INT); + extern void s390_asm_output_function_label (FILE *, const char *, tree); + ++enum s390_indirect_branch_type ++ { ++ s390_indirect_branch_type_jump = 0, ++ s390_indirect_branch_type_call, ++ s390_indirect_branch_type_return ++ }; ++extern void s390_indirect_branch_via_thunk (unsigned int regno, ++ unsigned int return_addr_regno, ++ rtx comparison_operator, ++ enum s390_indirect_branch_type type); ++extern void s390_indirect_branch_via_inline_thunk (rtx execute_target); + #endif /* RTX_CODE */ + + /* s390-c.c routines */ +Index: gcc/config/s390/s390.c +=================================================================== +--- a/src/gcc/config/s390/s390.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390.c (.../branches/gcc-7-branch) +@@ -377,84 +377,6 @@ + bool literal_pool; + }; + +-/* The following structure is embedded in the machine +- specific part of struct function. */ +- +-struct GTY (()) s390_frame_layout +-{ +- /* Offset within stack frame. */ +- HOST_WIDE_INT gprs_offset; +- HOST_WIDE_INT f0_offset; +- HOST_WIDE_INT f4_offset; +- HOST_WIDE_INT f8_offset; +- HOST_WIDE_INT backchain_offset; +- +- /* Number of first and last gpr where slots in the register +- save area are reserved for. */ +- int first_save_gpr_slot; +- int last_save_gpr_slot; +- +- /* Location (FP register number) where GPRs (r0-r15) should +- be saved to. +- 0 - does not need to be saved at all +- -1 - stack slot */ +-#define SAVE_SLOT_NONE 0 +-#define SAVE_SLOT_STACK -1 +- signed char gpr_save_slots[16]; +- +- /* Number of first and last gpr to be saved, restored. */ +- int first_save_gpr; +- int first_restore_gpr; +- int last_save_gpr; +- int last_restore_gpr; +- +- /* Bits standing for floating point registers. Set, if the +- respective register has to be saved. Starting with reg 16 (f0) +- at the rightmost bit. +- Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +- fpr 15 13 11 9 14 12 10 8 7 5 3 1 6 4 2 0 +- reg 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 */ +- unsigned int fpr_bitmap; +- +- /* Number of floating point registers f8-f15 which must be saved. */ +- int high_fprs; +- +- /* Set if return address needs to be saved. +- This flag is set by s390_return_addr_rtx if it could not use +- the initial value of r14 and therefore depends on r14 saved +- to the stack. */ +- bool save_return_addr_p; +- +- /* Size of stack frame. */ +- HOST_WIDE_INT frame_size; +-}; +- +-/* Define the structure for the machine field in struct function. */ +- +-struct GTY(()) machine_function +-{ +- struct s390_frame_layout frame_layout; +- +- /* Literal pool base register. */ +- rtx base_reg; +- +- /* True if we may need to perform branch splitting. */ +- bool split_branches_pending_p; +- +- bool has_landing_pad_p; +- +- /* True if the current function may contain a tbegin clobbering +- FPRs. */ +- bool tbegin_p; +- +- /* For -fsplit-stack support: A stack local which holds a pointer to +- the stack arguments for a function with a variable number of +- arguments. This is set at the start of the function and is used +- to initialize the overflow_arg_area field of the va_list +- structure. */ +- rtx split_stack_varargs_pointer; +-}; +- + /* Few accessor macros for struct cfun->machine->s390_frame_layout. */ + + #define cfun_frame_layout (cfun->machine->frame_layout) +@@ -495,7 +417,34 @@ + bytes on a z10 (or higher) CPU. */ + #define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048) + ++/* Masks per jump target register indicating which thunk need to be ++ generated. */ ++static GTY(()) int indirect_branch_prez10thunk_mask = 0; ++static GTY(()) int indirect_branch_z10thunk_mask = 0; + ++#define INDIRECT_BRANCH_NUM_OPTIONS 4 ++ ++enum s390_indirect_branch_option ++ { ++ s390_opt_indirect_branch_jump = 0, ++ s390_opt_indirect_branch_call, ++ s390_opt_function_return_reg, ++ s390_opt_function_return_mem ++ }; ++ ++static GTY(()) int indirect_branch_table_label_no[INDIRECT_BRANCH_NUM_OPTIONS] = { 0 }; ++const char *indirect_branch_table_label[INDIRECT_BRANCH_NUM_OPTIONS] = \ ++ { "LJUMP", "LCALL", "LRETREG", "LRETMEM" }; ++const char *indirect_branch_table_name[INDIRECT_BRANCH_NUM_OPTIONS] = \ ++ { ".s390_indirect_jump", ".s390_indirect_call", ++ ".s390_return_reg", ".s390_return_mem" }; ++ ++bool ++s390_return_addr_from_memory () ++{ ++ return cfun_gpr_save_slot(RETURN_REGNUM) == SAVE_SLOT_STACK; ++} ++ + /* Indicate which ABI has been used for passing vector args. + 0 - no vector type arguments have been passed where the ABI is relevant + 1 - the old ABI has been used +@@ -1148,9 +1097,83 @@ + return NULL_TREE; + } + ++/* Check syntax of function decl attributes having a string type value. */ ++ ++static tree ++s390_handle_string_attribute (tree *node, tree name ATTRIBUTE_UNUSED, ++ tree args ATTRIBUTE_UNUSED, ++ int flags ATTRIBUTE_UNUSED, ++ bool *no_add_attrs) ++{ ++ tree cst; ++ ++ if (TREE_CODE (*node) != FUNCTION_DECL) ++ { ++ warning (OPT_Wattributes, "%qE attribute only applies to functions", ++ name); ++ *no_add_attrs = true; ++ } ++ ++ cst = TREE_VALUE (args); ++ ++ if (TREE_CODE (cst) != STRING_CST) ++ { ++ warning (OPT_Wattributes, ++ "%qE attribute requires a string constant argument", ++ name); ++ *no_add_attrs = true; ++ } ++ ++ if (is_attribute_p ("indirect_branch", name) ++ || is_attribute_p ("indirect_branch_call", name) ++ || is_attribute_p ("function_return", name) ++ || is_attribute_p ("function_return_reg", name) ++ || is_attribute_p ("function_return_mem", name)) ++ { ++ if (strcmp (TREE_STRING_POINTER (cst), "keep") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk-extern") != 0) ++ { ++ warning (OPT_Wattributes, ++ "argument to %qE attribute is not " ++ "(keep|thunk|thunk-extern)", name); ++ *no_add_attrs = true; ++ } ++ } ++ ++ if (is_attribute_p ("indirect_branch_jump", name) ++ && strcmp (TREE_STRING_POINTER (cst), "keep") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk-inline") != 0 ++ && strcmp (TREE_STRING_POINTER (cst), "thunk-extern") != 0) ++ { ++ warning (OPT_Wattributes, ++ "argument to %qE attribute is not " ++ "(keep|thunk|thunk-inline|thunk-extern)", name); ++ *no_add_attrs = true; ++ } ++ ++ return NULL_TREE; ++} ++ + static const struct attribute_spec s390_attribute_table[] = { +- { "hotpatch", 2, 2, true, false, false, s390_handle_hotpatch_attribute, false }, +- { "s390_vector_bool", 0, 0, false, true, false, s390_handle_vectorbool_attribute, true }, ++ { "hotpatch", 2, 2, true, false, false, ++ s390_handle_hotpatch_attribute, false }, ++ { "s390_vector_bool", 0, 0, false, true, false, ++ s390_handle_vectorbool_attribute, true }, ++ { "indirect_branch", 1, 1, true, false, false, ++ s390_handle_string_attribute, false }, ++ { "indirect_branch_jump", 1, 1, true, false, false, ++ s390_handle_string_attribute, false }, ++ { "indirect_branch_call", 1, 1, true, false, false, ++ s390_handle_string_attribute, false }, ++ { "function_return", 1, 1, true, false, false, ++ s390_handle_string_attribute, false }, ++ { "function_return_reg", 1, 1, true, false, false, ++ s390_handle_string_attribute, false }, ++ { "function_return_mem", 1, 1, true, false, false, ++ s390_handle_string_attribute, false }, ++ + /* End element. */ + { NULL, 0, 0, false, false, false, NULL, false } + }; +@@ -6573,11 +6596,16 @@ + return; + } + ++ /* Use vector replicate instructions. vlrep/vrepi/vrep */ + if (all_same) + { +- emit_insn (gen_rtx_SET (target, +- gen_rtx_VEC_DUPLICATE (mode, +- XVECEXP (vals, 0, 0)))); ++ rtx elem = XVECEXP (vals, 0, 0); ++ ++ /* vec_splats accepts general_operand as source. */ ++ if (!general_operand (elem, GET_MODE (elem))) ++ elem = force_reg (inner_mode, elem); ++ ++ emit_insn (gen_rtx_SET (target, gen_rtx_VEC_DUPLICATE (mode, elem))); + return; + } + +@@ -8583,11 +8611,25 @@ + static rtx + s390_execute_label (rtx insn) + { +- if (NONJUMP_INSN_P (insn) ++ if (INSN_P (insn) + && GET_CODE (PATTERN (insn)) == PARALLEL + && GET_CODE (XVECEXP (PATTERN (insn), 0, 0)) == UNSPEC +- && XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE) +- return XVECEXP (XVECEXP (PATTERN (insn), 0, 0), 0, 2); ++ && (XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE ++ || XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE_JUMP)) ++ { ++ if (XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE) ++ return XVECEXP (XVECEXP (PATTERN (insn), 0, 0), 0, 2); ++ else ++ { ++ gcc_assert (JUMP_P (insn)); ++ /* For jump insns as execute target: ++ - There is one operand less in the parallel (the ++ modification register of the execute is always 0). ++ - The execute target label is wrapped into an ++ if_then_else in order to hide it from jump analysis. */ ++ return XEXP (XVECEXP (XVECEXP (PATTERN (insn), 0, 0), 0, 0), 0); ++ } ++ } + + return NULL_RTX; + } +@@ -11273,7 +11315,6 @@ + rtx frame_pointer, return_reg, cfa_restores = NULL_RTX; + int area_bottom, area_top, offset = 0; + int next_offset; +- rtvec p; + int i; + + if (TARGET_TPF_PROFILING) +@@ -11427,10 +11468,15 @@ + if (cfun_gpr_save_slot (RETURN_REGNUM) == SAVE_SLOT_STACK) + { + int return_regnum = find_unused_clobbered_reg(); +- if (!return_regnum) +- return_regnum = 4; ++ if (!return_regnum ++ || (TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION ++ && !TARGET_CPU_Z10 ++ && return_regnum == INDIRECT_BRANCH_THUNK_REGNUM)) ++ { ++ gcc_assert (INDIRECT_BRANCH_THUNK_REGNUM != 4); ++ return_regnum = 4; ++ } + return_reg = gen_rtx_REG (Pmode, return_regnum); +- + addr = plus_constant (Pmode, frame_pointer, + offset + cfun_frame_layout.gprs_offset + + (RETURN_REGNUM +@@ -11466,16 +11512,7 @@ + s390_restore_gprs_from_fprs (); + + if (! sibcall) +- { +- +- /* Return to caller. */ +- +- p = rtvec_alloc (2); +- +- RTVEC_ELT (p, 0) = ret_rtx; +- RTVEC_ELT (p, 1) = gen_rtx_USE (VOIDmode, return_reg); +- emit_jump_insn (gen_rtx_PARALLEL (VOIDmode, p)); +- } ++ emit_jump_insn (gen_return_use (return_reg)); + } + + /* Implement TARGET_SET_UP_BY_PROLOGUE. */ +@@ -13053,6 +13090,112 @@ + final_end_function (); + } + ++/* Output either an indirect jump or a an indirect call ++ (RETURN_ADDR_REGNO != INVALID_REGNUM) with target register REGNO ++ using a branch trampoline disabling branch target prediction. */ ++ ++void ++s390_indirect_branch_via_thunk (unsigned int regno, ++ unsigned int return_addr_regno, ++ rtx comparison_operator, ++ enum s390_indirect_branch_type type) ++{ ++ enum s390_indirect_branch_option option; ++ ++ if (type == s390_indirect_branch_type_return) ++ { ++ if (s390_return_addr_from_memory ()) ++ option = s390_opt_function_return_mem; ++ else ++ option = s390_opt_function_return_reg; ++ } ++ else if (type == s390_indirect_branch_type_jump) ++ option = s390_opt_indirect_branch_jump; ++ else if (type == s390_indirect_branch_type_call) ++ option = s390_opt_indirect_branch_call; ++ else ++ gcc_unreachable (); ++ ++ if (TARGET_INDIRECT_BRANCH_TABLE) ++ { ++ char label[32]; ++ ++ ASM_GENERATE_INTERNAL_LABEL (label, ++ indirect_branch_table_label[option], ++ indirect_branch_table_label_no[option]++); ++ ASM_OUTPUT_LABEL (asm_out_file, label); ++ } ++ ++ if (return_addr_regno != INVALID_REGNUM) ++ { ++ gcc_assert (comparison_operator == NULL_RTX); ++ fprintf (asm_out_file, " \tbrasl\t%%r%d,", return_addr_regno); ++ } ++ else ++ { ++ fputs (" \tjg", asm_out_file); ++ if (comparison_operator != NULL_RTX) ++ print_operand (asm_out_file, comparison_operator, 'C'); ++ ++ fputs ("\t", asm_out_file); ++ } ++ ++ if (TARGET_CPU_Z10) ++ fprintf (asm_out_file, ++ TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL "\n", ++ regno); ++ else ++ fprintf (asm_out_file, ++ TARGET_INDIRECT_BRANCH_THUNK_NAME_EX "\n", ++ INDIRECT_BRANCH_THUNK_REGNUM, regno); ++ ++ if ((option == s390_opt_indirect_branch_jump ++ && cfun->machine->indirect_branch_jump == indirect_branch_thunk) ++ || (option == s390_opt_indirect_branch_call ++ && cfun->machine->indirect_branch_call == indirect_branch_thunk) ++ || (option == s390_opt_function_return_reg ++ && cfun->machine->function_return_reg == indirect_branch_thunk) ++ || (option == s390_opt_function_return_mem ++ && cfun->machine->function_return_mem == indirect_branch_thunk)) ++ { ++ if (TARGET_CPU_Z10) ++ indirect_branch_z10thunk_mask |= (1 << regno); ++ else ++ indirect_branch_prez10thunk_mask |= (1 << regno); ++ } ++} ++ ++/* Output an inline thunk for indirect jumps. EXECUTE_TARGET can ++ either be an address register or a label pointing to the location ++ of the jump instruction. */ ++ ++void ++s390_indirect_branch_via_inline_thunk (rtx execute_target) ++{ ++ if (TARGET_INDIRECT_BRANCH_TABLE) ++ { ++ char label[32]; ++ ++ ASM_GENERATE_INTERNAL_LABEL (label, ++ indirect_branch_table_label[s390_opt_indirect_branch_jump], ++ indirect_branch_table_label_no[s390_opt_indirect_branch_jump]++); ++ ASM_OUTPUT_LABEL (asm_out_file, label); ++ } ++ ++ if (!TARGET_ZARCH) ++ fputs ("\t.machinemode zarch\n", asm_out_file); ++ ++ if (REG_P (execute_target)) ++ fprintf (asm_out_file, "\tex\t%%r0,0(%%r%d)\n", REGNO (execute_target)); ++ else ++ output_asm_insn ("exrl\t%%r0,%0", &execute_target); ++ ++ if (!TARGET_ZARCH) ++ fputs ("\t.machinemode esa\n", asm_out_file); ++ ++ fputs ("0:\tj\t0b\n", asm_out_file); ++} ++ + static bool + s390_valid_pointer_mode (machine_mode mode) + { +@@ -13158,6 +13301,14 @@ + if (!TARGET_64BIT && flag_pic && decl && !targetm.binds_local_p (decl)) + return false; + ++ /* The thunks for indirect branches require r1 if no exrl is ++ available. r1 might not be available when doing a sibling ++ call. */ ++ if (TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && !TARGET_CPU_Z10 ++ && !decl) ++ return false; ++ + /* Register 6 on s390 is available as an argument register but unfortunately + "caller saved". This makes functions needing this register for arguments + not suitable for sibcalls. */ +@@ -13191,9 +13342,13 @@ + { + bool plt_call = false; + rtx_insn *insn; +- rtx call; +- rtx clobber; +- rtvec vec; ++ rtx vec[4] = { NULL_RTX }; ++ int elts = 0; ++ rtx *call = &vec[0]; ++ rtx *clobber_ret_reg = &vec[1]; ++ rtx *use = &vec[2]; ++ rtx *clobber_thunk_reg = &vec[3]; ++ int i; + + /* Direct function calls need special treatment. */ + if (GET_CODE (addr_location) == SYMBOL_REF) +@@ -13245,26 +13400,58 @@ + addr_location = gen_rtx_REG (Pmode, SIBCALL_REGNUM); + } + ++ if (TARGET_INDIRECT_BRANCH_NOBP_CALL ++ && GET_CODE (addr_location) != SYMBOL_REF ++ && !plt_call) ++ { ++ /* Indirect branch thunks require the target to be a single GPR. */ ++ addr_location = force_reg (Pmode, addr_location); ++ ++ /* Without exrl the indirect branch thunks need an additional ++ register for larl;ex */ ++ if (!TARGET_CPU_Z10) ++ { ++ *clobber_thunk_reg = gen_rtx_REG (Pmode, INDIRECT_BRANCH_THUNK_REGNUM); ++ *clobber_thunk_reg = gen_rtx_CLOBBER (VOIDmode, *clobber_thunk_reg); ++ } ++ } ++ + addr_location = gen_rtx_MEM (QImode, addr_location); +- call = gen_rtx_CALL (VOIDmode, addr_location, const0_rtx); ++ *call = gen_rtx_CALL (VOIDmode, addr_location, const0_rtx); + + if (result_reg != NULL_RTX) +- call = gen_rtx_SET (result_reg, call); ++ *call = gen_rtx_SET (result_reg, *call); + + if (retaddr_reg != NULL_RTX) + { +- clobber = gen_rtx_CLOBBER (VOIDmode, retaddr_reg); ++ *clobber_ret_reg = gen_rtx_CLOBBER (VOIDmode, retaddr_reg); + + if (tls_call != NULL_RTX) +- vec = gen_rtvec (3, call, clobber, +- gen_rtx_USE (VOIDmode, tls_call)); +- else +- vec = gen_rtvec (2, call, clobber); ++ *use = gen_rtx_USE (VOIDmode, tls_call); ++ } + +- call = gen_rtx_PARALLEL (VOIDmode, vec); ++ ++ for (i = 0; i < 4; i++) ++ if (vec[i] != NULL_RTX) ++ elts++; ++ ++ if (elts > 1) ++ { ++ rtvec v; ++ int e = 0; ++ ++ v = rtvec_alloc (elts); ++ for (i = 0; i < 4; i++) ++ if (vec[i] != NULL_RTX) ++ { ++ RTVEC_ELT (v, e) = vec[i]; ++ e++; ++ } ++ ++ *call = gen_rtx_PARALLEL (VOIDmode, v); + } + +- insn = emit_call_insn (call); ++ insn = emit_call_insn (*call); + + /* 31-bit PLT stubs and tls calls use the GOT register implicitly. */ + if ((!TARGET_64BIT && plt_call) || tls_call != NULL_RTX) +@@ -14046,7 +14233,16 @@ + target = emit_label (XEXP (label, 0)); + INSN_ADDRESSES_NEW (target, -1); + +- target = emit_insn (s390_execute_target (insn)); ++ if (JUMP_P (insn)) ++ { ++ target = emit_jump_insn (s390_execute_target (insn)); ++ /* This is important in order to keep a table jump ++ pointing at the jump table label. Only this makes it ++ being recognized as table jump. */ ++ JUMP_LABEL (target) = JUMP_LABEL (insn); ++ } ++ else ++ target = emit_insn (s390_execute_target (insn)); + INSN_ADDRESSES_NEW (target, -1); + } + } +@@ -14699,6 +14895,42 @@ + if (TARGET_64BIT && !TARGET_ZARCH_P (opts->x_target_flags)) + error ("64-bit ABI not supported in ESA/390 mode"); + ++ if (opts->x_s390_indirect_branch == indirect_branch_thunk_inline ++ || opts->x_s390_indirect_branch_call == indirect_branch_thunk_inline ++ || opts->x_s390_function_return == indirect_branch_thunk_inline ++ || opts->x_s390_function_return_reg == indirect_branch_thunk_inline ++ || opts->x_s390_function_return_mem == indirect_branch_thunk_inline) ++ error ("thunk-inline is only supported with -mindirect-branch-jump"); ++ ++ if (opts->x_s390_indirect_branch != indirect_branch_keep) ++ { ++ if (!opts_set->x_s390_indirect_branch_call) ++ opts->x_s390_indirect_branch_call = opts->x_s390_indirect_branch; ++ ++ if (!opts_set->x_s390_indirect_branch_jump) ++ opts->x_s390_indirect_branch_jump = opts->x_s390_indirect_branch; ++ } ++ ++ if (opts->x_s390_function_return != indirect_branch_keep) ++ { ++ if (!opts_set->x_s390_function_return_reg) ++ opts->x_s390_function_return_reg = opts->x_s390_function_return; ++ ++ if (!opts_set->x_s390_function_return_mem) ++ opts->x_s390_function_return_mem = opts->x_s390_function_return; ++ } ++ ++ if (!TARGET_CPU_ZARCH) ++ { ++ if (opts->x_s390_indirect_branch_call != indirect_branch_keep ++ || opts->x_s390_indirect_branch_jump != indirect_branch_keep) ++ error ("-mindirect-branch* options require -march=z900 or higher"); ++ if (opts->x_s390_function_return_reg != indirect_branch_keep ++ || opts->x_s390_function_return_mem != indirect_branch_keep) ++ error ("-mfunction-return* options require -march=z900 or higher"); ++ } ++ ++ + /* Enable hardware transactions if available and not explicitly + disabled by user. E.g. with -m31 -march=zEC12 -mzarch */ + if (!TARGET_OPT_HTM_P (opts_set->x_target_flags)) +@@ -15267,6 +15499,79 @@ + return ret; + } + ++/* Set VAL to correct enum value according to the indirect-branch or ++ function-return attribute in ATTR. */ ++ ++static inline void ++s390_indirect_branch_attrvalue (tree attr, enum indirect_branch *val) ++{ ++ const char *str = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))); ++ if (strcmp (str, "keep") == 0) ++ *val = indirect_branch_keep; ++ else if (strcmp (str, "thunk") == 0) ++ *val = indirect_branch_thunk; ++ else if (strcmp (str, "thunk-inline") == 0) ++ *val = indirect_branch_thunk_inline; ++ else if (strcmp (str, "thunk-extern") == 0) ++ *val = indirect_branch_thunk_extern; ++} ++ ++/* Memorize the setting for -mindirect-branch* and -mfunction-return* ++ from either the cmdline or the function attributes in ++ cfun->machine. */ ++ ++static void ++s390_indirect_branch_settings (tree fndecl) ++{ ++ tree attr; ++ ++ if (!fndecl) ++ return; ++ ++ /* Initialize with the cmdline options and let the attributes ++ override it. */ ++ cfun->machine->indirect_branch_jump = s390_indirect_branch_jump; ++ cfun->machine->indirect_branch_call = s390_indirect_branch_call; ++ ++ cfun->machine->function_return_reg = s390_function_return_reg; ++ cfun->machine->function_return_mem = s390_function_return_mem; ++ ++ if ((attr = lookup_attribute ("indirect_branch", ++ DECL_ATTRIBUTES (fndecl)))) ++ { ++ s390_indirect_branch_attrvalue (attr, ++ &cfun->machine->indirect_branch_jump); ++ s390_indirect_branch_attrvalue (attr, ++ &cfun->machine->indirect_branch_call); ++ } ++ ++ if ((attr = lookup_attribute ("indirect_branch_jump", ++ DECL_ATTRIBUTES (fndecl)))) ++ s390_indirect_branch_attrvalue (attr, &cfun->machine->indirect_branch_jump); ++ ++ if ((attr = lookup_attribute ("indirect_branch_call", ++ DECL_ATTRIBUTES (fndecl)))) ++ s390_indirect_branch_attrvalue (attr, &cfun->machine->indirect_branch_call); ++ ++ if ((attr = lookup_attribute ("function_return", ++ DECL_ATTRIBUTES (fndecl)))) ++ { ++ s390_indirect_branch_attrvalue (attr, ++ &cfun->machine->function_return_reg); ++ s390_indirect_branch_attrvalue (attr, ++ &cfun->machine->function_return_mem); ++ } ++ ++ if ((attr = lookup_attribute ("function_return_reg", ++ DECL_ATTRIBUTES (fndecl)))) ++ s390_indirect_branch_attrvalue (attr, &cfun->machine->function_return_reg); ++ ++ if ((attr = lookup_attribute ("function_return_mem", ++ DECL_ATTRIBUTES (fndecl)))) ++ s390_indirect_branch_attrvalue (attr, &cfun->machine->function_return_mem); ++} ++ ++ + /* Restore targets globals from NEW_TREE and invalidate s390_previous_fndecl + cache. */ + +@@ -15293,7 +15598,10 @@ + several times in the course of compiling a function, and we don't want to + slow things down too much or call target_reinit when it isn't safe. */ + if (fndecl == s390_previous_fndecl) +- return; ++ { ++ s390_indirect_branch_settings (fndecl); ++ return; ++ } + + tree old_tree; + if (s390_previous_fndecl == NULL_TREE) +@@ -15317,6 +15625,8 @@ + if (old_tree != new_tree) + s390_activate_target_options (new_tree); + s390_previous_fndecl = fndecl; ++ ++ s390_indirect_branch_settings (fndecl); + } + #endif + +@@ -15598,6 +15908,186 @@ + return TARGET_64BIT ? HOST_WIDE_INT_1U << 52 : HOST_WIDE_INT_UC (0x20000000); + } + ++#ifdef HAVE_GAS_HIDDEN ++# define USE_HIDDEN_LINKONCE 1 ++#else ++# define USE_HIDDEN_LINKONCE 0 ++#endif ++ ++/* Output an indirect branch trampoline for target register REGNO. */ ++ ++static void ++s390_output_indirect_thunk_function (unsigned int regno, bool z10_p) ++{ ++ tree decl; ++ char thunk_label[32]; ++ int i; ++ ++ if (z10_p) ++ sprintf (thunk_label, TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL, regno); ++ else ++ sprintf (thunk_label, TARGET_INDIRECT_BRANCH_THUNK_NAME_EX, ++ INDIRECT_BRANCH_THUNK_REGNUM, regno); ++ ++ decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL, ++ get_identifier (thunk_label), ++ build_function_type_list (void_type_node, NULL_TREE)); ++ DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL, ++ NULL_TREE, void_type_node); ++ TREE_PUBLIC (decl) = 1; ++ TREE_STATIC (decl) = 1; ++ DECL_IGNORED_P (decl) = 1; ++ ++ if (USE_HIDDEN_LINKONCE) ++ { ++ cgraph_node::create (decl)->set_comdat_group (DECL_ASSEMBLER_NAME (decl)); ++ ++ targetm.asm_out.unique_section (decl, 0); ++ switch_to_section (get_named_section (decl, NULL, 0)); ++ ++ targetm.asm_out.globalize_label (asm_out_file, thunk_label); ++ fputs ("\t.hidden\t", asm_out_file); ++ assemble_name (asm_out_file, thunk_label); ++ putc ('\n', asm_out_file); ++ ASM_DECLARE_FUNCTION_NAME (asm_out_file, thunk_label, decl); ++ } ++ else ++ { ++ switch_to_section (text_section); ++ ASM_OUTPUT_LABEL (asm_out_file, thunk_label); ++ } ++ ++ DECL_INITIAL (decl) = make_node (BLOCK); ++ current_function_decl = decl; ++ allocate_struct_function (decl, false); ++ init_function_start (decl); ++ cfun->is_thunk = true; ++ first_function_block_is_cold = false; ++ final_start_function (emit_barrier (), asm_out_file, 1); ++ ++ /* This makes CFI at least usable for indirect jumps. ++ ++ Stopping in the thunk: backtrace will point to the thunk target ++ is if it was interrupted by a signal. For a call this means that ++ the call chain will be: caller->callee->thunk */ ++ if (flag_asynchronous_unwind_tables && flag_dwarf2_cfi_asm) ++ { ++ fputs ("\t.cfi_signal_frame\n", asm_out_file); ++ fprintf (asm_out_file, "\t.cfi_return_column %d\n", regno); ++ for (i = 0; i < FPR15_REGNUM; i++) ++ fprintf (asm_out_file, "\t.cfi_same_value %s\n", reg_names[i]); ++ } ++ ++ if (z10_p) ++ { ++ /* exrl 0,1f */ ++ ++ /* We generate a thunk for z10 compiled code although z10 is ++ currently not enabled. Tell the assembler to accept the ++ instruction. */ ++ if (!TARGET_CPU_Z10) ++ { ++ fputs ("\t.machine push\n", asm_out_file); ++ fputs ("\t.machine z10\n", asm_out_file); ++ } ++ /* We use exrl even if -mzarch hasn't been specified on the ++ command line so we have to tell the assembler to accept ++ it. */ ++ if (!TARGET_ZARCH) ++ fputs ("\t.machinemode zarch\n", asm_out_file); ++ ++ fputs ("\texrl\t0,1f\n", asm_out_file); ++ ++ if (!TARGET_ZARCH) ++ fputs ("\t.machinemode esa\n", asm_out_file); ++ ++ if (!TARGET_CPU_Z10) ++ fputs ("\t.machine pop\n", asm_out_file); ++ } ++ else if (TARGET_CPU_ZARCH) ++ { ++ /* larl %r1,1f */ ++ fprintf (asm_out_file, "\tlarl\t%%r%d,1f\n", ++ INDIRECT_BRANCH_THUNK_REGNUM); ++ ++ /* ex 0,0(%r1) */ ++ fprintf (asm_out_file, "\tex\t0,0(%%r%d)\n", ++ INDIRECT_BRANCH_THUNK_REGNUM); ++ } ++ else ++ gcc_unreachable (); ++ ++ /* 0: j 0b */ ++ fputs ("0:\tj\t0b\n", asm_out_file); ++ ++ /* 1: br */ ++ fprintf (asm_out_file, "1:\tbr\t%%r%d\n", regno); ++ ++ final_end_function (); ++ init_insn_lengths (); ++ free_after_compilation (cfun); ++ set_cfun (NULL); ++ current_function_decl = NULL; ++} ++ ++/* Implement the asm.code_end target hook. */ ++ ++static void ++s390_code_end (void) ++{ ++ int i; ++ ++ for (i = 1; i < 16; i++) ++ { ++ if (indirect_branch_z10thunk_mask & (1 << i)) ++ s390_output_indirect_thunk_function (i, true); ++ ++ if (indirect_branch_prez10thunk_mask & (1 << i)) ++ s390_output_indirect_thunk_function (i, false); ++ } ++ ++ if (TARGET_INDIRECT_BRANCH_TABLE) ++ { ++ int o; ++ int i; ++ ++ for (o = 0; o < INDIRECT_BRANCH_NUM_OPTIONS; o++) ++ { ++ if (indirect_branch_table_label_no[o] == 0) ++ continue; ++ ++ switch_to_section (get_section (indirect_branch_table_name[o], ++ 0, ++ NULL_TREE)); ++ for (i = 0; i < indirect_branch_table_label_no[o]; i++) ++ { ++ char label_start[32]; ++ ++ ASM_GENERATE_INTERNAL_LABEL (label_start, ++ indirect_branch_table_label[o], i); ++ ++ fputs ("\t.long\t", asm_out_file); ++ assemble_name_raw (asm_out_file, label_start); ++ fputs ("-.\n", asm_out_file); ++ } ++ switch_to_section (current_function_section ()); ++ } ++ } ++} ++ ++/* Implement the TARGET_CASE_VALUES_THRESHOLD target hook. */ ++ ++unsigned int ++s390_case_values_threshold (void) ++{ ++ /* Disabling branch prediction for indirect jumps makes jump tables ++ much more expensive. */ ++ if (TARGET_INDIRECT_BRANCH_NOBP_JUMP) ++ return 20; ++ ++ return default_case_values_threshold (); ++} ++ + /* Initialize GCC target structure. */ + + #undef TARGET_ASM_ALIGNED_HI_OP +@@ -15854,6 +16344,12 @@ + #undef TARGET_OPTION_RESTORE + #define TARGET_OPTION_RESTORE s390_function_specific_restore + ++#undef TARGET_ASM_CODE_END ++#define TARGET_ASM_CODE_END s390_code_end ++ ++#undef TARGET_CASE_VALUES_THRESHOLD ++#define TARGET_CASE_VALUES_THRESHOLD s390_case_values_threshold ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-s390.h" +Index: gcc/config/s390/s390-builtins.def +=================================================================== +--- a/src/gcc/config/s390/s390-builtins.def (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390-builtins.def (.../branches/gcc-7-branch) +@@ -294,7 +294,7 @@ + flags: Flags applying to all its variants should be mentioned in the OB_DEF line instead. */ + + +-B_DEF (tbeginc, tbeginc, 0, B_HTM, 0, BT_FN_INT) ++B_DEF (tbeginc, tbeginc, 0, B_HTM, 0, BT_FN_VOID) + B_DEF (tbegin, tbegin, returns_twice_attr, B_HTM, 0, BT_FN_INT_VOIDPTR) + B_DEF (tbegin_nofloat, tbegin_nofloat, returns_twice_attr, B_HTM, 0, BT_FN_INT_VOIDPTR) + B_DEF (tbegin_retry, tbegin_retry, returns_twice_attr, B_HTM, 0, BT_FN_INT_VOIDPTR_INT) +Index: gcc/config/s390/s390.h +=================================================================== +--- a/src/gcc/config/s390/s390.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/s390/s390.h (.../branches/gcc-7-branch) +@@ -205,7 +205,7 @@ + #define OPTION_DEFAULT_SPECS \ + { "mode", "%{!mesa:%{!mzarch:-m%(VALUE)}}" }, \ + { "arch", "%{!march=*:-march=%(VALUE)}" }, \ +- { "tune", "%{!mtune=*:-mtune=%(VALUE)}" } ++ { "tune", "%{!mtune=*:%{!march=*:-mtune=%(VALUE)}}" } + + #ifdef __s390__ + extern const char *s390_host_detect_local_cpu (int argc, const char **argv); +@@ -1120,4 +1120,124 @@ + s390_register_target_pragmas (); \ + } while (0) + ++#ifndef USED_FOR_TARGET ++/* The following structure is embedded in the machine ++ specific part of struct function. */ ++ ++struct GTY (()) s390_frame_layout ++{ ++ /* Offset within stack frame. */ ++ HOST_WIDE_INT gprs_offset; ++ HOST_WIDE_INT f0_offset; ++ HOST_WIDE_INT f4_offset; ++ HOST_WIDE_INT f8_offset; ++ HOST_WIDE_INT backchain_offset; ++ ++ /* Number of first and last gpr where slots in the register ++ save area are reserved for. */ ++ int first_save_gpr_slot; ++ int last_save_gpr_slot; ++ ++ /* Location (FP register number) where GPRs (r0-r15) should ++ be saved to. ++ 0 - does not need to be saved at all ++ -1 - stack slot */ ++#define SAVE_SLOT_NONE 0 ++#define SAVE_SLOT_STACK -1 ++ signed char gpr_save_slots[16]; ++ ++ /* Number of first and last gpr to be saved, restored. */ ++ int first_save_gpr; ++ int first_restore_gpr; ++ int last_save_gpr; ++ int last_restore_gpr; ++ ++ /* Bits standing for floating point registers. Set, if the ++ respective register has to be saved. Starting with reg 16 (f0) ++ at the rightmost bit. ++ Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ++ fpr 15 13 11 9 14 12 10 8 7 5 3 1 6 4 2 0 ++ reg 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 */ ++ unsigned int fpr_bitmap; ++ ++ /* Number of floating point registers f8-f15 which must be saved. */ ++ int high_fprs; ++ ++ /* Set if return address needs to be saved. ++ This flag is set by s390_return_addr_rtx if it could not use ++ the initial value of r14 and therefore depends on r14 saved ++ to the stack. */ ++ bool save_return_addr_p; ++ ++ /* Size of stack frame. */ ++ HOST_WIDE_INT frame_size; ++}; ++ ++ ++/* Define the structure for the machine field in struct function. */ ++ ++struct GTY(()) machine_function ++{ ++ struct s390_frame_layout frame_layout; ++ ++ /* Literal pool base register. */ ++ rtx base_reg; ++ ++ /* True if we may need to perform branch splitting. */ ++ bool split_branches_pending_p; ++ ++ bool has_landing_pad_p; ++ ++ /* True if the current function may contain a tbegin clobbering ++ FPRs. */ ++ bool tbegin_p; ++ ++ /* For -fsplit-stack support: A stack local which holds a pointer to ++ the stack arguments for a function with a variable number of ++ arguments. This is set at the start of the function and is used ++ to initialize the overflow_arg_area field of the va_list ++ structure. */ ++ rtx split_stack_varargs_pointer; ++ ++ enum indirect_branch indirect_branch_jump; ++ enum indirect_branch indirect_branch_call; ++ ++ enum indirect_branch function_return_mem; ++ enum indirect_branch function_return_reg; ++}; ++#endif ++ ++#define TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION \ ++ (cfun->machine->function_return_reg != indirect_branch_keep \ ++ || cfun->machine->function_return_mem != indirect_branch_keep) ++ ++#define TARGET_INDIRECT_BRANCH_NOBP_RET \ ++ ((cfun->machine->function_return_reg != indirect_branch_keep \ ++ && !s390_return_addr_from_memory ()) \ ++ || (cfun->machine->function_return_mem != indirect_branch_keep \ ++ && s390_return_addr_from_memory ())) ++ ++#define TARGET_INDIRECT_BRANCH_NOBP_JUMP \ ++ (cfun->machine->indirect_branch_jump != indirect_branch_keep) ++ ++#define TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK \ ++ (cfun->machine->indirect_branch_jump == indirect_branch_thunk \ ++ || cfun->machine->indirect_branch_jump == indirect_branch_thunk_extern) ++ ++#define TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK \ ++ (cfun->machine->indirect_branch_jump == indirect_branch_thunk_inline) ++ ++#define TARGET_INDIRECT_BRANCH_NOBP_CALL \ ++ (cfun->machine->indirect_branch_call != indirect_branch_keep) ++ ++#ifndef TARGET_DEFAULT_INDIRECT_BRANCH_TABLE ++#define TARGET_DEFAULT_INDIRECT_BRANCH_TABLE 0 ++#endif ++ ++#define TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL "__s390_indirect_jump_r%d" ++#define TARGET_INDIRECT_BRANCH_THUNK_NAME_EX "__s390_indirect_jump_r%duse_r%d" ++ ++#define TARGET_INDIRECT_BRANCH_TABLE s390_indirect_branch_table ++ ++ + #endif /* S390_H */ +Index: gcc/config/sparc/sparc.md +=================================================================== +--- a/src/gcc/config/sparc/sparc.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/sparc/sparc.md (.../branches/gcc-7-branch) +@@ -1758,7 +1758,7 @@ + + (define_expand "movsi_pic_label_ref" + [(set (match_dup 3) (high:SI +- (unspec:SI [(match_operand:SI 1 "label_ref_operand" "") ++ (unspec:SI [(match_operand:SI 1 "symbolic_operand" "") + (match_dup 2)] UNSPEC_MOVE_PIC_LABEL))) + (set (match_dup 4) (lo_sum:SI (match_dup 3) + (unspec:SI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL))) +@@ -1784,7 +1784,7 @@ + (define_insn "*movsi_high_pic_label_ref" + [(set (match_operand:SI 0 "register_operand" "=r") + (high:SI +- (unspec:SI [(match_operand:SI 1 "label_ref_operand" "") ++ (unspec:SI [(match_operand:SI 1 "symbolic_operand" "") + (match_operand:SI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))] + "flag_pic" + "sethi\t%%hi(%a2-(%a1-.)), %0") +@@ -1792,7 +1792,7 @@ + (define_insn "*movsi_lo_sum_pic_label_ref" + [(set (match_operand:SI 0 "register_operand" "=r") + (lo_sum:SI (match_operand:SI 1 "register_operand" "r") +- (unspec:SI [(match_operand:SI 2 "label_ref_operand" "") ++ (unspec:SI [(match_operand:SI 2 "symbolic_operand" "") + (match_operand:SI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))] + "flag_pic" + "or\t%1, %%lo(%a3-(%a2-.)), %0") +@@ -1896,7 +1896,7 @@ + + (define_expand "movdi_pic_label_ref" + [(set (match_dup 3) (high:DI +- (unspec:DI [(match_operand:DI 1 "label_ref_operand" "") ++ (unspec:DI [(match_operand:DI 1 "symbolic_operand" "") + (match_dup 2)] UNSPEC_MOVE_PIC_LABEL))) + (set (match_dup 4) (lo_sum:DI (match_dup 3) + (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL))) +@@ -1922,7 +1922,7 @@ + (define_insn "*movdi_high_pic_label_ref" + [(set (match_operand:DI 0 "register_operand" "=r") + (high:DI +- (unspec:DI [(match_operand:DI 1 "label_ref_operand" "") ++ (unspec:DI [(match_operand:DI 1 "symbolic_operand" "") + (match_operand:DI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))] + "TARGET_ARCH64 && flag_pic" + "sethi\t%%hi(%a2-(%a1-.)), %0") +@@ -1930,7 +1930,7 @@ + (define_insn "*movdi_lo_sum_pic_label_ref" + [(set (match_operand:DI 0 "register_operand" "=r") + (lo_sum:DI (match_operand:DI 1 "register_operand" "r") +- (unspec:DI [(match_operand:DI 2 "label_ref_operand" "") ++ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "") + (match_operand:DI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))] + "TARGET_ARCH64 && flag_pic" + "or\t%1, %%lo(%a3-(%a2-.)), %0") +Index: gcc/config/sparc/sparc.c +=================================================================== +--- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/sparc/sparc.c (.../branches/gcc-7-branch) +@@ -2188,7 +2188,7 @@ + } + } + +- /* Fixup TLS cases. */ ++ /* Fix up TLS cases. */ + if (TARGET_HAVE_TLS + && CONSTANT_P (operands[1]) + && sparc_tls_referenced_p (operands [1])) +@@ -2197,7 +2197,7 @@ + return false; + } + +- /* Fixup PIC cases. */ ++ /* Fix up PIC cases. */ + if (flag_pic && CONSTANT_P (operands[1])) + { + if (pic_address_needs_scratch (operands[1])) +@@ -2204,8 +2204,13 @@ + operands[1] = sparc_legitimize_pic_address (operands[1], NULL_RTX); + + /* We cannot use the mov{si,di}_pic_label_ref patterns in all cases. */ +- if (GET_CODE (operands[1]) == LABEL_REF +- && can_use_mov_pic_label_ref (operands[1])) ++ if ((GET_CODE (operands[1]) == LABEL_REF ++ && can_use_mov_pic_label_ref (operands[1])) ++ || (GET_CODE (operands[1]) == CONST ++ && GET_CODE (XEXP (operands[1], 0)) == PLUS ++ && GET_CODE (XEXP (XEXP (operands[1], 0), 0)) == LABEL_REF ++ && GET_CODE (XEXP (XEXP (operands[1], 0), 1)) == CONST_INT ++ && can_use_mov_pic_label_ref (XEXP (XEXP (operands[1], 0), 0)))) + { + if (mode == SImode) + { +@@ -2215,7 +2220,6 @@ + + if (mode == DImode) + { +- gcc_assert (TARGET_ARCH64); + emit_insn (gen_movdi_pic_label_ref (operands[0], operands[1])); + return true; + } +@@ -4216,10 +4220,11 @@ + pic_address_needs_scratch (rtx x) + { + /* An address which is a symbolic plus a non SMALL_INT needs a temp reg. */ +- if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS ++ if (GET_CODE (x) == CONST ++ && GET_CODE (XEXP (x, 0)) == PLUS + && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF + && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT +- && ! SMALL_INT (XEXP (XEXP (x, 0), 1))) ++ && !SMALL_INT (XEXP (XEXP (x, 0), 1))) + return 1; + + return 0; +@@ -4667,16 +4672,15 @@ + static rtx + sparc_legitimize_pic_address (rtx orig, rtx reg) + { +- bool gotdata_op = false; +- + if (GET_CODE (orig) == SYMBOL_REF + /* See the comment in sparc_expand_move. */ + || (GET_CODE (orig) == LABEL_REF && !can_use_mov_pic_label_ref (orig))) + { ++ bool gotdata_op = false; + rtx pic_ref, address; + rtx_insn *insn; + +- if (reg == 0) ++ if (!reg) + { + gcc_assert (can_create_pseudo_p ()); + reg = gen_reg_rtx (Pmode); +@@ -4687,8 +4691,7 @@ + /* If not during reload, allocate another temp reg here for loading + in the address, so that these instructions can be optimized + properly. */ +- rtx temp_reg = (! can_create_pseudo_p () +- ? reg : gen_reg_rtx (Pmode)); ++ rtx temp_reg = can_create_pseudo_p () ? gen_reg_rtx (Pmode) : reg; + + /* Must put the SYMBOL_REF inside an UNSPEC here so that cse + won't get confused into thinking that these two instructions +@@ -4704,6 +4707,7 @@ + emit_insn (gen_movsi_high_pic (temp_reg, orig)); + emit_insn (gen_movsi_lo_sum_pic (temp_reg, temp_reg, orig)); + } ++ + address = temp_reg; + gotdata_op = true; + } +@@ -4744,7 +4748,7 @@ + && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx) + return orig; + +- if (reg == 0) ++ if (!reg) + { + gcc_assert (can_create_pseudo_p ()); + reg = gen_reg_rtx (Pmode); +@@ -4853,7 +4857,11 @@ + && XINT (XEXP (XEXP (x, 1), 1), 1) == UNSPEC_MOVE_PIC_LABEL) + { + x = XVECEXP (XEXP (XEXP (x, 1), 1), 0, 0); +- gcc_assert (GET_CODE (x) == LABEL_REF); ++ gcc_assert (GET_CODE (x) == LABEL_REF ++ || (GET_CODE (x) == CONST ++ && GET_CODE (XEXP (x, 0)) == PLUS ++ && GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF ++ && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)); + } + + return x; +Index: gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/i386.h (.../branches/gcc-7-branch) +@@ -759,8 +759,7 @@ + #define PARM_BOUNDARY BITS_PER_WORD + + /* Boundary (in *bits*) on which stack pointer should be aligned. */ +-#define STACK_BOUNDARY \ +- (TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD) ++#define STACK_BOUNDARY (TARGET_64BIT_MS_ABI ? 128 : BITS_PER_WORD) + + /* Stack boundary of the main function guaranteed by OS. */ + #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32) +@@ -1557,10 +1556,10 @@ + #define FIRST_FLOAT_REG FIRST_STACK_REG + #define STACK_TOP_P(X) (REG_P (X) && REGNO (X) == FIRST_FLOAT_REG) + +-#define SSE_REGNO(N) \ +- ((N) < 8 ? FIRST_SSE_REG + (N) \ +- : (N) <= LAST_REX_SSE_REG ? (FIRST_REX_SSE_REG + (N) - 8) \ +- : (FIRST_EXT_REX_SSE_REG + (N) - 16)) ++#define GET_SSE_REGNO(N) \ ++ ((N) < 8 ? FIRST_SSE_REG + (N) \ ++ : (N) < 16 ? FIRST_REX_SSE_REG + (N) - 8 \ ++ : FIRST_EXT_REX_SSE_REG + (N) - 16) + + /* The class value for index registers, and the one for base regs. */ + +@@ -2719,6 +2718,11 @@ + #define TARGET_RECIP_VEC_DIV ((recip_mask & RECIP_MASK_VEC_DIV) != 0) + #define TARGET_RECIP_VEC_SQRT ((recip_mask & RECIP_MASK_VEC_SQRT) != 0) + ++ ++#define TARGET_INDIRECT_BRANCH_REGISTER \ ++ (ix86_indirect_branch_register \ ++ || cfun->machine->indirect_branch_type != indirect_branch_keep) ++ + #define IX86_HLE_ACQUIRE (1 << 16) + #define IX86_HLE_RELEASE (1 << 17) + +Index: gcc/config/i386/cygming.h +=================================================================== +--- a/src/gcc/config/i386/cygming.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/cygming.h (.../branches/gcc-7-branch) +@@ -269,9 +269,6 @@ + bytes in one go. */ + #define CHECK_STACK_LIMIT 4000 + +-#undef STACK_BOUNDARY +-#define STACK_BOUNDARY (TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD) +- + /* By default, target has a 80387, uses IEEE compatible arithmetic, + returns float values in the 387 and needs stack probes. + We also align doubles to 64-bits for MSVC default compatibility. */ +Index: gcc/config/i386/i386.md +=================================================================== +--- a/src/gcc/config/i386/i386.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/i386.md (.../branches/gcc-7-branch) +@@ -739,7 +739,7 @@ + (if_then_else (match_operand 1 "constant_call_address_operand") + (const_string "none") + (const_string "load")) +- (and (eq_attr "type" "alu1,negnot,ishift1,sselog1,sseshuf1") ++ (and (eq_attr "type" "alu1,negnot,ishift1,rotate1,sselog1,sseshuf1") + (match_operand 1 "memory_operand")) + (const_string "both") + (and (match_operand 0 "memory_operand") +@@ -750,7 +750,7 @@ + (match_operand 1 "memory_operand") + (const_string "load") + (and (eq_attr "type" +- "!alu1,negnot,ishift1, ++ "!alu1,negnot,ishift1,rotate1, + imov,imovx,icmp,test,bitmanip, + fmov,fcmp,fsgn, + sse,ssemov,ssecmp,ssecomi,ssecvt,ssecvt1,sseicvt, +@@ -6685,6 +6685,20 @@ + (set_attr "pent_pair" "pu") + (set_attr "mode" "")]) + ++(define_insn "*add3_carry_0" ++ [(set (match_operand:SWI 0 "nonimmediate_operand" "=m") ++ (plus:SWI ++ (match_operator:SWI 3 "ix86_carry_flag_operator" ++ [(match_operand 2 "flags_reg_operand") (const_int 0)]) ++ (match_operand:SWI 1 "nonimmediate_operand" "0"))) ++ (clobber (reg:CC FLAGS_REG))] ++ "ix86_unary_operator_ok (PLUS, mode, operands)" ++ "adc{}\t{$0, %0|%0, 0}" ++ [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") ++ (set_attr "pent_pair" "pu") ++ (set_attr "mode" "")]) ++ + (define_insn "*addsi3_carry_zext" + [(set (match_operand:DI 0 "register_operand" "=r") + (zero_extend:DI +@@ -6701,6 +6715,20 @@ + (set_attr "pent_pair" "pu") + (set_attr "mode" "SI")]) + ++(define_insn "*addsi3_carry_zext_0" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (zero_extend:DI ++ (plus:SI (match_operator:SI 2 "ix86_carry_flag_operator" ++ [(reg FLAGS_REG) (const_int 0)]) ++ (match_operand:SI 1 "register_operand" "0")))) ++ (clobber (reg:CC FLAGS_REG))] ++ "TARGET_64BIT" ++ "adc{l}\t{$0, %k0|%k0, 0}" ++ [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") ++ (set_attr "pent_pair" "pu") ++ (set_attr "mode" "SI")]) ++ + ;; There is no point to generate ADCX instruction. ADC is shorter and faster. + + (define_insn "addcarry" +@@ -6741,6 +6769,20 @@ + (set_attr "pent_pair" "pu") + (set_attr "mode" "")]) + ++(define_insn "*sub3_carry_0" ++ [(set (match_operand:SWI 0 "nonimmediate_operand" "=m") ++ (minus:SWI ++ (match_operand:SWI 1 "nonimmediate_operand" "0") ++ (match_operator:SWI 3 "ix86_carry_flag_operator" ++ [(match_operand 2 "flags_reg_operand") (const_int 0)]))) ++ (clobber (reg:CC FLAGS_REG))] ++ "ix86_unary_operator_ok (MINUS, mode, operands)" ++ "sbb{}\t{$0, %0|%0, 0}" ++ [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") ++ (set_attr "pent_pair" "pu") ++ (set_attr "mode" "")]) ++ + (define_insn "*subsi3_carry_zext" + [(set (match_operand:DI 0 "register_operand" "=r") + (zero_extend:DI +@@ -6758,6 +6800,21 @@ + (set_attr "pent_pair" "pu") + (set_attr "mode" "SI")]) + ++(define_insn "*subsi3_carry_zext_0" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (zero_extend:DI ++ (minus:SI ++ (match_operand:SI 1 "register_operand" "0") ++ (match_operator:SI 2 "ix86_carry_flag_operator" ++ [(reg FLAGS_REG) (const_int 0)])))) ++ (clobber (reg:CC FLAGS_REG))] ++ "TARGET_64BIT" ++ "sbb{l}\t{$0, %k0|%k0, 0}" ++ [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") ++ (set_attr "pent_pair" "pu") ++ (set_attr "mode" "SI")]) ++ + (define_insn "subborrow" + [(set (reg:CCC FLAGS_REG) + (compare:CCC +@@ -8584,14 +8641,14 @@ + }) + + (define_insn "*andndi3_doubleword" +- [(set (match_operand:DI 0 "register_operand" "=r,&r") ++ [(set (match_operand:DI 0 "register_operand" "=&r,r,r,&r") + (and:DI +- (not:DI (match_operand:DI 1 "register_operand" "r,0")) +- (match_operand:DI 2 "nonimmediate_operand" "rm,rm"))) ++ (not:DI (match_operand:DI 1 "register_operand" "r,0,r,0")) ++ (match_operand:DI 2 "nonimmediate_operand" "rm,rm,0,rm"))) + (clobber (reg:CC FLAGS_REG))] + "!TARGET_64BIT && TARGET_STV && TARGET_SSE2" + "#" +- [(set_attr "isa" "bmi,*")]) ++ [(set_attr "isa" "bmi,bmi,bmi,*")]) + + (define_split + [(set (match_operand:DI 0 "register_operand") +@@ -9916,7 +9973,7 @@ + { + switch (get_attr_type (insn)) + { +- case TYPE_ALU: ++ case TYPE_ALU1: + gcc_assert (operands[1] == const1_rtx); + return "add{b}\t%0, %0"; + +@@ -9932,12 +9989,12 @@ + (cond [(and (and (match_test "TARGET_DOUBLE_WITH_ADD") + (match_operand 0 "register_operand")) + (match_operand 1 "const1_operand")) +- (const_string "alu") ++ (const_string "alu1") + ] + (const_string "ishift1"))) + (set (attr "length_immediate") + (if_then_else +- (ior (eq_attr "type" "alu") ++ (ior (eq_attr "type" "alu1") + (and (eq_attr "type" "ishift1") + (and (match_operand 1 "const1_operand") + (ior (match_test "TARGET_SHIFT1") +@@ -11625,7 +11682,7 @@ + [(set (pc) (match_operand 0 "indirect_branch_operand"))] + "" + { +- if (TARGET_X32 || ix86_indirect_branch_register) ++ if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER) + operands[0] = convert_memory_address (word_mode, operands[0]); + cfun->machine->has_local_indirect_jump = true; + }) +@@ -11633,7 +11690,7 @@ + (define_insn "*indirect_jump" + [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw"))] + "" +- "* return ix86_output_indirect_jmp (operands[0], false);" ++ "* return ix86_output_indirect_jmp (operands[0]);" + [(set (attr "type") + (if_then_else (match_test "(cfun->machine->indirect_branch_type + != indirect_branch_keep)") +@@ -11679,7 +11736,7 @@ + OPTAB_DIRECT); + } + +- if (TARGET_X32 || ix86_indirect_branch_register) ++ if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER) + operands[0] = convert_memory_address (word_mode, operands[0]); + cfun->machine->has_local_indirect_jump = true; + }) +@@ -11688,7 +11745,7 @@ + [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw")) + (use (label_ref (match_operand 1)))] + "" +- "* return ix86_output_indirect_jmp (operands[0], false);" ++ "* return ix86_output_indirect_jmp (operands[0]);" + [(set (attr "type") + (if_then_else (match_test "(cfun->machine->indirect_branch_type + != indirect_branch_keep)") +@@ -11730,6 +11787,7 @@ + "(peep2_reg_dead_p (3, operands[1]) + || operands_match_p (operands[1], operands[3])) + && ! reg_overlap_mentioned_p (operands[3], operands[0]) ++ && ! reg_overlap_mentioned_p (operands[3], operands[4]) + && ! reg_set_p (operands[3], operands[4]) + && peep2_regno_dead_p (0, FLAGS_REG)" + [(parallel [(set (match_dup 5) (match_dup 0)) +@@ -11776,6 +11834,7 @@ + "(peep2_reg_dead_p (3, operands[1]) + || operands_match_p (operands[1], operands[3])) + && ! reg_overlap_mentioned_p (operands[3], operands[0]) ++ && ! reg_overlap_mentioned_p (operands[3], operands[4]) + && ! reg_set_p (operands[3], operands[4]) + && peep2_regno_dead_p (0, FLAGS_REG)" + [(parallel [(set (match_dup 5) (match_dup 0)) +@@ -11852,7 +11911,10 @@ + (match_operand:SI 0 "register_no_elim_operand" "U") + (match_operand:SI 1 "GOT32_symbol_operand")))) + (match_operand 2))] +- "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)" ++ "!TARGET_MACHO ++ && !TARGET_64BIT ++ && !TARGET_INDIRECT_BRANCH_REGISTER ++ && SIBLING_CALL_P (insn)" + { + rtx fnaddr = gen_rtx_PLUS (SImode, operands[0], operands[1]); + fnaddr = gen_const_mem (SImode, fnaddr); +@@ -11871,7 +11933,7 @@ + [(call (mem:QI (match_operand:W 0 "memory_operand" "m")) + (match_operand 1)) + (unspec [(const_int 0)] UNSPEC_PEEPSIB)] +- "!TARGET_X32 && !ix86_indirect_branch_register" ++ "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER" + "* return ix86_output_call_insn (insn, operands[0]);" + [(set_attr "type" "call")]) + +@@ -11881,7 +11943,7 @@ + (call (mem:QI (match_dup 0)) + (match_operand 3))] + "!TARGET_X32 +- && !ix86_indirect_branch_register ++ && !TARGET_INDIRECT_BRANCH_REGISTER + && SIBLING_CALL_P (peep2_next_insn (1)) + && !reg_mentioned_p (operands[0], + CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))" +@@ -11896,7 +11958,7 @@ + (call (mem:QI (match_dup 0)) + (match_operand 3))] + "!TARGET_X32 +- && !ix86_indirect_branch_register ++ && !TARGET_INDIRECT_BRANCH_REGISTER + && SIBLING_CALL_P (peep2_next_insn (2)) + && !reg_mentioned_p (operands[0], + CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))" +@@ -11994,7 +12056,7 @@ + (match_operand:W 1 "memory_operand")) + (set (pc) (match_dup 0))] + "!TARGET_X32 +- && !ix86_indirect_branch_register ++ && !TARGET_INDIRECT_BRANCH_REGISTER + && peep2_reg_dead_p (2, operands[0])" + [(set (pc) (match_dup 1))]) + +@@ -12055,7 +12117,10 @@ + (match_operand:SI 1 "register_no_elim_operand" "U") + (match_operand:SI 2 "GOT32_symbol_operand")))) + (match_operand 3)))] +- "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)" ++ "!TARGET_MACHO ++ && !TARGET_64BIT ++ && !TARGET_INDIRECT_BRANCH_REGISTER ++ && SIBLING_CALL_P (insn)" + { + rtx fnaddr = gen_rtx_PLUS (SImode, operands[1], operands[2]); + fnaddr = gen_const_mem (SImode, fnaddr); +@@ -12076,7 +12141,7 @@ + (call (mem:QI (match_operand:W 1 "memory_operand" "m")) + (match_operand 2))) + (unspec [(const_int 0)] UNSPEC_PEEPSIB)] +- "!TARGET_X32 && !ix86_indirect_branch_register" ++ "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER" + "* return ix86_output_call_insn (insn, operands[1]);" + [(set_attr "type" "callv")]) + +@@ -12087,7 +12152,7 @@ + (call (mem:QI (match_dup 0)) + (match_operand 3)))] + "!TARGET_X32 +- && !ix86_indirect_branch_register ++ && !TARGET_INDIRECT_BRANCH_REGISTER + && SIBLING_CALL_P (peep2_next_insn (1)) + && !reg_mentioned_p (operands[0], + CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))" +@@ -12104,7 +12169,7 @@ + (call (mem:QI (match_dup 0)) + (match_operand 3)))] + "!TARGET_X32 +- && !ix86_indirect_branch_register ++ && !TARGET_INDIRECT_BRANCH_REGISTER + && SIBLING_CALL_P (peep2_next_insn (2)) + && !reg_mentioned_p (operands[0], + CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))" +@@ -12354,11 +12419,14 @@ + (set_attr "prefix_rep" "1") + (set_attr "modrm" "0")]) + +-(define_insn "simple_return_pop_internal" ++(define_insn_and_split "simple_return_pop_internal" + [(simple_return) + (use (match_operand:SI 0 "const_int_operand"))] + "reload_completed" + "%!ret\t%0" ++ "&& cfun->machine->function_return_type != indirect_branch_keep" ++ [(const_int 0)] ++ "ix86_split_simple_return_pop_internal (operands[0]); DONE;" + [(set_attr "length" "3") + (set_attr "atom_unit" "jeu") + (set_attr "length_immediate" "2") +@@ -12369,7 +12437,7 @@ + [(simple_return) + (use (match_operand:SI 0 "register_operand" "r"))] + "reload_completed" +- "* return ix86_output_indirect_jmp (operands[0], true);" ++ "* return ix86_output_indirect_function_return (operands[0]);" + [(set (attr "type") + (if_then_else (match_test "(cfun->machine->indirect_branch_type + != indirect_branch_keep)") +@@ -12524,7 +12592,10 @@ + stack address we wish to restore. */ + tmp = gen_rtx_PLUS (Pmode, arg_pointer_rtx, sa); + tmp = plus_constant (Pmode, tmp, -UNITS_PER_WORD); +- tmp = gen_rtx_MEM (Pmode, tmp); ++ /* Return address is always in word_mode. */ ++ tmp = gen_rtx_MEM (word_mode, tmp); ++ if (GET_MODE (ra) != word_mode) ++ ra = convert_to_mode (word_mode, ra, 1); + emit_move_insn (tmp, ra); + + emit_jump_insn (gen_eh_return_internal ()); +@@ -15527,7 +15598,8 @@ + "(TARGET_USE_FANCY_MATH_387 + && (!(SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH) + || TARGET_MIX_SSE_I387) +- && flag_unsafe_math_optimizations) ++ && flag_unsafe_math_optimizations ++ && (flag_fp_int_builtin_inexact || !flag_trapping_math)) + || (SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH + && !flag_trapping_math && !flag_rounding_math)" + { +Index: gcc/config/i386/constraints.md +=================================================================== +--- a/src/gcc/config/i386/constraints.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/constraints.md (.../branches/gcc-7-branch) +@@ -198,7 +198,7 @@ + + (define_constraint "Bs" + "@internal Sibcall memory operand." +- (ior (and (not (match_test "ix86_indirect_branch_register")) ++ (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) + (not (match_test "TARGET_X32")) + (match_operand 0 "sibcall_memory_operand")) + (and (match_test "TARGET_X32 && Pmode == DImode") +@@ -206,7 +206,7 @@ + + (define_constraint "Bw" + "@internal Call memory operand." +- (ior (and (not (match_test "ix86_indirect_branch_register")) ++ (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) + (not (match_test "TARGET_X32")) + (match_operand 0 "memory_operand")) + (and (match_test "TARGET_X32 && Pmode == DImode") +Index: gcc/config/i386/predicates.md +=================================================================== +--- a/src/gcc/config/i386/predicates.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/predicates.md (.../branches/gcc-7-branch) +@@ -635,7 +635,7 @@ + ;; Test for a valid operand for indirect branch. + (define_predicate "indirect_branch_operand" + (ior (match_operand 0 "register_operand") +- (and (not (match_test "ix86_indirect_branch_register")) ++ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) + (not (match_test "TARGET_X32")) + (match_operand 0 "memory_operand")))) + +@@ -679,7 +679,7 @@ + (ior (match_test "constant_call_address_operand + (op, mode == VOIDmode ? mode : Pmode)") + (match_operand 0 "call_register_no_elim_operand") +- (and (not (match_test "ix86_indirect_branch_register")) ++ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) + (ior (and (not (match_test "TARGET_X32")) + (match_operand 0 "memory_operand")) + (and (match_test "TARGET_X32 && Pmode == DImode") +@@ -690,7 +690,7 @@ + (ior (match_test "constant_call_address_operand + (op, mode == VOIDmode ? mode : Pmode)") + (match_operand 0 "register_no_elim_operand") +- (and (not (match_test "ix86_indirect_branch_register")) ++ (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER")) + (ior (and (not (match_test "TARGET_X32")) + (match_operand 0 "sibcall_memory_operand")) + (and (match_test "TARGET_X32 && Pmode == DImode") +@@ -1499,7 +1499,7 @@ + if (GET_CODE (elt) != SET + || GET_CODE (SET_DEST (elt)) != REG + || GET_MODE (SET_DEST (elt)) != V8SImode +- || REGNO (SET_DEST (elt)) != SSE_REGNO (i) ++ || REGNO (SET_DEST (elt)) != GET_SSE_REGNO (i) + || SET_SRC (elt) != CONST0_RTX (V8SImode)) + return false; + } +Index: gcc/config/i386/gnu-user.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/gnu-user.h (.../branches/gcc-7-branch) +@@ -67,7 +67,7 @@ + + #undef ASM_SPEC + #define ASM_SPEC \ +- "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" ++ "--32 %{msse2avx:%{!mavx:-msse2avx}}" + + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ +Index: gcc/config/i386/sse.md +=================================================================== +--- a/src/gcc/config/i386/sse.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/sse.md (.../branches/gcc-7-branch) +@@ -21,6 +21,9 @@ + ;; SSE + UNSPEC_MOVNT + ++ ;; SSE2 ++ UNSPEC_MOVDI_TO_SSE ++ + ;; SSE3 + UNSPEC_LDDQU + +@@ -1113,10 +1116,10 @@ + ;; from there. + + (define_insn_and_split "movdi_to_sse" +- [(parallel +- [(set (match_operand:V4SI 0 "register_operand" "=?x,x") +- (subreg:V4SI (match_operand:DI 1 "nonimmediate_operand" "r,m") 0)) +- (clobber (match_scratch:V4SI 2 "=&x,X"))])] ++ [(set (match_operand:V4SI 0 "register_operand" "=?x,x") ++ (unspec:V4SI [(match_operand:DI 1 "nonimmediate_operand" "r,m")] ++ UNSPEC_MOVDI_TO_SSE)) ++ (clobber (match_scratch:V4SI 2 "=&x,X"))] + "!TARGET_64BIT && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_TO_VEC" + "#" + "&& reload_completed" +@@ -1134,11 +1137,8 @@ + operands[2])); + } + else if (memory_operand (operands[1], DImode)) +- { +- rtx tmp = gen_reg_rtx (V2DImode); +- emit_insn (gen_vec_concatv2di (tmp, operands[1], const0_rtx)); +- emit_move_insn (operands[0], gen_lowpart (V4SImode, tmp)); +- } ++ emit_insn (gen_vec_concatv2di (gen_lowpart (V2DImode, operands[0]), ++ operands[1], const0_rtx)); + else + gcc_unreachable (); + DONE; +@@ -4398,7 +4398,7 @@ + (match_operand:VF_128 1 "register_operand" "v") + (const_int 1)))] + "TARGET_AVX512F && TARGET_64BIT" +- "vcvtusi2\t{%2, %1, %0|%0, %1, %2}" ++ "vcvtusi2{q}\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseicvt") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -8883,14 +8883,14 @@ + ;; see comment above inline_secondary_memory_needed function in i386.c + (define_insn "sse2_loadhpd" + [(set (match_operand:V2DF 0 "nonimmediate_operand" +- "=x,v,x,v,o,o ,o") ++ "=x,v,x,v ,o,o ,o") + (vec_concat:V2DF + (vec_select:DF + (match_operand:V2DF 1 "nonimmediate_operand" +- " 0,v,0,v,0,0 ,0") ++ " 0,v,0,v ,0,0 ,0") + (parallel [(const_int 0)])) + (match_operand:DF 2 "nonimmediate_operand" +- " m,m,x,v,x,*f,r")))] ++ " m,m,x,Yv,x,*f,r")))] + "TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "@ + movhpd\t{%2, %0|%0, %2} +@@ -9938,11 +9938,11 @@ + && ix86_binary_operator_ok (, mode, operands)" + "@ + p\t{%2, %0|%0, %2} +- vp\t{%2, %1, %0|%0, %1, %2}" ++ vp\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") + (set_attr "prefix_data16" "1,*") +- (set_attr "prefix" "") ++ (set_attr "prefix" "orig,vex") + (set_attr "mode" "")]) + + (define_insn "*3_mask" +@@ -10683,11 +10683,14 @@ + (const_string "0"))) + (set_attr "mode" "")]) + ++(define_mode_attr vshift_count ++ [(V32HI "v") (V16HI "Yv") (V8HI "Yv")]) ++ + (define_insn "3" + [(set (match_operand:VI2_AVX2_AVX512BW 0 "register_operand" "=x,v") + (any_lshift:VI2_AVX2_AVX512BW + (match_operand:VI2_AVX2_AVX512BW 1 "register_operand" "0,v") +- (match_operand:DI 2 "nonmemory_operand" "xN,vN")))] ++ (match_operand:DI 2 "nonmemory_operand" "xN,N")))] + "TARGET_SSE2 && && " + "@ + p\t{%2, %0|%0, %2} +@@ -10706,7 +10709,7 @@ + [(set (match_operand:VI48_AVX2 0 "register_operand" "=x,x,v") + (any_lshift:VI48_AVX2 + (match_operand:VI48_AVX2 1 "register_operand" "0,x,v") +- (match_operand:DI 2 "nonmemory_operand" "xN,xN,vN")))] ++ (match_operand:DI 2 "nonmemory_operand" "xN,xN,YvN")))] + "TARGET_SSE2 && " + "@ + p\t{%2, %0|%0, %2} +@@ -11822,7 +11825,7 @@ + (eq_attr "mode" "TI")) + (const_string "1") + (const_string "*"))) +- (set_attr "prefix" "") ++ (set_attr "prefix" "orig,vex") + (set (attr "mode") + (cond [(and (match_test " == 16") + (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")) +@@ -17245,7 +17248,7 @@ + + for (regno = 0; regno < nregs; regno++) + XVECEXP (operands[0], 0, regno + 1) +- = gen_rtx_SET (gen_rtx_REG (V8SImode, SSE_REGNO (regno)), ++ = gen_rtx_SET (gen_rtx_REG (V8SImode, GET_SSE_REGNO (regno)), + CONST0_RTX (V8SImode)); + }) + +Index: gcc/config/i386/i386-builtin.def +=================================================================== +--- a/src/gcc/config/i386/i386-builtin.def (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/i386-builtin.def (.../branches/gcc-7-branch) +@@ -90,6 +90,7 @@ + BDESC_FIRST (special_args, SPECIAL_ARGS, + 0, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID) + BDESC (0, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED) ++BDESC (0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT) + BDESC (0, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID) + + /* 80387 (for use internally for atomic compound assignment). */ +@@ -387,7 +388,6 @@ + BDESC_FIRST (args, ARGS, + 0, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT) + BDESC (OPTION_MASK_ISA_64BIT, CODE_FOR_bsr_rex64, "__builtin_ia32_bsrdi", IX86_BUILTIN_BSRDI, UNKNOWN, (int) INT64_FTYPE_INT64) +-BDESC (0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT) + BDESC (0, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT) + BDESC (0, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT) + BDESC (0, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT) +Index: gcc/config/i386/gnu-user64.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user64.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/gnu-user64.h (.../branches/gcc-7-branch) +@@ -50,7 +50,7 @@ + #define ASM_SPEC "%{" SPEC_32 ":--32} \ + %{" SPEC_64 ":--64} \ + %{" SPEC_X32 ":--x32} \ +- %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" ++ %{msse2avx:%{!mavx:-msse2avx}}" + + #define GNU_USER_TARGET_LINK_SPEC \ + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ +Index: gcc/config/i386/darwin.h +=================================================================== +--- a/src/gcc/config/i386/darwin.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/darwin.h (.../branches/gcc-7-branch) +@@ -87,8 +87,7 @@ + or dynamic loader. */ + #undef STACK_BOUNDARY + #define STACK_BOUNDARY \ +- ((profile_flag || (TARGET_64BIT && ix86_abi == MS_ABI)) \ +- ? 128 : BITS_PER_WORD) ++ ((profile_flag || TARGET_64BIT_MS_ABI) ? 128 : BITS_PER_WORD) + + #undef MAIN_STACK_BOUNDARY + #define MAIN_STACK_BOUNDARY 128 +Index: gcc/config/i386/emmintrin.h +=================================================================== +--- a/src/gcc/config/i386/emmintrin.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/emmintrin.h (.../branches/gcc-7-branch) +@@ -45,6 +45,7 @@ + typedef short __v8hi __attribute__ ((__vector_size__ (16))); + typedef unsigned short __v8hu __attribute__ ((__vector_size__ (16))); + typedef char __v16qi __attribute__ ((__vector_size__ (16))); ++typedef signed char __v16qs __attribute__ ((__vector_size__ (16))); + typedef unsigned char __v16qu __attribute__ ((__vector_size__ (16))); + + /* The Intel API is flexible enough that we must allow aliasing with other +@@ -1295,7 +1296,7 @@ + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) + _mm_cmpeq_epi8 (__m128i __A, __m128i __B) + { +- return (__m128i) ((__v16qi)__A == (__v16qi)__B); ++ return (__m128i) ((__v16qs)__A == (__v16qs)__B); + } + + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +@@ -1313,7 +1314,7 @@ + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) + _mm_cmplt_epi8 (__m128i __A, __m128i __B) + { +- return (__m128i) ((__v16qi)__A < (__v16qi)__B); ++ return (__m128i) ((__v16qs)__A < (__v16qs)__B); + } + + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +@@ -1331,7 +1332,7 @@ + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) + _mm_cmpgt_epi8 (__m128i __A, __m128i __B) + { +- return (__m128i) ((__v16qi)__A > (__v16qi)__B); ++ return (__m128i) ((__v16qs)__A > (__v16qs)__B); + } + + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +Index: gcc/config/i386/i386-protos.h +=================================================================== +--- a/src/gcc/config/i386/i386-protos.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/i386-protos.h (.../branches/gcc-7-branch) +@@ -313,8 +313,10 @@ + #endif + + extern const char * ix86_output_call_insn (rtx_insn *insn, rtx call_op); +-extern const char * ix86_output_indirect_jmp (rtx call_op, bool ret_p); ++extern const char * ix86_output_indirect_jmp (rtx call_op); + extern const char * ix86_output_function_return (bool long_p); ++extern const char * ix86_output_indirect_function_return (rtx ret_op); ++extern void ix86_split_simple_return_pop_internal (rtx); + extern bool ix86_operands_ok_for_move_multiple (rtx *operands, bool load, + enum machine_mode mode); + +Index: gcc/config/i386/avx512fintrin.h +=================================================================== +--- a/src/gcc/config/i386/avx512fintrin.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/avx512fintrin.h (.../branches/gcc-7-branch) +@@ -3333,7 +3333,7 @@ + (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, -1, R) + + #define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) \ +- (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R) ++ (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, U, R) + + #define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) \ + (__m512d)__builtin_ia32_vfmaddsubpd512_mask3(A, B, C, U, R) +@@ -7298,7 +7298,7 @@ + + extern __inline __m512d + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm512_abs_pd (__m512 __A) ++_mm512_abs_pd (__m512d __A) + { + return (__m512d) _mm512_and_epi64 ((__m512i) __A, + _mm512_set1_epi64 (0x7fffffffffffffffLL)); +@@ -7306,7 +7306,7 @@ + + extern __inline __m512d + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512 __A) ++_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A) + { + return (__m512d) + _mm512_mask_and_epi64 ((__m512i) __W, __U, (__m512i) __A, +Index: gcc/config/i386/avx512vlintrin.h +=================================================================== +--- a/src/gcc/config/i386/avx512vlintrin.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/avx512vlintrin.h (.../branches/gcc-7-branch) +@@ -9099,6 +9099,17 @@ + + extern __inline __m256i + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm256_permutexvar_epi64 (__m256i __X, __m256i __Y) ++{ ++ return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y, ++ (__v4di) __X, ++ (__v4di) ++ _mm256_setzero_si256 (), ++ (__mmask8) -1); ++} ++ ++extern __inline __m256i ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X, + __m256i __Y) + { +@@ -9163,6 +9174,17 @@ + + extern __inline __m256i + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm256_permutexvar_epi32 (__m256i __X, __m256i __Y) ++{ ++ return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y, ++ (__v8si) __X, ++ (__v8si) ++ _mm256_setzero_si256 (), ++ (__mmask8) -1); ++} ++ ++extern __inline __m256i ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X, + __m256i __Y) + { +@@ -9751,6 +9773,17 @@ + #ifdef __OPTIMIZE__ + extern __inline __m256i + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm256_permutex_epi64 (__m256i __X, const int __I) ++{ ++ return (__m256i) __builtin_ia32_permdi256_mask ((__v4di) __X, ++ __I, ++ (__v4di) ++ _mm256_setzero_si256 (), ++ (__mmask8) -1); ++} ++ ++extern __inline __m256i ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm256_mask_permutex_epi64 (__m256i __W, __mmask8 __M, + __m256i __X, const int __I) + { +@@ -12367,6 +12400,13 @@ + _mm256_undefined_pd (), \ + (__mmask8)-1)) + ++#define _mm256_permutex_epi64(X, I) \ ++ ((__m256i) __builtin_ia32_permdi256_mask ((__v4di)(__m256i)(X), \ ++ (int)(I), \ ++ (__v4di)(__m256i) \ ++ (_mm256_setzero_si256 ()),\ ++ (__mmask8) -1)) ++ + #define _mm256_maskz_permutex_epi64(M, X, I) \ + ((__m256i) __builtin_ia32_permdi256_mask ((__v4di)(__m256i)(X), \ + (int)(I), \ +Index: gcc/config/i386/i386.c +=================================================================== +--- a/src/gcc/config/i386/i386.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/i386/i386.c (.../branches/gcc-7-branch) +@@ -9442,7 +9442,7 @@ + case X86_64_SSEDF_CLASS: + if (mode != BLKmode) + return gen_reg_or_parallel (mode, orig_mode, +- SSE_REGNO (sse_regno)); ++ GET_SSE_REGNO (sse_regno)); + break; + case X86_64_X87_CLASS: + case X86_64_COMPLEX_X87_CLASS: +@@ -9458,7 +9458,7 @@ + && regclass[1] == X86_64_SSEUP_CLASS + && mode != BLKmode) + return gen_reg_or_parallel (mode, orig_mode, +- SSE_REGNO (sse_regno)); ++ GET_SSE_REGNO (sse_regno)); + if (n == 4 + && regclass[0] == X86_64_SSE_CLASS + && regclass[1] == X86_64_SSEUP_CLASS +@@ -9466,7 +9466,7 @@ + && regclass[3] == X86_64_SSEUP_CLASS + && mode != BLKmode) + return gen_reg_or_parallel (mode, orig_mode, +- SSE_REGNO (sse_regno)); ++ GET_SSE_REGNO (sse_regno)); + if (n == 8 + && regclass[0] == X86_64_SSE_CLASS + && regclass[1] == X86_64_SSEUP_CLASS +@@ -9478,7 +9478,7 @@ + && regclass[7] == X86_64_SSEUP_CLASS + && mode != BLKmode) + return gen_reg_or_parallel (mode, orig_mode, +- SSE_REGNO (sse_regno)); ++ GET_SSE_REGNO (sse_regno)); + if (n == 2 + && regclass[0] == X86_64_X87_CLASS + && regclass[1] == X86_64_X87UP_CLASS) +@@ -9487,9 +9487,22 @@ + if (n == 2 + && regclass[0] == X86_64_INTEGER_CLASS + && regclass[1] == X86_64_INTEGER_CLASS +- && (mode == CDImode || mode == TImode) ++ && (mode == CDImode || mode == TImode || mode == BLKmode) + && intreg[0] + 1 == intreg[1]) +- return gen_rtx_REG (mode, intreg[0]); ++ { ++ if (mode == BLKmode) ++ { ++ /* Use TImode for BLKmode values in 2 integer registers. */ ++ exp[0] = gen_rtx_EXPR_LIST (VOIDmode, ++ gen_rtx_REG (TImode, intreg[0]), ++ GEN_INT (0)); ++ ret = gen_rtx_PARALLEL (mode, rtvec_alloc (1)); ++ XVECEXP (ret, 0, 0) = exp[0]; ++ return ret; ++ } ++ else ++ return gen_rtx_REG (mode, intreg[0]); ++ } + + /* Otherwise figure out the entries of the PARALLEL. */ + for (i = 0; i < n; i++) +@@ -9524,7 +9537,7 @@ + exp [nexps++] + = gen_rtx_EXPR_LIST (VOIDmode, + gen_rtx_REG (SFmode, +- SSE_REGNO (sse_regno)), ++ GET_SSE_REGNO (sse_regno)), + GEN_INT (i*8)); + sse_regno++; + break; +@@ -9532,7 +9545,7 @@ + exp [nexps++] + = gen_rtx_EXPR_LIST (VOIDmode, + gen_rtx_REG (DFmode, +- SSE_REGNO (sse_regno)), ++ GET_SSE_REGNO (sse_regno)), + GEN_INT (i*8)); + sse_regno++; + break; +@@ -9578,7 +9591,7 @@ + exp [nexps++] + = gen_rtx_EXPR_LIST (VOIDmode, + gen_rtx_REG (tmpmode, +- SSE_REGNO (sse_regno)), ++ GET_SSE_REGNO (sse_regno)), + GEN_INT (pos*8)); + sse_regno++; + break; +@@ -11013,7 +11026,7 @@ + set_mem_alias_set (mem, set); + set_mem_align (mem, GET_MODE_ALIGNMENT (smode)); + +- emit_move_insn (mem, gen_rtx_REG (smode, SSE_REGNO (i))); ++ emit_move_insn (mem, gen_rtx_REG (smode, GET_SSE_REGNO (i))); + } + + emit_label (label); +@@ -12031,19 +12044,29 @@ + labels in call and return thunks. */ + static int indirectlabelno; + +-/* True if call and return thunk functions are needed. */ ++/* True if call thunk function is needed. */ + static bool indirect_thunk_needed = false; +-/* True if call and return thunk functions with the BND prefix are +- needed. */ ++/* True if call thunk function with the BND prefix is needed. */ + static bool indirect_thunk_bnd_needed = false; + + /* Bit masks of integer registers, which contain branch target, used +- by call and return thunks functions. */ ++ by call thunk functions. */ + static int indirect_thunks_used; + /* Bit masks of integer registers, which contain branch target, used +- by call and return thunks functions with the BND prefix. */ ++ by call thunk functions with the BND prefix. */ + static int indirect_thunks_bnd_used; + ++/* True if return thunk function is needed. */ ++static bool indirect_return_needed = false; ++/* True if return thunk function with the BND prefix is needed. */ ++static bool indirect_return_bnd_needed = false; ++ ++/* True if return thunk function via CX is needed. */ ++static bool indirect_return_via_cx; ++/* True if return thunk function via CX with the BND prefix is ++ needed. */ ++static bool indirect_return_via_cx_bnd; ++ + #ifndef INDIRECT_LABEL + # define INDIRECT_LABEL "LIND" + #endif +@@ -12051,16 +12074,17 @@ + /* Fills in the label name that should be used for the indirect thunk. */ + + static void +-indirect_thunk_name (char name[32], int regno, bool need_bnd_p, +- bool ret_p) ++indirect_thunk_name (char name[32], unsigned int regno, ++ bool need_bnd_p, bool ret_p) + { +- if (regno >= 0 && ret_p) ++ if (regno != INVALID_REGNUM && regno != CX_REG && ret_p) + gcc_unreachable (); + + if (USE_HIDDEN_LINKONCE) + { + const char *bnd = need_bnd_p ? "_bnd" : ""; +- if (regno >= 0) ++ const char *ret = ret_p ? "return" : "indirect"; ++ if (regno != INVALID_REGNUM) + { + const char *reg_prefix; + if (LEGACY_INT_REGNO_P (regno)) +@@ -12067,18 +12091,15 @@ + reg_prefix = TARGET_64BIT ? "r" : "e"; + else + reg_prefix = ""; +- sprintf (name, "__x86_indirect_thunk%s_%s%s", +- bnd, reg_prefix, reg_names[regno]); ++ sprintf (name, "__x86_%s_thunk%s_%s%s", ++ ret, bnd, reg_prefix, reg_names[regno]); + } + else +- { +- const char *ret = ret_p ? "return" : "indirect"; +- sprintf (name, "__x86_%s_thunk%s", ret, bnd); +- } ++ sprintf (name, "__x86_%s_thunk%s", ret, bnd); + } + else + { +- if (regno >= 0) ++ if (regno != INVALID_REGNUM) + { + if (need_bnd_p) + ASM_GENERATE_INTERNAL_LABEL (name, "LITBR", regno); +@@ -12130,7 +12151,7 @@ + */ + + static void +-output_indirect_thunk (bool need_bnd_p, int regno) ++output_indirect_thunk (bool need_bnd_p, unsigned int regno) + { + char indirectlabel1[32]; + char indirectlabel2[32]; +@@ -12160,7 +12181,7 @@ + + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); + +- if (regno >= 0) ++ if (regno != INVALID_REGNUM) + { + /* MOV. */ + rtx xops[2]; +@@ -12184,18 +12205,20 @@ + } + + /* Output a funtion with a call and return thunk for indirect branch. +- If BND_P is true, the BND prefix is needed. If REGNO != -1, the +- function address is in REGNO. Otherwise, the function address is +- on the top of stack. */ ++ If BND_P is true, the BND prefix is needed. If REGNO != INVALID_REGNUM, ++ the function address is in REGNO. Otherwise, the function address is ++ on the top of stack. Thunk is used for function return if RET_P is ++ true. */ + + static void +-output_indirect_thunk_function (bool need_bnd_p, int regno) ++output_indirect_thunk_function (bool need_bnd_p, unsigned int regno, ++ bool ret_p) + { + char name[32]; + tree decl; + + /* Create __x86_indirect_thunk/__x86_indirect_thunk_bnd. */ +- indirect_thunk_name (name, regno, need_bnd_p, false); ++ indirect_thunk_name (name, regno, need_bnd_p, ret_p); + decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL, + get_identifier (name), + build_function_type_list (void_type_node, NULL_TREE)); +@@ -12238,36 +12261,6 @@ + ASM_OUTPUT_LABEL (asm_out_file, name); + } + +- if (regno < 0) +- { +- /* Create alias for __x86.return_thunk/__x86.return_thunk_bnd. */ +- char alias[32]; +- +- indirect_thunk_name (alias, regno, need_bnd_p, true); +-#if TARGET_MACHO +- if (TARGET_MACHO) +- { +- fputs ("\t.weak_definition\t", asm_out_file); +- assemble_name (asm_out_file, alias); +- fputs ("\n\t.private_extern\t", asm_out_file); +- assemble_name (asm_out_file, alias); +- putc ('\n', asm_out_file); +- ASM_OUTPUT_LABEL (asm_out_file, alias); +- } +-#else +- ASM_OUTPUT_DEF (asm_out_file, alias, name); +- if (USE_HIDDEN_LINKONCE) +- { +- fputs ("\t.globl\t", asm_out_file); +- assemble_name (asm_out_file, alias); +- putc ('\n', asm_out_file); +- fputs ("\t.hidden\t", asm_out_file); +- assemble_name (asm_out_file, alias); +- putc ('\n', asm_out_file); +- } +-#endif +- } +- + DECL_INITIAL (decl) = make_node (BLOCK); + current_function_decl = decl; + allocate_struct_function (decl, false); +@@ -12312,21 +12305,31 @@ + ix86_code_end (void) + { + rtx xops[2]; +- int regno; ++ unsigned int regno; + ++ if (indirect_return_needed) ++ output_indirect_thunk_function (false, INVALID_REGNUM, true); ++ if (indirect_return_bnd_needed) ++ output_indirect_thunk_function (true, INVALID_REGNUM, true); ++ ++ if (indirect_return_via_cx) ++ output_indirect_thunk_function (false, CX_REG, true); ++ if (indirect_return_via_cx_bnd) ++ output_indirect_thunk_function (true, CX_REG, true); ++ + if (indirect_thunk_needed) +- output_indirect_thunk_function (false, -1); ++ output_indirect_thunk_function (false, INVALID_REGNUM, false); + if (indirect_thunk_bnd_needed) +- output_indirect_thunk_function (true, -1); ++ output_indirect_thunk_function (true, INVALID_REGNUM, false); + + for (regno = FIRST_REX_INT_REG; regno <= LAST_REX_INT_REG; regno++) + { +- int i = regno - FIRST_REX_INT_REG + LAST_INT_REG + 1; ++ unsigned int i = regno - FIRST_REX_INT_REG + LAST_INT_REG + 1; + if ((indirect_thunks_used & (1 << i))) +- output_indirect_thunk_function (false, regno); ++ output_indirect_thunk_function (false, regno, false); + + if ((indirect_thunks_bnd_used & (1 << i))) +- output_indirect_thunk_function (true, regno); ++ output_indirect_thunk_function (true, regno, false); + } + + for (regno = AX_REG; regno <= SP_REG; regno++) +@@ -12335,10 +12338,10 @@ + tree decl; + + if ((indirect_thunks_used & (1 << regno))) +- output_indirect_thunk_function (false, regno); ++ output_indirect_thunk_function (false, regno, false); + + if ((indirect_thunks_bnd_used & (1 << regno))) +- output_indirect_thunk_function (true, regno); ++ output_indirect_thunk_function (true, regno, false); + + if (!(pic_labels_used & (1 << regno))) + continue; +@@ -14061,7 +14064,6 @@ + { + struct machine_function *m = cfun->machine; + rtx insn, t; +- struct ix86_frame frame; + HOST_WIDE_INT allocate; + bool int_registers_saved; + bool sse_registers_saved; +@@ -14085,7 +14087,7 @@ + m->fs.sp_valid = true; + + ix86_compute_frame_layout (); +- frame = m->frame; ++ const struct ix86_frame &frame = cfun->machine->frame; + + if (!TARGET_64BIT && ix86_function_ms_hook_prologue (current_function_decl)) + { +@@ -14748,13 +14750,12 @@ + { + struct machine_function *m = cfun->machine; + struct machine_frame_state frame_state_save = m->fs; +- struct ix86_frame frame; + bool restore_regs_via_mov; + bool using_drap; + + ix86_finalize_stack_realign_flags (); + ix86_compute_frame_layout (); +- frame = m->frame; ++ const struct ix86_frame &frame = cfun->machine->frame; + + m->fs.sp_valid = (!frame_pointer_needed + || (crtl->sp_is_unchanging +@@ -14796,11 +14797,13 @@ + + UNITS_PER_WORD); + } + ++ HOST_WIDE_INT reg_save_offset = frame.reg_save_offset; ++ + /* Special care must be taken for the normal return case of a function + using eh_return: the eax and edx registers are marked as saved, but + not restored along this path. Adjust the save location to match. */ + if (crtl->calls_eh_return && style != 2) +- frame.reg_save_offset -= 2 * UNITS_PER_WORD; ++ reg_save_offset -= 2 * UNITS_PER_WORD; + + /* EH_RETURN requires the use of moves to function properly. */ + if (crtl->calls_eh_return) +@@ -14816,11 +14819,11 @@ + else if (TARGET_EPILOGUE_USING_MOVE + && cfun->machine->use_fast_prologue_epilogue + && (frame.nregs > 1 +- || m->fs.sp_offset != frame.reg_save_offset)) ++ || m->fs.sp_offset != reg_save_offset)) + restore_regs_via_mov = true; + else if (frame_pointer_needed + && !frame.nregs +- && m->fs.sp_offset != frame.reg_save_offset) ++ && m->fs.sp_offset != reg_save_offset) + restore_regs_via_mov = true; + else if (frame_pointer_needed + && TARGET_USE_LEAVE +@@ -14858,7 +14861,7 @@ + rtx t; + + if (frame.nregs) +- ix86_emit_restore_regs_using_mov (frame.reg_save_offset, style == 2); ++ ix86_emit_restore_regs_using_mov (reg_save_offset, style == 2); + + /* eh_return epilogues need %ecx added to the stack pointer. */ + if (style == 2) +@@ -14948,19 +14951,19 @@ + epilogues. */ + if (!m->fs.sp_valid + || (TARGET_SEH +- && (m->fs.sp_offset - frame.reg_save_offset ++ && (m->fs.sp_offset - reg_save_offset + >= SEH_MAX_FRAME_SIZE))) + { + pro_epilogue_adjust_stack (stack_pointer_rtx, hard_frame_pointer_rtx, + GEN_INT (m->fs.fp_offset +- - frame.reg_save_offset), ++ - reg_save_offset), + style, false); + } +- else if (m->fs.sp_offset != frame.reg_save_offset) ++ else if (m->fs.sp_offset != reg_save_offset) + { + pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx, + GEN_INT (m->fs.sp_offset +- - frame.reg_save_offset), ++ - reg_save_offset), + style, + m->fs.cfa_reg == stack_pointer_rtx); + } +@@ -18842,7 +18845,8 @@ + since we can in fact encode that into an immediate. */ + if (GET_CODE (x) == CONST_VECTOR) + { +- gcc_assert (x == CONST0_RTX (GET_MODE (x))); ++ if (x != CONST0_RTX (GET_MODE (x))) ++ output_operand_lossage ("invalid vector immediate"); + x = const0_rtx; + } + +@@ -19807,74 +19811,38 @@ + emit_insn (gen_x86_fnstcw_1 (stored_mode)); + emit_move_insn (reg, copy_rtx (stored_mode)); + +- if (TARGET_64BIT || TARGET_PARTIAL_REG_STALL +- || optimize_insn_for_size_p ()) ++ switch (mode) + { +- switch (mode) +- { +- case I387_CW_TRUNC: +- /* round toward zero (truncate) */ +- emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0c00))); +- slot = SLOT_CW_TRUNC; +- break; ++ case I387_CW_TRUNC: ++ /* round toward zero (truncate) */ ++ emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0c00))); ++ slot = SLOT_CW_TRUNC; ++ break; + +- case I387_CW_FLOOR: +- /* round down toward -oo */ +- emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00))); +- emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0400))); +- slot = SLOT_CW_FLOOR; +- break; ++ case I387_CW_FLOOR: ++ /* round down toward -oo */ ++ emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00))); ++ emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0400))); ++ slot = SLOT_CW_FLOOR; ++ break; + +- case I387_CW_CEIL: +- /* round up toward +oo */ +- emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00))); +- emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0800))); +- slot = SLOT_CW_CEIL; +- break; ++ case I387_CW_CEIL: ++ /* round up toward +oo */ ++ emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00))); ++ emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0800))); ++ slot = SLOT_CW_CEIL; ++ break; + +- case I387_CW_MASK_PM: +- /* mask precision exception for nearbyint() */ +- emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0020))); +- slot = SLOT_CW_MASK_PM; +- break; ++ case I387_CW_MASK_PM: ++ /* mask precision exception for nearbyint() */ ++ emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0020))); ++ slot = SLOT_CW_MASK_PM; ++ break; + +- default: +- gcc_unreachable (); +- } ++ default: ++ gcc_unreachable (); + } +- else +- { +- switch (mode) +- { +- case I387_CW_TRUNC: +- /* round toward zero (truncate) */ +- emit_insn (gen_insvsi_1 (reg, GEN_INT (0xc))); +- slot = SLOT_CW_TRUNC; +- break; + +- case I387_CW_FLOOR: +- /* round down toward -oo */ +- emit_insn (gen_insvsi_1 (reg, GEN_INT (0x4))); +- slot = SLOT_CW_FLOOR; +- break; +- +- case I387_CW_CEIL: +- /* round up toward +oo */ +- emit_insn (gen_insvsi_1 (reg, GEN_INT (0x8))); +- slot = SLOT_CW_CEIL; +- break; +- +- case I387_CW_MASK_PM: +- /* mask precision exception for nearbyint() */ +- emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0020))); +- slot = SLOT_CW_MASK_PM; +- break; +- +- default: +- gcc_unreachable (); +- } +- } +- + gcc_assert (slot < MAX_386_STACK_LOCALS); + + new_mode = assign_386_stack_local (HImode, slot); +@@ -29109,18 +29077,17 @@ + else + ix86_output_indirect_branch_via_push (call_op, xasm, sibcall_p); + } +-/* Output indirect jump. CALL_OP is the jump target. Jump is a +- function return if RET_P is true. */ + ++/* Output indirect jump. CALL_OP is the jump target. */ ++ + const char * +-ix86_output_indirect_jmp (rtx call_op, bool ret_p) ++ix86_output_indirect_jmp (rtx call_op) + { + if (cfun->machine->indirect_branch_type != indirect_branch_keep) + { +- /* We can't have red-zone if this isn't a function return since +- "call" in the indirect thunk pushes the return address onto +- stack, destroying red-zone. */ +- if (!ret_p && ix86_red_zone_size != 0) ++ /* We can't have red-zone since "call" in the indirect thunk ++ pushes the return address onto stack, destroying red-zone. */ ++ if (ix86_red_zone_size != 0) + gcc_unreachable (); + + ix86_output_indirect_branch (call_op, "%0", true); +@@ -29146,20 +29113,21 @@ + { + bool need_thunk = (cfun->machine->function_return_type + == indirect_branch_thunk); +- indirect_thunk_name (thunk_name, -1, need_bnd_p, true); ++ indirect_thunk_name (thunk_name, INVALID_REGNUM, need_bnd_p, ++ true); + if (need_bnd_p) + { +- indirect_thunk_bnd_needed |= need_thunk; ++ indirect_return_bnd_needed |= need_thunk; + fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); + } + else + { +- indirect_thunk_needed |= need_thunk; ++ indirect_return_needed |= need_thunk; + fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); + } + } + else +- output_indirect_thunk (need_bnd_p, -1); ++ output_indirect_thunk (need_bnd_p, INVALID_REGNUM); + + return ""; + } +@@ -29170,6 +29138,86 @@ + return "rep%; ret"; + } + ++/* Output indirect function return. RET_OP is the function return ++ target. */ ++ ++const char * ++ix86_output_indirect_function_return (rtx ret_op) ++{ ++ if (cfun->machine->function_return_type != indirect_branch_keep) ++ { ++ char thunk_name[32]; ++ bool need_bnd_p = ix86_bnd_prefixed_insn_p (current_output_insn); ++ unsigned int regno = REGNO (ret_op); ++ gcc_assert (regno == CX_REG); ++ ++ if (cfun->machine->function_return_type ++ != indirect_branch_thunk_inline) ++ { ++ bool need_thunk = (cfun->machine->function_return_type ++ == indirect_branch_thunk); ++ indirect_thunk_name (thunk_name, regno, need_bnd_p, true); ++ if (need_bnd_p) ++ { ++ if (need_thunk) ++ { ++ indirect_return_via_cx_bnd = true; ++ indirect_thunks_bnd_used |= 1 << CX_REG; ++ } ++ fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ } ++ else ++ { ++ if (need_thunk) ++ { ++ indirect_return_via_cx = true; ++ indirect_thunks_used |= 1 << CX_REG; ++ } ++ fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ } ++ } ++ else ++ output_indirect_thunk (need_bnd_p, regno); ++ ++ return ""; ++ } ++ else ++ return "%!jmp\t%A0"; ++} ++ ++/* Split simple return with popping POPC bytes from stack to indirect ++ branch with stack adjustment . */ ++ ++void ++ix86_split_simple_return_pop_internal (rtx popc) ++{ ++ struct machine_function *m = cfun->machine; ++ rtx ecx = gen_rtx_REG (SImode, CX_REG); ++ rtx_insn *insn; ++ ++ /* There is no "pascal" calling convention in any 64bit ABI. */ ++ gcc_assert (!TARGET_64BIT); ++ ++ insn = emit_insn (gen_pop (ecx)); ++ m->fs.cfa_offset -= UNITS_PER_WORD; ++ m->fs.sp_offset -= UNITS_PER_WORD; ++ ++ rtx x = plus_constant (Pmode, stack_pointer_rtx, UNITS_PER_WORD); ++ x = gen_rtx_SET (stack_pointer_rtx, x); ++ add_reg_note (insn, REG_CFA_ADJUST_CFA, x); ++ add_reg_note (insn, REG_CFA_REGISTER, gen_rtx_SET (ecx, pc_rtx)); ++ RTX_FRAME_RELATED_P (insn) = 1; ++ ++ x = gen_rtx_PLUS (Pmode, stack_pointer_rtx, popc); ++ x = gen_rtx_SET (stack_pointer_rtx, x); ++ insn = emit_insn (x); ++ add_reg_note (insn, REG_CFA_ADJUST_CFA, x); ++ RTX_FRAME_RELATED_P (insn) = 1; ++ ++ /* Now return address is in ECX. */ ++ emit_jump_insn (gen_simple_return_indirect_internal (ecx)); ++} ++ + /* Output the assembly for a call instruction. */ + + const char * +Index: gcc/config/avr/avr.md +=================================================================== +--- a/src/gcc/config/avr/avr.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/avr/avr.md (.../branches/gcc-7-branch) +@@ -3362,6 +3362,8 @@ + (match_operand:HI 1 "reg_or_0_operand"))] + "optimize + && reload_completed ++ && GENERAL_REG_P (operands[0]) ++ && (operands[1] == const0_rtx || GENERAL_REG_P (operands[1])) + && (!AVR_HAVE_MOVW + || const0_rtx == operands[1])" + [(set (match_dup 2) (match_dup 3)) +Index: gcc/config/avr/avr.h +=================================================================== +--- a/src/gcc/config/avr/avr.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/avr/avr.h (.../branches/gcc-7-branch) +@@ -153,6 +153,9 @@ + + #define FIRST_PSEUDO_REGISTER 36 + ++#define GENERAL_REGNO_P(N) IN_RANGE (N, 2, 31) ++#define GENERAL_REG_P(X) (REG_P (X) && GENERAL_REGNO_P (REGNO (X))) ++ + #define FIXED_REGISTERS {\ + 1,1,/* r0 r1 */\ + 0,0,/* r2 r3 */\ +Index: gcc/config/xtensa/xtensa.md +=================================================================== +--- a/src/gcc/config/xtensa/xtensa.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/xtensa/xtensa.md (.../branches/gcc-7-branch) +@@ -38,6 +38,7 @@ + (UNSPEC_MEMW 11) + (UNSPEC_LSETUP_START 12) + (UNSPEC_LSETUP_END 13) ++ (UNSPEC_FRAME_BLOCKAGE 14) + + (UNSPECV_SET_FP 1) + (UNSPECV_ENTRY 2) +@@ -1676,6 +1677,32 @@ + + ;; Miscellaneous instructions. + ++;; In windowed ABI stack pointer adjustment must happen before any access ++;; to the space allocated on stack is allowed, otherwise register spill ++;; area may be clobbered. That's what frame blockage is supposed to enforce. ++ ++(define_expand "allocate_stack" ++ [(set (match_operand 0 "nonimmed_operand") ++ (minus (reg A1_REG) (match_operand 1 "add_operand"))) ++ (set (reg A1_REG) ++ (minus (reg A1_REG) (match_dup 1)))] ++ "TARGET_WINDOWED_ABI" ++{ ++ if (CONST_INT_P (operands[1])) ++ { ++ rtx neg_op0 = GEN_INT (-INTVAL (operands[1])); ++ emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, neg_op0)); ++ } ++ else ++ { ++ emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx, ++ operands[1])); ++ } ++ emit_move_insn (operands[0], virtual_stack_dynamic_rtx); ++ emit_insn (gen_frame_blockage ()); ++ DONE; ++}) ++ + (define_expand "prologue" + [(const_int 0)] + "" +@@ -1767,6 +1794,25 @@ + [(set_attr "length" "0") + (set_attr "type" "nop")]) + ++;; Do not schedule instructions accessing memory before this point. ++ ++(define_expand "frame_blockage" ++ [(set (match_dup 0) ++ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++{ ++ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); ++ MEM_VOLATILE_P (operands[0]) = 1; ++ operands[1] = stack_pointer_rtx; ++}) ++ ++(define_insn "*frame_blockage" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_operand:SI 1 "" "")] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++ "" ++ [(set_attr "length" "0")]) ++ + (define_insn "trap" + [(trap_if (const_int 1) (const_int 0))] + "" +Index: gcc/config/xtensa/xtensa.c +=================================================================== +--- a/src/gcc/config/xtensa/xtensa.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/xtensa/xtensa.c (.../branches/gcc-7-branch) +@@ -1591,9 +1591,9 @@ + break; + + case MULT: /* NAND */ +- tmp = expand_simple_binop (SImode, XOR, old, ac.modemask, ++ tmp = expand_simple_binop (SImode, AND, old, val, + NULL_RTX, 1, OPTAB_DIRECT); +- tmp = expand_simple_binop (SImode, AND, tmp, val, ++ tmp = expand_simple_binop (SImode, XOR, tmp, ac.modemask, + new_rtx, 1, OPTAB_DIRECT); + break; + +Index: gcc/config/xtensa/uclinux.h +=================================================================== +--- a/src/gcc/config/xtensa/uclinux.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/xtensa/uclinux.h (.../branches/gcc-7-branch) +@@ -59,8 +59,8 @@ + #undef LOCAL_LABEL_PREFIX + #define LOCAL_LABEL_PREFIX "." + +-/* Always enable "-fpic" for Xtensa Linux. */ +-#define XTENSA_ALWAYS_PIC 1 ++/* Don't enable "-fpic" for Xtensa uclinux. */ ++#define XTENSA_ALWAYS_PIC 0 + + #undef TARGET_LIBC_HAS_FUNCTION + #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function +Index: gcc/config/gnu-user.h +=================================================================== +--- a/src/gcc/config/gnu-user.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/gnu-user.h (.../branches/gcc-7-branch) +@@ -122,7 +122,7 @@ + + #define GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC \ + "%{shared:-lc} \ +- %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}" ++ %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + + #define GNU_USER_TARGET_LIB_SPEC \ + "%{pthread:-lpthread} " \ +Index: gcc/config/rtems.h +=================================================================== +--- a/src/gcc/config/rtems.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rtems.h (.../branches/gcc-7-branch) +@@ -48,3 +48,7 @@ + -latomic -lc -lgcc --end-group %{!qnolinkcmds: -T linkcmds%s}}}" + + #define TARGET_POSIX_IO ++ ++/* Prefer int for int32_t (see stdint-newlib.h). */ ++#undef STDINT_LONG32 ++#define STDINT_LONG32 (INT_TYPE_SIZE != 32 && LONG_TYPE_SIZE == 32) +Index: gcc/config/m68k/m68k.c +=================================================================== +--- a/src/gcc/config/m68k/m68k.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/m68k/m68k.c (.../branches/gcc-7-branch) +@@ -185,6 +185,8 @@ + static void m68k_init_sync_libfuncs (void) ATTRIBUTE_UNUSED; + static enum flt_eval_method + m68k_excess_precision (enum excess_precision_type); ++static machine_mode m68k_promote_function_mode (const_tree, machine_mode, ++ int *, const_tree, int); + + /* Initialize the GCC target structure. */ + +@@ -332,6 +334,9 @@ + #undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL + #define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 128 + ++#undef TARGET_PROMOTE_FUNCTION_MODE ++#define TARGET_PROMOTE_FUNCTION_MODE m68k_promote_function_mode ++ + static const struct attribute_spec m68k_attribute_table[] = + { + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, +@@ -6571,4 +6576,20 @@ + return FLT_EVAL_METHOD_UNPREDICTABLE; + } + ++/* Implement TARGET_PROMOTE_FUNCTION_MODE. */ ++ ++static machine_mode ++m68k_promote_function_mode (const_tree type, machine_mode mode, ++ int *punsignedp ATTRIBUTE_UNUSED, ++ const_tree fntype ATTRIBUTE_UNUSED, ++ int for_return) ++{ ++ /* Promote libcall arguments narrower than int to match the normal C ++ ABI (for which promotions are handled via ++ TARGET_PROMOTE_PROTOTYPES). */ ++ if (type == NULL_TREE && !for_return && (mode == QImode || mode == HImode)) ++ return SImode; ++ return mode; ++} ++ + #include "gt-m68k.h" +Index: gcc/config/riscv/t-rtems +=================================================================== +--- a/src/gcc/config/riscv/t-rtems (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/riscv/t-rtems (.../branches/gcc-7-branch) +@@ -0,0 +1,25 @@ ++MULTILIB_OPTIONS = ++MULTILIB_DIRNAMES = ++ ++MULTILIB_OPTIONS += march=rv32i/march=rv32im/march=rv32imafd/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv64imafd/march=rv64imac/march=rv64imafdc ++MULTILIB_DIRNAMES += rv32i rv32im rv32imafd rv32iac rv32imac rv32imafc rv64imafd rv64imac rv64imafdc ++ ++MULTILIB_OPTIONS += mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d ++MULTILIB_DIRNAMES += ilp32 ilp32f ilp32d lp64 lp64d ++ ++MULTILIB_OPTIONS += mcmodel=medany ++MULTILIB_DIRNAMES += medany ++ ++MULTILIB_REQUIRED = ++MULTILIB_REQUIRED += march=rv32i/mabi=ilp32 ++MULTILIB_REQUIRED += march=rv32im/mabi=ilp32 ++MULTILIB_REQUIRED += march=rv32imafd/mabi=ilp32d ++MULTILIB_REQUIRED += march=rv32iac/mabi=ilp32 ++MULTILIB_REQUIRED += march=rv32imac/mabi=ilp32 ++MULTILIB_REQUIRED += march=rv32imafc/mabi=ilp32f ++MULTILIB_REQUIRED += march=rv64imafd/mabi=lp64d ++MULTILIB_REQUIRED += march=rv64imafd/mabi=lp64d/mcmodel=medany ++MULTILIB_REQUIRED += march=rv64imac/mabi=lp64 ++MULTILIB_REQUIRED += march=rv64imac/mabi=lp64/mcmodel=medany ++MULTILIB_REQUIRED += march=rv64imafdc/mabi=lp64d ++MULTILIB_REQUIRED += march=rv64imafdc/mabi=lp64d/mcmodel=medany +Index: gcc/config/aarch64/aarch64-simd.md +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-simd.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64-simd.md (.../branches/gcc-7-branch) +@@ -2462,10 +2462,10 @@ + break; + } + /* Fall through. */ +- case UNGE: ++ case UNLT: + std::swap (operands[2], operands[3]); + /* Fall through. */ +- case UNLE: ++ case UNGT: + case GT: + comparison = gen_aarch64_cmgt; + break; +@@ -2476,10 +2476,10 @@ + break; + } + /* Fall through. */ +- case UNGT: ++ case UNLE: + std::swap (operands[2], operands[3]); + /* Fall through. */ +- case UNLT: ++ case UNGE: + case GE: + comparison = gen_aarch64_cmge; + break; +@@ -2490,6 +2490,7 @@ + case UNEQ: + case ORDERED: + case UNORDERED: ++ case LTGT: + break; + default: + gcc_unreachable (); +@@ -2501,21 +2502,35 @@ + case UNGT: + case UNLE: + case UNLT: +- case NE: +- /* FCM returns false for lanes which are unordered, so if we use +- the inverse of the comparison we actually want to emit, then +- invert the result, we will end up with the correct result. +- Note that a NE NaN and NaN NE b are true for all a, b. ++ { ++ /* All of the above must not raise any FP exceptions. Thus we first ++ check each operand for NaNs and force any elements containing NaN to ++ zero before using them in the compare. ++ Example: UN (a, b) -> UNORDERED (a, b) | ++ (cm (isnan (a) ? 0.0 : a, ++ isnan (b) ? 0.0 : b)) ++ We use the following transformations for doing the comparisions: ++ a UNGE b -> a GE b ++ a UNGT b -> a GT b ++ a UNLE b -> b GE a ++ a UNLT b -> b GT a. */ + +- Our transformations are: +- a UNGE b -> !(b GT a) +- a UNGT b -> !(b GE a) +- a UNLE b -> !(a GT b) +- a UNLT b -> !(a GE b) +- a NE b -> !(a EQ b) */ +- gcc_assert (comparison != NULL); +- emit_insn (comparison (operands[0], operands[2], operands[3])); +- emit_insn (gen_one_cmpl2 (operands[0], operands[0])); ++ rtx tmp0 = gen_reg_rtx (mode); ++ rtx tmp1 = gen_reg_rtx (mode); ++ rtx tmp2 = gen_reg_rtx (mode); ++ emit_insn (gen_aarch64_cmeq (tmp0, operands[2], operands[2])); ++ emit_insn (gen_aarch64_cmeq (tmp1, operands[3], operands[3])); ++ emit_insn (gen_and3 (tmp2, tmp0, tmp1)); ++ emit_insn (gen_and3 (tmp0, tmp0, ++ lowpart_subreg (mode, operands[2], mode))); ++ emit_insn (gen_and3 (tmp1, tmp1, ++ lowpart_subreg (mode, operands[3], mode))); ++ gcc_assert (comparison != NULL); ++ emit_insn (comparison (operands[0], ++ lowpart_subreg (mode, tmp0, mode), ++ lowpart_subreg (mode, tmp1, mode))); ++ emit_insn (gen_orn3 (operands[0], tmp2, operands[0])); ++ } + break; + + case LT: +@@ -2523,6 +2538,7 @@ + case GT: + case GE: + case EQ: ++ case NE: + /* The easy case. Here we emit one of FCMGE, FCMGT or FCMEQ. + As a LT b <=> b GE a && a LE b <=> b GT a. Our transformations are: + a GE b -> a GE b +@@ -2529,36 +2545,39 @@ + a GT b -> a GT b + a LE b -> b GE a + a LT b -> b GT a +- a EQ b -> a EQ b */ ++ a EQ b -> a EQ b ++ a NE b -> ~(a EQ b) */ + gcc_assert (comparison != NULL); + emit_insn (comparison (operands[0], operands[2], operands[3])); ++ if (code == NE) ++ emit_insn (gen_one_cmpl2 (operands[0], operands[0])); + break; + +- case UNEQ: +- /* We first check (a > b || b > a) which is !UNEQ, inverting +- this result will then give us (a == b || a UNORDERED b). */ ++ case LTGT: ++ /* LTGT is not guranteed to not generate a FP exception. So let's ++ go the faster way : ((a > b) || (b > a)). */ + emit_insn (gen_aarch64_cmgt (operands[0], + operands[2], operands[3])); + emit_insn (gen_aarch64_cmgt (tmp, operands[3], operands[2])); + emit_insn (gen_ior3 (operands[0], operands[0], tmp)); +- emit_insn (gen_one_cmpl2 (operands[0], operands[0])); + break; + ++ case ORDERED: + case UNORDERED: +- /* Operands are ORDERED iff (a > b || b >= a), so we can compute +- UNORDERED as !ORDERED. */ +- emit_insn (gen_aarch64_cmgt (tmp, operands[2], operands[3])); +- emit_insn (gen_aarch64_cmge (operands[0], +- operands[3], operands[2])); +- emit_insn (gen_ior3 (operands[0], operands[0], tmp)); +- emit_insn (gen_one_cmpl2 (operands[0], operands[0])); +- break; ++ case UNEQ: ++ /* cmeq (a, a) & cmeq (b, b). */ ++ emit_insn (gen_aarch64_cmeq (operands[0], ++ operands[2], operands[2])); ++ emit_insn (gen_aarch64_cmeq (tmp, operands[3], operands[3])); ++ emit_insn (gen_and3 (operands[0], operands[0], tmp)); + +- case ORDERED: +- emit_insn (gen_aarch64_cmgt (tmp, operands[2], operands[3])); +- emit_insn (gen_aarch64_cmge (operands[0], +- operands[3], operands[2])); +- emit_insn (gen_ior3 (operands[0], operands[0], tmp)); ++ if (code == UNORDERED) ++ emit_insn (gen_one_cmpl2 (operands[0], operands[0])); ++ else if (code == UNEQ) ++ { ++ emit_insn (gen_aarch64_cmeq (tmp, operands[2], operands[3])); ++ emit_insn (gen_orn3 (operands[0], operands[0], tmp)); ++ } + break; + + default: +Index: gcc/config/aarch64/aarch64.md +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-7-branch) +@@ -3093,7 +3093,8 @@ + (define_insn_and_split "*compare_cstore_insn" + [(set (match_operand:GPI 0 "register_operand" "=r") + (EQL:GPI (match_operand:GPI 1 "register_operand" "r") +- (match_operand:GPI 2 "aarch64_imm24" "n")))] ++ (match_operand:GPI 2 "aarch64_imm24" "n"))) ++ (clobber (reg:CC CC_REGNUM))] + "!aarch64_move_imm (INTVAL (operands[2]), mode) + && !aarch64_plus_operand (operands[2], mode) + && !reload_completed" +Index: gcc/config/aarch64/constraints.md +=================================================================== +--- a/src/gcc/config/aarch64/constraints.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/aarch64/constraints.md (.../branches/gcc-7-branch) +@@ -21,8 +21,8 @@ + (define_register_constraint "k" "STACK_REG" + "@internal The stack register.") + +-(define_register_constraint "Ucs" "CALLER_SAVE_REGS" +- "@internal The caller save registers.") ++(define_register_constraint "Ucs" "TAILCALL_ADDR_REGS" ++ "@internal Registers suitable for an indirect tail call") + + (define_register_constraint "w" "FP_REGS" + "Floating point and SIMD vector registers.") +Index: gcc/config/aarch64/aarch64.c +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-7-branch) +@@ -4664,7 +4664,6 @@ + case UNGT: + case UNGE: + case UNEQ: +- case LTGT: + return CCFPmode; + + case LT: +@@ -4671,6 +4670,7 @@ + case LE: + case GT: + case GE: ++ case LTGT: + return CCFPEmode; + + default: +@@ -5721,7 +5721,7 @@ + { + switch (regclass) + { +- case CALLER_SAVE_REGS: ++ case TAILCALL_ADDR_REGS: + case POINTER_REGS: + case GENERAL_REGS: + case ALL_REGS: +@@ -5804,7 +5804,7 @@ + -Wformat-truncation false positive, use a larger size. */ + char buf[23]; + snprintf (buf, sizeof (buf), ".init_array.%.5u", priority); +- s = get_section (buf, SECTION_WRITE, NULL); ++ s = get_section (buf, SECTION_WRITE | SECTION_NOTYPE, NULL); + switch_to_section (s); + assemble_align (POINTER_SIZE); + assemble_aligned_integer (POINTER_BYTES, symbol); +@@ -5824,7 +5824,7 @@ + -Wformat-truncation false positive, use a larger size. */ + char buf[23]; + snprintf (buf, sizeof (buf), ".fini_array.%.5u", priority); +- s = get_section (buf, SECTION_WRITE, NULL); ++ s = get_section (buf, SECTION_WRITE | SECTION_NOTYPE, NULL); + switch_to_section (s); + assemble_align (POINTER_SIZE); + assemble_aligned_integer (POINTER_BYTES, symbol); +@@ -6536,7 +6536,8 @@ + return CONST_INT_P (mask) && CONST_INT_P (shft_amnt) + && INTVAL (shft_amnt) < GET_MODE_BITSIZE (mode) + && exact_log2 ((INTVAL (mask) >> INTVAL (shft_amnt)) + 1) >= 0 +- && (INTVAL (mask) & ((1 << INTVAL (shft_amnt)) - 1)) == 0; ++ && (INTVAL (mask) ++ & ((HOST_WIDE_INT_1U << INTVAL (shft_amnt)) - 1)) == 0; + } + + /* Calculate the cost of calculating X, storing it in *COST. Result +@@ -7799,10 +7800,10 @@ + = aarch64_tune_params.regmove_cost; + + /* Caller save and pointer regs are equivalent to GENERAL_REGS. */ +- if (to == CALLER_SAVE_REGS || to == POINTER_REGS) ++ if (to == TAILCALL_ADDR_REGS || to == POINTER_REGS) + to = GENERAL_REGS; + +- if (from == CALLER_SAVE_REGS || from == POINTER_REGS) ++ if (from == TAILCALL_ADDR_REGS || from == POINTER_REGS) + from = GENERAL_REGS; + + /* Moving between GPR and stack cost is the same as GP2GP. */ +@@ -8608,17 +8609,6 @@ + if (opts->x_pcrelative_literal_loads == 1) + aarch64_pcrelative_literal_loads = true; + +- /* This is PR70113. When building the Linux kernel with +- CONFIG_ARM64_ERRATUM_843419, support for relocations +- R_AARCH64_ADR_PREL_PG_HI21 and R_AARCH64_ADR_PREL_PG_HI21_NC is +- removed from the kernel to avoid loading objects with possibly +- offending sequences. Without -mpc-relative-literal-loads we would +- generate such relocations, preventing the kernel build from +- succeeding. */ +- if (opts->x_pcrelative_literal_loads == 2 +- && TARGET_FIX_ERR_A53_843419) +- aarch64_pcrelative_literal_loads = true; +- + /* In the tiny memory model it makes no sense to disallow PC relative + literal pool loads. */ + if (aarch64_cmodel == AARCH64_CMODEL_TINY +Index: gcc/config/aarch64/aarch64.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64.h (.../branches/gcc-7-branch) +@@ -439,7 +439,7 @@ + enum reg_class + { + NO_REGS, +- CALLER_SAVE_REGS, ++ TAILCALL_ADDR_REGS, + GENERAL_REGS, + STACK_REG, + POINTER_REGS, +@@ -454,7 +454,7 @@ + #define REG_CLASS_NAMES \ + { \ + "NO_REGS", \ +- "CALLER_SAVE_REGS", \ ++ "TAILCALL_ADDR_REGS", \ + "GENERAL_REGS", \ + "STACK_REG", \ + "POINTER_REGS", \ +@@ -466,7 +466,7 @@ + #define REG_CLASS_CONTENTS \ + { \ + { 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */ \ +- { 0x0007ffff, 0x00000000, 0x00000000 }, /* CALLER_SAVE_REGS */ \ ++ { 0x0004ffff, 0x00000000, 0x00000000 }, /* TAILCALL_ADDR_REGS */\ + { 0x7fffffff, 0x00000000, 0x00000003 }, /* GENERAL_REGS */ \ + { 0x80000000, 0x00000000, 0x00000000 }, /* STACK_REG */ \ + { 0xffffffff, 0x00000000, 0x00000003 }, /* POINTER_REGS */ \ +Index: gcc/config/rs6000/vector.md +=================================================================== +--- a/src/gcc/config/rs6000/vector.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/vector.md (.../branches/gcc-7-branch) +@@ -180,12 +180,7 @@ + operands[1] = rs6000_address_for_altivec (operands[1]); + rtx and_op = XEXP (operands[1], 0); + gcc_assert (GET_CODE (and_op) == AND); +- rtx addr = XEXP (and_op, 0); +- if (GET_CODE (addr) == PLUS) +- emit_insn (gen_altivec_lvx__2op (operands[0], XEXP (addr, 0), +- XEXP (addr, 1))); +- else +- emit_insn (gen_altivec_lvx__1op (operands[0], operands[1])); ++ emit_insn (gen_altivec_lvx_ (operands[0], operands[1])); + DONE; + } + }") +@@ -203,12 +198,7 @@ + operands[0] = rs6000_address_for_altivec (operands[0]); + rtx and_op = XEXP (operands[0], 0); + gcc_assert (GET_CODE (and_op) == AND); +- rtx addr = XEXP (and_op, 0); +- if (GET_CODE (addr) == PLUS) +- emit_insn (gen_altivec_stvx__2op (operands[1], XEXP (addr, 0), +- XEXP (addr, 1))); +- else +- emit_insn (gen_altivec_stvx__1op (operands[1], operands[0])); ++ emit_insn (gen_altivec_stvx_ (operands[1], operands[0])); + DONE; + } + }") +Index: gcc/config/rs6000/predicates.md +=================================================================== +--- a/src/gcc/config/rs6000/predicates.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/predicates.md (.../branches/gcc-7-branch) +@@ -1468,13 +1468,12 @@ + rtx elt; + int count = XVECLEN (op, 0); + +- if (count != 59) ++ if (count != 58) + return 0; + + index = 0; + if (GET_CODE (XVECEXP (op, 0, index++)) != RETURN + || GET_CODE (XVECEXP (op, 0, index++)) != USE +- || GET_CODE (XVECEXP (op, 0, index++)) != USE + || GET_CODE (XVECEXP (op, 0, index++)) != CLOBBER) + return 0; + +Index: gcc/config/rs6000/sysv4.opt +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.opt (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/sysv4.opt (.../branches/gcc-7-branch) +@@ -27,6 +27,10 @@ + Target RejectNegative Joined Var(rs6000_sdata_name) + Select method for sdata handling. + ++mreadonly-in-sdata ++Target Report Var(rs6000_readonly_in_sdata) Init(1) Save ++Allow readonly data in sdata. ++ + mtls-size= + Target RejectNegative Joined Var(rs6000_tls_size) Enum(rs6000_tls_size) + Specify bit size of immediate TLS offsets. +Index: gcc/config/rs6000/rs6000-protos.h +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-protos.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000-protos.h (.../branches/gcc-7-branch) +@@ -139,7 +139,6 @@ + extern int rs6000_emit_cmove (rtx, rtx, rtx, rtx); + extern int rs6000_emit_vector_cond_expr (rtx, rtx, rtx, rtx, rtx, rtx); + extern void rs6000_emit_minmax (rtx, enum rtx_code, rtx, rtx); +-extern void rs6000_split_signbit (rtx, rtx); + extern void rs6000_expand_atomic_compare_and_swap (rtx op[]); + extern void rs6000_expand_atomic_exchange (rtx op[]); + extern void rs6000_expand_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx); +Index: gcc/config/rs6000/rs6000-builtin.def +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-builtin.def (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000-builtin.def (.../branches/gcc-7-branch) +@@ -1,5 +1,5 @@ + /* Builtin functions for rs6000/powerpc. +- Copyright (C) 2009-2017 Free Software Foundation, Inc. ++ Copyright (C) 2009-2018 Free Software Foundation, Inc. + Contributed by Michael Meissner (meissner@linux.vnet.ibm.com) + + This file is part of GCC. +@@ -659,6 +659,14 @@ + | RS6000_BTC_BINARY), \ + CODE_FOR_ ## ICODE) /* ICODE */ + ++#define BU_P7_POWERPC64_MISC_2(ENUM, NAME, ATTR, ICODE) \ ++ RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \ ++ "__builtin_" NAME, /* NAME */ \ ++ RS6000_BTM_POPCNTD /* MASK */ \ ++ | RS6000_BTM_POWERPC64, \ ++ (RS6000_BTC_ ## ATTR /* ATTR */ \ ++ | RS6000_BTC_BINARY), \ ++ CODE_FOR_ ## ICODE) /* ICODE */ + + /* Miscellaneous builtins for instructions added in ISA 2.07. These + instructions do require the ISA 2.07 vector support, but they aren't vector +@@ -2034,8 +2042,8 @@ + + /* Insert/extract 4 byte word into a vector. */ + BU_P9V_VSX_2 (VEXTRACT4B, "vextract4b", CONST, vextract4b) +-BU_P9V_VSX_3 (VINSERT4B, "vinsert4b", CONST, vinsert4b) +-BU_P9V_VSX_3 (VINSERT4B_DI, "vinsert4b_di", CONST, vinsert4b_di) ++BU_P9V_VSX_3 (INSERT4B, "insert4b", CONST, insert4b) ++BU_P9V_VSX_2 (EXTRACT4B, "extract4b", CONST, extract4b) + + /* 3 argument vector functions returning void, treated as SPECIAL, + added in ISA 3.0 (power9). */ +@@ -2084,10 +2092,11 @@ + BU_P9V_OVERLOAD_2 (VEXTULX, "vextulx") + BU_P9V_OVERLOAD_2 (VEXTURX, "vexturx") + BU_P9V_OVERLOAD_2 (VEXTRACT4B, "vextract4b") ++BU_P9V_OVERLOAD_2 (EXTRACT4B, "extract4b") + + /* ISA 3.0 Vector scalar overloaded 3 argument functions */ + BU_P9V_OVERLOAD_3 (STXVL, "stxvl") +-BU_P9V_OVERLOAD_3 (VINSERT4B, "vinsert4b") ++BU_P9V_OVERLOAD_3 (INSERT4B, "insert4b") + + /* Overloaded CMPNE support was implemented prior to Power 9, + so is not mentioned here. */ +@@ -2103,13 +2112,9 @@ + + /* 2 argument extended divide functions added in ISA 2.06. */ + BU_P7_MISC_2 (DIVWE, "divwe", CONST, dive_si) +-BU_P7_MISC_2 (DIVWEO, "divweo", CONST, diveo_si) + BU_P7_MISC_2 (DIVWEU, "divweu", CONST, diveu_si) +-BU_P7_MISC_2 (DIVWEUO, "divweuo", CONST, diveuo_si) +-BU_P7_MISC_2 (DIVDE, "divde", CONST, dive_di) +-BU_P7_MISC_2 (DIVDEO, "divdeo", CONST, diveo_di) +-BU_P7_MISC_2 (DIVDEU, "divdeu", CONST, diveu_di) +-BU_P7_MISC_2 (DIVDEUO, "divdeuo", CONST, diveuo_di) ++BU_P7_POWERPC64_MISC_2 (DIVDE, "divde", CONST, dive_di) ++BU_P7_POWERPC64_MISC_2 (DIVDEU, "divdeu", CONST, diveu_di) + + /* 1 argument DFP (decimal floating point) functions added in ISA 2.05. */ + BU_DFP_MISC_1 (DXEX, "dxex", CONST, dfp_dxex_dd) +Index: gcc/config/rs6000/rs6000-c.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-c.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000-c.c (.../branches/gcc-7-branch) +@@ -2393,7 +2393,7 @@ + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, + { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, +- { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS, ++ { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKUDUS, + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, + { ALTIVEC_BUILTIN_VEC_VPKSWUS, ALTIVEC_BUILTIN_VPKSWUS, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, +@@ -5047,6 +5047,8 @@ + RS6000_BTI_INTDI, RS6000_BTI_V16QI, RS6000_BTI_UINTSI, 0 }, + { P9V_BUILTIN_VEC_VEXTRACT4B, P9V_BUILTIN_VEXTRACT4B, + RS6000_BTI_INTDI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTSI, 0 }, ++ { P9V_BUILTIN_VEC_EXTRACT4B, P9V_BUILTIN_EXTRACT4B, ++ RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, 0 }, + + { P9V_BUILTIN_VEC_VEXTULX, P9V_BUILTIN_VEXTUBLX, + RS6000_BTI_INTQI, RS6000_BTI_UINTSI, +@@ -5101,27 +5103,12 @@ + { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0, 0 }, + +- { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B, +- RS6000_BTI_V16QI, RS6000_BTI_V4SI, +- RS6000_BTI_V16QI, RS6000_BTI_UINTSI }, +- { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B, +- RS6000_BTI_V16QI, RS6000_BTI_unsigned_V4SI, +- RS6000_BTI_V16QI, RS6000_BTI_UINTSI }, +- { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B, ++ { P9V_BUILTIN_VEC_INSERT4B, P9V_BUILTIN_INSERT4B, ++ RS6000_BTI_unsigned_V16QI, RS6000_BTI_V4SI, ++ RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, ++ { P9V_BUILTIN_VEC_INSERT4B, P9V_BUILTIN_INSERT4B, + RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, +- RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTSI }, +- { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, +- RS6000_BTI_V16QI, RS6000_BTI_INTDI, +- RS6000_BTI_V16QI, RS6000_BTI_UINTDI }, +- { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, +- RS6000_BTI_V16QI, RS6000_BTI_UINTDI, +- RS6000_BTI_V16QI, RS6000_BTI_UINTDI }, +- { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, +- RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTDI, +- RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI }, +- { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, +- RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI, +- RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI }, ++ RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, + + { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ, + RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI }, +@@ -6088,6 +6075,15 @@ + stmt = build_binary_op (loc, PLUS_EXPR, stmt, arg2, 1); + stmt = build_indirect_ref (loc, stmt, RO_NULL); + ++ /* PR83660: We mark this as having side effects so that ++ downstream in fold_build_cleanup_point_expr () it will get a ++ CLEANUP_POINT_EXPR. If it does not we can run into an ICE ++ later in gimplify_cleanup_point_expr (). Potentially this ++ causes missed optimization because the actually is no side ++ effect. */ ++ if (c_dialect_cxx ()) ++ TREE_SIDE_EFFECTS (stmt) = 1; ++ + return stmt; + } + +Index: gcc/config/rs6000/rs6000.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-7-branch) +@@ -1,5 +1,5 @@ + /* Subroutines used for code generation on IBM RS/6000. +- Copyright (C) 1991-2017 Free Software Foundation, Inc. ++ Copyright (C) 1991-2018 Free Software Foundation, Inc. + Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + This file is part of GCC. +@@ -1372,6 +1372,7 @@ + int, int, int *); + static bool rs6000_mode_dependent_address (const_rtx); + static bool rs6000_debug_mode_dependent_address (const_rtx); ++static bool rs6000_offsettable_memref_p (rtx, machine_mode, bool); + static enum reg_class rs6000_secondary_reload_class (enum reg_class, + machine_mode, rtx); + static enum reg_class rs6000_debug_secondary_reload_class (enum reg_class, +@@ -3890,6 +3891,7 @@ + | ((TARGET_P9_MISC) ? RS6000_BTM_P9_MISC : 0) + | ((TARGET_MODULO) ? RS6000_BTM_MODULO : 0) + | ((TARGET_64BIT) ? RS6000_BTM_64BIT : 0) ++ | ((TARGET_POWERPC64) ? RS6000_BTM_POWERPC64 : 0) + | ((TARGET_CRYPTO) ? RS6000_BTM_CRYPTO : 0) + | ((TARGET_HTM) ? RS6000_BTM_HTM : 0) + | ((TARGET_DFP) ? RS6000_BTM_DFP : 0) +@@ -5563,6 +5565,11 @@ + if (TARGET_LINK_STACK == -1) + SET_TARGET_LINK_STACK (rs6000_cpu == PROCESSOR_PPC476 && flag_pic); + ++ /* Deprecate use of -mno-speculate-indirect-jumps. */ ++ if (!rs6000_speculate_indirect_jumps) ++ warning (0, "%qs is deprecated and not recommended in any circumstances", ++ "-mno-speculate-indirect-jumps"); ++ + return ret; + } + +@@ -8558,6 +8565,17 @@ + int extra; + rtx addr = XEXP (op, 0); + ++ /* PR85755: Allow PRE_INC and PRE_DEC addresses. */ ++ if (TARGET_UPDATE ++ && (GET_CODE (addr) == PRE_INC || GET_CODE (addr) == PRE_DEC) ++ && mode_supports_pre_incdec_p (mode) ++ && legitimate_indirect_address_p (XEXP (addr, 0), false)) ++ return true; ++ ++ /* Don't allow non-offsettable addresses. See PRs 83969 and 84279. */ ++ if (!rs6000_offsettable_memref_p (op, mode, false)) ++ return false; ++ + op = address_offset (addr); + if (op == NULL_RTX) + return true; +@@ -8822,7 +8840,9 @@ + } + + return (GET_CODE (tocrel_base) == UNSPEC +- && XINT (tocrel_base, 1) == UNSPEC_TOCREL); ++ && XINT (tocrel_base, 1) == UNSPEC_TOCREL ++ && REG_P (XVECEXP (tocrel_base, 0, 1)) ++ && REGNO (XVECEXP (tocrel_base, 0, 1)) == TOC_REGISTER); + } + + /* Return true if X is a constant pool address, and also for cmodel=medium +@@ -10328,7 +10348,7 @@ + in 32-bit mode, that the recog predicate rejects. */ + + static bool +-rs6000_offsettable_memref_p (rtx op, machine_mode reg_mode) ++rs6000_offsettable_memref_p (rtx op, machine_mode reg_mode, bool strict) + { + bool worst_case; + +@@ -10336,7 +10356,7 @@ + return false; + + /* First mimic offsettable_memref_p. */ +- if (offsettable_address_p (true, GET_MODE (op), XEXP (op, 0))) ++ if (offsettable_address_p (strict, GET_MODE (op), XEXP (op, 0))) + return true; + + /* offsettable_address_p invokes rs6000_mode_dependent_address, but +@@ -10350,7 +10370,7 @@ + worst_case = ((TARGET_POWERPC64 && GET_MODE_CLASS (reg_mode) == MODE_INT) + || GET_MODE_SIZE (reg_mode) == 4); + return rs6000_legitimate_offset_address_p (GET_MODE (op), XEXP (op, 0), +- true, worst_case); ++ strict, worst_case); + } + + /* Determine the reassociation width to be used in reassociate_bb. +@@ -11574,12 +11594,12 @@ + + if (field_count > 0) + { +- int n_regs = (SCALAR_FLOAT_MODE_P (field_mode) ? +- (GET_MODE_SIZE (field_mode) + 7) >> 3 : 1); ++ int reg_size = ALTIVEC_OR_VSX_VECTOR_MODE (field_mode) ? 16 : 8; ++ int field_size = ROUND_UP (GET_MODE_SIZE (field_mode), reg_size); + + /* The ELFv2 ABI allows homogeneous aggregates to occupy + up to AGGR_ARG_NUM_REG registers. */ +- if (field_count * n_regs <= AGGR_ARG_NUM_REG) ++ if (field_count * field_size <= AGGR_ARG_NUM_REG * reg_size) + { + if (elt_mode) + *elt_mode = field_mode; +@@ -14106,6 +14126,7 @@ + + tree copy = build_call_expr (builtin_decl_implicit (BUILT_IN_MEMCPY), + 3, dest_addr, addr, size_int (rsize * 4)); ++ TREE_ADDRESSABLE (tmp) = 1; + + gimplify_and_add (copy, pre_p); + addr = dest_addr; +@@ -15087,12 +15108,12 @@ + /* For LVX, express the RTL accurately by ANDing the address with -16. + LVXL and LVE*X expand to use UNSPECs to hide their special behavior, + so the raw address is fine. */ +- if (icode == CODE_FOR_altivec_lvx_v2df_2op +- || icode == CODE_FOR_altivec_lvx_v2di_2op +- || icode == CODE_FOR_altivec_lvx_v4sf_2op +- || icode == CODE_FOR_altivec_lvx_v4si_2op +- || icode == CODE_FOR_altivec_lvx_v8hi_2op +- || icode == CODE_FOR_altivec_lvx_v16qi_2op) ++ if (icode == CODE_FOR_altivec_lvx_v2df ++ || icode == CODE_FOR_altivec_lvx_v2di ++ || icode == CODE_FOR_altivec_lvx_v4sf ++ || icode == CODE_FOR_altivec_lvx_v4si ++ || icode == CODE_FOR_altivec_lvx_v8hi ++ || icode == CODE_FOR_altivec_lvx_v16qi) + { + rtx rawaddr; + if (op0 == const0_rtx) +@@ -15278,12 +15299,12 @@ + /* For STVX, express the RTL accurately by ANDing the address with -16. + STVXL and STVE*X expand to use UNSPECs to hide their special behavior, + so the raw address is fine. */ +- if (icode == CODE_FOR_altivec_stvx_v2df_2op +- || icode == CODE_FOR_altivec_stvx_v2di_2op +- || icode == CODE_FOR_altivec_stvx_v4sf_2op +- || icode == CODE_FOR_altivec_stvx_v4si_2op +- || icode == CODE_FOR_altivec_stvx_v8hi_2op +- || icode == CODE_FOR_altivec_stvx_v16qi_2op) ++ if (icode == CODE_FOR_altivec_stvx_v2df ++ || icode == CODE_FOR_altivec_stvx_v2di ++ || icode == CODE_FOR_altivec_stvx_v4sf ++ || icode == CODE_FOR_altivec_stvx_v4si ++ || icode == CODE_FOR_altivec_stvx_v8hi ++ || icode == CODE_FOR_altivec_stvx_v16qi) + { + if (op1 == const0_rtx) + rawaddr = op2; +@@ -16184,18 +16205,18 @@ + switch (fcode) + { + case ALTIVEC_BUILTIN_STVX_V2DF: +- return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2df_2op, exp); ++ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2df, exp); + case ALTIVEC_BUILTIN_STVX_V2DI: +- return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2di_2op, exp); ++ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2di, exp); + case ALTIVEC_BUILTIN_STVX_V4SF: +- return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4sf_2op, exp); ++ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4sf, exp); + case ALTIVEC_BUILTIN_STVX: + case ALTIVEC_BUILTIN_STVX_V4SI: +- return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4si_2op, exp); ++ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4si, exp); + case ALTIVEC_BUILTIN_STVX_V8HI: +- return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v8hi_2op, exp); ++ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v8hi, exp); + case ALTIVEC_BUILTIN_STVX_V16QI: +- return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v16qi_2op, exp); ++ return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v16qi, exp); + case ALTIVEC_BUILTIN_STVEBX: + return altivec_expand_stv_builtin (CODE_FOR_altivec_stvebx, exp); + case ALTIVEC_BUILTIN_STVEHX: +@@ -16374,6 +16395,7 @@ + + case P9V_BUILTIN_VEXTRACT4B: + case P9V_BUILTIN_VEC_VEXTRACT4B: ++ case P9V_BUILTIN_VEC_EXTRACT4B: + arg1 = CALL_EXPR_ARG (exp, 1); + STRIP_NOPS (arg1); + +@@ -16388,9 +16410,7 @@ + } + break; + +- case P9V_BUILTIN_VINSERT4B: +- case P9V_BUILTIN_VINSERT4B_DI: +- case P9V_BUILTIN_VEC_VINSERT4B: ++ case P9V_BUILTIN_VEC_INSERT4B: + arg2 = CALL_EXPR_ARG (exp, 2); + STRIP_NOPS (arg2); + +@@ -16400,7 +16420,7 @@ + + if (TREE_CODE (arg2) != INTEGER_CST || TREE_INT_CST_LOW (arg2) > 12) + { +- error ("third argument to vec_vinsert4b must be 0..12"); ++ error ("third argument to vec_insert4b must be 0..12"); + return expand_call (exp, target, false); + } + break; +@@ -16460,23 +16480,23 @@ + return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v16qi, + exp, target, false); + case ALTIVEC_BUILTIN_LVX_V2DF: +- return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2df_2op, ++ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2df, + exp, target, false); + case ALTIVEC_BUILTIN_LVX_V2DI: +- return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2di_2op, ++ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2di, + exp, target, false); + case ALTIVEC_BUILTIN_LVX_V4SF: +- return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4sf_2op, ++ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4sf, + exp, target, false); + case ALTIVEC_BUILTIN_LVX: + case ALTIVEC_BUILTIN_LVX_V4SI: +- return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4si_2op, ++ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4si, + exp, target, false); + case ALTIVEC_BUILTIN_LVX_V8HI: +- return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v8hi_2op, ++ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v8hi, + exp, target, false); + case ALTIVEC_BUILTIN_LVX_V16QI: +- return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v16qi_2op, ++ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v16qi, + exp, target, false); + case ALTIVEC_BUILTIN_LVLX: + return altivec_expand_lv_builtin (CODE_FOR_altivec_lvlx, +@@ -17040,6 +17060,11 @@ + error ("Builtin function %s requires the -mhard-float option", name); + else if ((fnmask & RS6000_BTM_FLOAT128) != 0) + error ("Builtin function %s requires the -mfloat128 option", name); ++ else if ((fnmask & (RS6000_BTM_POPCNTD | RS6000_BTM_POWERPC64)) ++ == (RS6000_BTM_POPCNTD | RS6000_BTM_POWERPC64)) ++ error ("builtin function %qs requires the %qs (or newer), and " ++ "%qs or %qs options", ++ name, "-mcpu=power7", "-m64", "-mpowerpc64"); + else + error ("Builtin function %s is not supported with the current options", + name); +@@ -18804,9 +18829,7 @@ + case CRYPTO_BUILTIN_VPMSUM: + case MISC_BUILTIN_ADDG6S: + case MISC_BUILTIN_DIVWEU: +- case MISC_BUILTIN_DIVWEUO: + case MISC_BUILTIN_DIVDEU: +- case MISC_BUILTIN_DIVDEUO: + h.uns_p[0] = 1; + h.uns_p[1] = 1; + h.uns_p[2] = 1; +@@ -23267,7 +23290,7 @@ + } + + else if (TARGET_ALTIVEC && src_vmx_p +- && altivec_indexed_or_indirect_operand (src, mode)) ++ && altivec_indexed_or_indirect_operand (dest, mode)) + return "stvx %1,%y0"; + + else if (TARGET_VSX && src_vsx_p) +@@ -23980,7 +24003,7 @@ + + /* Fall through. Must be [reg+reg]. */ + } +- if (VECTOR_MEM_ALTIVEC_P (GET_MODE (x)) ++ if (VECTOR_MEM_ALTIVEC_OR_VSX_P (GET_MODE (x)) + && GET_CODE (tmp) == AND + && GET_CODE (XEXP (tmp, 1)) == CONST_INT + && INTVAL (XEXP (tmp, 1)) == -16) +@@ -25907,49 +25930,6 @@ + emit_move_insn (dest, target); + } + +-/* Split a signbit operation on 64-bit machines with direct move. Also allow +- for the value to come from memory or if it is already loaded into a GPR. */ +- +-void +-rs6000_split_signbit (rtx dest, rtx src) +-{ +- machine_mode d_mode = GET_MODE (dest); +- machine_mode s_mode = GET_MODE (src); +- rtx dest_di = (d_mode == DImode) ? dest : gen_lowpart (DImode, dest); +- rtx shift_reg = dest_di; +- +- gcc_assert (FLOAT128_IEEE_P (s_mode) && TARGET_POWERPC64); +- +- if (MEM_P (src)) +- { +- rtx mem = (WORDS_BIG_ENDIAN +- ? adjust_address (src, DImode, 0) +- : adjust_address (src, DImode, 8)); +- emit_insn (gen_rtx_SET (dest_di, mem)); +- } +- +- else +- { +- unsigned int r = reg_or_subregno (src); +- +- if (INT_REGNO_P (r)) +- shift_reg = gen_rtx_REG (DImode, r + (BYTES_BIG_ENDIAN == 0)); +- +- else +- { +- /* Generate the special mfvsrd instruction to get it in a GPR. */ +- gcc_assert (VSX_REGNO_P (r)); +- if (s_mode == KFmode) +- emit_insn (gen_signbitkf2_dm2 (dest_di, src)); +- else +- emit_insn (gen_signbittf2_dm2 (dest_di, src)); +- } +- } +- +- emit_insn (gen_lshrdi3 (dest_di, shift_reg, GEN_INT (63))); +- return; +-} +- + /* A subroutine of the atomic operation splitters. Jump to LABEL if + COND is true. Mark the jump as unlikely to be taken. */ + +@@ -26588,7 +26568,7 @@ + emit_insn (gen_add3_insn (breg, breg, delta_rtx)); + src = replace_equiv_address (src, breg); + } +- else if (! rs6000_offsettable_memref_p (src, reg_mode)) ++ else if (! rs6000_offsettable_memref_p (src, reg_mode, true)) + { + if (GET_CODE (XEXP (src, 0)) == PRE_MODIFY) + { +@@ -26655,7 +26635,7 @@ + emit_insn (gen_add3_insn (breg, breg, delta_rtx)); + dst = replace_equiv_address (dst, breg); + } +- else if (!rs6000_offsettable_memref_p (dst, reg_mode) ++ else if (!rs6000_offsettable_memref_p (dst, reg_mode, true) + && GET_CODE (XEXP (dst, 0)) != LO_SUM) + { + if (GET_CODE (XEXP (dst, 0)) == PRE_MODIFY) +@@ -26694,7 +26674,7 @@ + } + } + else if (GET_CODE (XEXP (dst, 0)) != LO_SUM) +- gcc_assert (rs6000_offsettable_memref_p (dst, reg_mode)); ++ gcc_assert (rs6000_offsettable_memref_p (dst, reg_mode, true)); + } + + for (i = 0; i < nregs; i++) +@@ -27813,6 +27793,12 @@ + { + tree fntype; + ++ /* The sibcall epilogue may clobber the static chain register. ++ ??? We could work harder and avoid that, but it's probably ++ not worth the hassle in practice. */ ++ if (CALL_EXPR_STATIC_CHAIN (exp)) ++ return false; ++ + if (decl) + fntype = TREE_TYPE (decl); + else +@@ -31988,8 +31974,9 @@ + emit_insn_after (pat, get_insns ()); + pop_topmost_sequence (); + } +- return plus_constant (Pmode, cfun->machine->split_stack_arg_pointer, +- FIRST_PARM_OFFSET (current_function_decl)); ++ rtx ret = plus_constant (Pmode, cfun->machine->split_stack_arg_pointer, ++ FIRST_PARM_OFFSET (current_function_decl)); ++ return copy_to_reg (ret); + } + return virtual_incoming_args_rtx; + } +@@ -35647,6 +35634,11 @@ + } + else + { ++ /* If we are told not to put readonly data in sdata, then don't. */ ++ if (TREE_READONLY (decl) && rs6000_sdata != SDATA_EABI ++ && !rs6000_readonly_in_sdata) ++ return false; ++ + HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl)); + + if (size > 0 +@@ -39167,6 +39159,7 @@ + { "hard-dfp", RS6000_BTM_DFP, false, false }, + { "hard-float", RS6000_BTM_HARD_FLOAT, false, false }, + { "long-double-128", RS6000_BTM_LDBL128, false, false }, ++ { "powerpc64", RS6000_BTM_POWERPC64, false, false }, + { "float128", RS6000_BTM_FLOAT128, false, false }, + }; + +@@ -41657,6 +41650,38 @@ + return 1; + } + ++/* Return 1 iff UID, known to reference a swap, is both fed by a load ++ and a feeder of a store. */ ++static unsigned int ++swap_feeds_both_load_and_store (swap_web_entry *insn_entry) ++{ ++ rtx insn = insn_entry->insn; ++ struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn); ++ df_ref def, use; ++ struct df_link *link = 0; ++ rtx_insn *load = 0, *store = 0; ++ bool fed_by_load = 0; ++ bool feeds_store = 0; ++ ++ FOR_EACH_INSN_INFO_USE (use, insn_info) ++ { ++ link = DF_REF_CHAIN (use); ++ load = DF_REF_INSN (link->ref); ++ if (insn_is_load_p (load) && insn_is_swap_p (load)) ++ fed_by_load = 1; ++ } ++ ++ FOR_EACH_INSN_INFO_DEF (def, insn_info) ++ { ++ link = DF_REF_CHAIN (def); ++ store = DF_REF_INSN (link->ref); ++ if (insn_is_store_p (store) && insn_is_swap_p (store)) ++ feeds_store = 1; ++ } ++ ++ return fed_by_load && feeds_store; ++} ++ + /* Return TRUE if insn is a swap fed by a load from the constant pool. */ + static bool + const_load_sequence_p (swap_web_entry *insn_entry, rtx insn) +@@ -41860,6 +41885,7 @@ + { + default: + break; ++ case UNSPEC_VBPERMQ: + case UNSPEC_VMRGH_DIRECT: + case UNSPEC_VMRGL_DIRECT: + case UNSPEC_VPACK_SIGN_SIGN_SAT: +@@ -41871,6 +41897,7 @@ + case UNSPEC_VPERM_UNS: + case UNSPEC_VPERMHI: + case UNSPEC_VPERMSI: ++ case UNSPEC_VPERMXOR: + case UNSPEC_VPKPX: + case UNSPEC_VSLDOI: + case UNSPEC_VSLO: +@@ -43129,6 +43156,14 @@ + && !insn_entry[i].is_swap && !insn_entry[i].is_swappable) + root->web_not_optimizable = 1; + ++ /* If we have a swap that is both fed by a permuting load ++ and a feeder of a permuting store, then the optimization ++ isn't appropriate. (Consider vec_xl followed by vec_xst_be.) */ ++ else if (insn_entry[i].is_swap && !insn_entry[i].is_load ++ && !insn_entry[i].is_store ++ && swap_feeds_both_load_and_store (&insn_entry[i])) ++ root->web_not_optimizable = 1; ++ + /* If we have permuting loads or stores that are not accompanied + by a register swap, the optimization isn't appropriate. */ + else if (insn_entry[i].is_load && insn_entry[i].is_swap) +Index: gcc/config/rs6000/vsx.md +=================================================================== +--- a/src/gcc/config/rs6000/vsx.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/vsx.md (.../branches/gcc-7-branch) +@@ -157,6 +157,22 @@ + (TF "wp") + (KF "wq")]) + ++;; A mode attribute to disparage use of GPR registers, except for scalar ++;; interger modes. ++(define_mode_attr ??r [(V16QI "??r") ++ (V8HI "??r") ++ (V4SI "??r") ++ (V4SF "??r") ++ (V2DI "??r") ++ (V2DF "??r") ++ (DI "r") ++ (DF "??r") ++ (SF "??r") ++ (V1TI "??r") ++ (TI "r") ++ (TF "??r") ++ (KF "??r")]) ++ + ;; Same size integer type for floating point data + (define_mode_attr VSi [(V4SF "v4si") + (V2DF "v2di") +@@ -385,7 +401,7 @@ + ;; VSX moves so they match first. + (define_insn_and_split "*vsx_le_perm_load_" + [(set (match_operand:VSX_D 0 "vsx_register_operand" "=") +- (match_operand:VSX_D 1 "memory_operand" "Z"))] ++ (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" +@@ -408,7 +424,7 @@ + + (define_insn_and_split "*vsx_le_perm_load_" + [(set (match_operand:VSX_W 0 "vsx_register_operand" "=") +- (match_operand:VSX_W 1 "memory_operand" "Z"))] ++ (match_operand:VSX_W 1 "indexed_or_indirect_operand" "Z"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" +@@ -433,7 +449,7 @@ + + (define_insn_and_split "*vsx_le_perm_load_v8hi" + [(set (match_operand:V8HI 0 "vsx_register_operand" "=wa") +- (match_operand:V8HI 1 "memory_operand" "Z"))] ++ (match_operand:V8HI 1 "indexed_or_indirect_operand" "Z"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" +@@ -462,7 +478,7 @@ + + (define_insn_and_split "*vsx_le_perm_load_v16qi" + [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa") +- (match_operand:V16QI 1 "memory_operand" "Z"))] ++ (match_operand:V16QI 1 "indexed_or_indirect_operand" "Z"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" +@@ -498,7 +514,7 @@ + (set_attr "length" "8")]) + + (define_insn "*vsx_le_perm_store_" +- [(set (match_operand:VSX_D 0 "memory_operand" "=Z") ++ [(set (match_operand:VSX_D 0 "indexed_or_indirect_operand" "=Z") + (match_operand:VSX_D 1 "vsx_register_operand" "+"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" +@@ -506,7 +522,7 @@ + (set_attr "length" "12")]) + + (define_split +- [(set (match_operand:VSX_D 0 "memory_operand" "") ++ [(set (match_operand:VSX_D 0 "indexed_or_indirect_operand" "") + (match_operand:VSX_D 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed" + [(set (match_dup 2) +@@ -525,7 +541,7 @@ + ;; The post-reload split requires that we re-permute the source + ;; register in case it is still live. + (define_split +- [(set (match_operand:VSX_D 0 "memory_operand" "") ++ [(set (match_operand:VSX_D 0 "indexed_or_indirect_operand" "") + (match_operand:VSX_D 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed" + [(set (match_dup 1) +@@ -543,7 +559,7 @@ + "") + + (define_insn "*vsx_le_perm_store_" +- [(set (match_operand:VSX_W 0 "memory_operand" "=Z") ++ [(set (match_operand:VSX_W 0 "indexed_or_indirect_operand" "=Z") + (match_operand:VSX_W 1 "vsx_register_operand" "+"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" +@@ -551,7 +567,7 @@ + (set_attr "length" "12")]) + + (define_split +- [(set (match_operand:VSX_W 0 "memory_operand" "") ++ [(set (match_operand:VSX_W 0 "indexed_or_indirect_operand" "") + (match_operand:VSX_W 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed" + [(set (match_dup 2) +@@ -572,7 +588,7 @@ + ;; The post-reload split requires that we re-permute the source + ;; register in case it is still live. + (define_split +- [(set (match_operand:VSX_W 0 "memory_operand" "") ++ [(set (match_operand:VSX_W 0 "indexed_or_indirect_operand" "") + (match_operand:VSX_W 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed" + [(set (match_dup 1) +@@ -593,7 +609,7 @@ + "") + + (define_insn "*vsx_le_perm_store_v8hi" +- [(set (match_operand:V8HI 0 "memory_operand" "=Z") ++ [(set (match_operand:V8HI 0 "indexed_or_indirect_operand" "=Z") + (match_operand:V8HI 1 "vsx_register_operand" "+wa"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" +@@ -601,7 +617,7 @@ + (set_attr "length" "12")]) + + (define_split +- [(set (match_operand:V8HI 0 "memory_operand" "") ++ [(set (match_operand:V8HI 0 "indexed_or_indirect_operand" "") + (match_operand:V8HI 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed" + [(set (match_dup 2) +@@ -626,7 +642,7 @@ + ;; The post-reload split requires that we re-permute the source + ;; register in case it is still live. + (define_split +- [(set (match_operand:V8HI 0 "memory_operand" "") ++ [(set (match_operand:V8HI 0 "indexed_or_indirect_operand" "") + (match_operand:V8HI 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed" + [(set (match_dup 1) +@@ -653,7 +669,7 @@ + "") + + (define_insn "*vsx_le_perm_store_v16qi" +- [(set (match_operand:V16QI 0 "memory_operand" "=Z") ++ [(set (match_operand:V16QI 0 "indexed_or_indirect_operand" "=Z") + (match_operand:V16QI 1 "vsx_register_operand" "+wa"))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" + "#" +@@ -661,7 +677,7 @@ + (set_attr "length" "12")]) + + (define_split +- [(set (match_operand:V16QI 0 "memory_operand" "") ++ [(set (match_operand:V16QI 0 "indexed_or_indirect_operand" "") + (match_operand:V16QI 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed" + [(set (match_dup 2) +@@ -694,7 +710,7 @@ + ;; The post-reload split requires that we re-permute the source + ;; register in case it is still live. + (define_split +- [(set (match_operand:V16QI 0 "memory_operand" "") ++ [(set (match_operand:V16QI 0 "indexed_or_indirect_operand" "") + (match_operand:V16QI 1 "vsx_register_operand" ""))] + "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed" + [(set (match_dup 1) +@@ -961,7 +977,7 @@ + (define_insn "*vsx_mov_64bit" + [(set (match_operand:VSX_M 0 "nonimmediate_operand" + "=ZwO, , , r, we, ?wQ, +- ?&r, ??r, ??Y, ??r, wo, v, ++ ?&r, ??r, ??Y, , wo, v, + ?, *r, v, ??r, wZ, v") + + (match_operand:VSX_M 1 "input_operand" +@@ -990,7 +1006,7 @@ + ;; LVX (VMX) STVX (VMX) + (define_insn "*vsx_mov_32bit" + [(set (match_operand:VSX_M 0 "nonimmediate_operand" +- "=ZwO, , , ??r, ??Y, ??r, ++ "=ZwO, , , ??r, ??Y, , + wo, v, ?, *r, v, ??r, + wZ, v") + +@@ -3930,7 +3946,7 @@ + (match_operand:DI 2 "register_operand" "+r")] + UNSPEC_STXVL))] + "TARGET_P9_VECTOR && TARGET_64BIT" +- "sldi %2,%2\;stxvl %x0,%1,%2" ++ "sldi %2,%2,56\;stxvl %x0,%1,%2" + [(set_attr "length" "8") + (set_attr "type" "vecstore")]) + +@@ -4084,46 +4100,21 @@ + + ;; Vector insert/extract word at arbitrary byte values. Note, the little + ;; endian version needs to adjust the byte number, and the V4SI element in +-;; vinsert4b. +-(define_expand "vextract4b" +- [(set (match_operand:DI 0 "gpc_reg_operand") +- (unspec:DI [(match_operand:V16QI 1 "vsx_register_operand") +- (match_operand:QI 2 "const_0_to_12_operand")] +- UNSPEC_XXEXTRACTUW))] ++;; insert4b. ++(define_insn "extract4b" ++ [(set (match_operand:V2DI 0 "vsx_register_operand") ++ (unspec:V2DI [(match_operand:V16QI 1 "vsx_register_operand" "wa") ++ (match_operand:QI 2 "const_0_to_12_operand" "n")] ++ UNSPEC_XXEXTRACTUW))] + "TARGET_P9_VECTOR" + { + if (!VECTOR_ELT_ORDER_BIG) + operands[2] = GEN_INT (12 - INTVAL (operands[2])); ++ ++ return "xxextractuw %x0,%x1,%2"; + }) + +-(define_insn_and_split "*vextract4b_internal" +- [(set (match_operand:DI 0 "gpc_reg_operand" "=wj,r") +- (unspec:DI [(match_operand:V16QI 1 "vsx_register_operand" "wa,v") +- (match_operand:QI 2 "const_0_to_12_operand" "n,n")] +- UNSPEC_XXEXTRACTUW))] +- "TARGET_P9_VECTOR" +- "@ +- xxextractuw %x0,%x1,%2 +- #" +- "&& reload_completed && int_reg_operand (operands[0], DImode)" +- [(const_int 0)] +-{ +- rtx op0 = operands[0]; +- rtx op1 = operands[1]; +- rtx op2 = operands[2]; +- rtx op0_si = gen_rtx_REG (SImode, REGNO (op0)); +- rtx op1_v4si = gen_rtx_REG (V4SImode, REGNO (op1)); +- +- emit_move_insn (op0, op2); +- if (VECTOR_ELT_ORDER_BIG) +- emit_insn (gen_vextuwlx (op0_si, op0_si, op1_v4si)); +- else +- emit_insn (gen_vextuwrx (op0_si, op0_si, op1_v4si)); +- DONE; +-} +- [(set_attr "type" "vecperm")]) +- +-(define_expand "vinsert4b" ++(define_expand "insert4b" + [(set (match_operand:V16QI 0 "vsx_register_operand") + (unspec:V16QI [(match_operand:V4SI 1 "vsx_register_operand") + (match_operand:V16QI 2 "vsx_register_operand") +@@ -4141,7 +4132,7 @@ + } + }) + +-(define_insn "*vinsert4b_internal" ++(define_insn "*insert4b_internal" + [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa") + (unspec:V16QI [(match_operand:V4SI 1 "vsx_register_operand" "wa") + (match_operand:V16QI 2 "vsx_register_operand" "0") +@@ -4151,26 +4142,42 @@ + "xxinsertw %x0,%x1,%3" + [(set_attr "type" "vecperm")]) + +-(define_expand "vinsert4b_di" +- [(set (match_operand:V16QI 0 "vsx_register_operand") +- (unspec:V16QI [(match_operand:DI 1 "vsx_register_operand") +- (match_operand:V16QI 2 "vsx_register_operand") +- (match_operand:QI 3 "const_0_to_12_operand")] +- UNSPEC_XXINSERTW))] ++(define_expand "vextract4b" ++ [(set (match_operand:DI 0 "gpc_reg_operand") ++ (unspec:DI [(match_operand:V16QI 1 "vsx_register_operand") ++ (match_operand:QI 2 "const_0_to_12_operand")] ++ UNSPEC_XXEXTRACTUW))] + "TARGET_P9_VECTOR" + { + if (!VECTOR_ELT_ORDER_BIG) +- operands[3] = GEN_INT (12 - INTVAL (operands[3])); ++ operands[2] = GEN_INT (12 - INTVAL (operands[2])); + }) + +-(define_insn "*vinsert4b_di_internal" +- [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa") +- (unspec:V16QI [(match_operand:DI 1 "vsx_register_operand" "wj") +- (match_operand:V16QI 2 "vsx_register_operand" "0") +- (match_operand:QI 3 "const_0_to_12_operand" "n")] +- UNSPEC_XXINSERTW))] ++(define_insn_and_split "*vextract4b_internal" ++ [(set (match_operand:DI 0 "gpc_reg_operand" "=wj,r") ++ (unspec:DI [(match_operand:V16QI 1 "vsx_register_operand" "wa,v") ++ (match_operand:QI 2 "const_0_to_12_operand" "n,n")] ++ UNSPEC_XXEXTRACTUW))] + "TARGET_P9_VECTOR" +- "xxinsertw %x0,%x1,%3" ++ "@ ++ xxextractuw %x0,%x1,%2 ++ #" ++ "&& reload_completed && int_reg_operand (operands[0], DImode)" ++ [(const_int 0)] ++{ ++ rtx op0 = operands[0]; ++ rtx op1 = operands[1]; ++ rtx op2 = operands[2]; ++ rtx op0_si = gen_rtx_REG (SImode, REGNO (op0)); ++ rtx op1_v4si = gen_rtx_REG (V4SImode, REGNO (op1)); ++ ++ emit_move_insn (op0, op2); ++ if (VECTOR_ELT_ORDER_BIG) ++ emit_insn (gen_vextuwlx (op0_si, op0_si, op1_v4si)); ++ else ++ emit_insn (gen_vextuwrx (op0_si, op0_si, op1_v4si)); ++ DONE; ++} + [(set_attr "type" "vecperm")]) + + +Index: gcc/config/rs6000/rs6000.h +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000.h (.../branches/gcc-7-branch) +@@ -1,5 +1,5 @@ + /* Definitions of target machine for GNU compiler, for IBM RS/6000. +- Copyright (C) 1992-2017 Free Software Foundation, Inc. ++ Copyright (C) 1992-2018 Free Software Foundation, Inc. + Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + This file is part of GCC. +@@ -110,7 +110,8 @@ + /* Common ASM definitions used by ASM_SPEC among the various targets for + handling -mcpu=xxx switches. There is a parallel list in driver-rs6000.c to + provide the default assembler options if the user uses -mcpu=native, so if +- you make changes here, make them also there. */ ++ you make changes here, make them also there. PR63177: Do not pass -mpower8 ++ to the assembler if -mpower9-vector was also used. */ + #define ASM_CPU_SPEC \ + "%{!mcpu*: \ + %{mpowerpc64*: -mppc64} \ +@@ -124,7 +125,7 @@ + %{mcpu=power6: %(asm_cpu_power6) -maltivec} \ + %{mcpu=power6x: %(asm_cpu_power6) -maltivec} \ + %{mcpu=power7: %(asm_cpu_power7)} \ +-%{mcpu=power8: %(asm_cpu_power8)} \ ++%{mcpu=power8: %{!mpower9-vector: %(asm_cpu_power8)}} \ + %{mcpu=power9: %(asm_cpu_power9)} \ + %{mcpu=a2: -ma2} \ + %{mcpu=powerpc: -mppc} \ +@@ -173,6 +174,7 @@ + %{maltivec: -maltivec} \ + %{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \ + %{mpower8-vector|mcrypto|mdirect-move|mhtm: %{!mcpu*: %(asm_cpu_power8)}} \ ++%{mpower9-vector: %{!mcpu*|mcpu=power8: %(asm_cpu_power9)}} \ + -many" + + #define CPP_DEFAULT_SPEC "" +@@ -2735,6 +2737,7 @@ + #define RS6000_BTM_HARD_FLOAT MASK_SOFT_FLOAT /* Hardware floating point. */ + #define RS6000_BTM_LDBL128 MASK_MULTIPLE /* 128-bit long double. */ + #define RS6000_BTM_64BIT MASK_64BIT /* 64-bit addressing. */ ++#define RS6000_BTM_POWERPC64 MASK_POWERPC64 /* 64-bit registers. */ + #define RS6000_BTM_FLOAT128 MASK_FLOAT128_TYPE /* IEEE 128-bit float. */ + + #define RS6000_BTM_COMMON (RS6000_BTM_ALTIVEC \ +@@ -2754,6 +2757,7 @@ + | RS6000_BTM_DFP \ + | RS6000_BTM_HARD_FLOAT \ + | RS6000_BTM_LDBL128 \ ++ | RS6000_BTM_POWERPC64 \ + | RS6000_BTM_FLOAT128) + + /* Define builtin enum index. */ +Index: gcc/config/rs6000/altivec.md +=================================================================== +--- a/src/gcc/config/rs6000/altivec.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/altivec.md (.../branches/gcc-7-branch) +@@ -414,7 +414,6 @@ + (define_insn "*restore_world" + [(match_parallel 0 "restore_world_operation" + [(return) +- (use (reg:SI LR_REGNO)) + (use (match_operand:SI 1 "call_operand" "s")) + (clobber (match_operand:SI 2 "gpc_reg_operand" "=r"))])] + "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT" +@@ -2616,42 +2615,52 @@ + "lvx %0,%y1" + [(set_attr "type" "vecload")]) + ++; The following patterns embody what lvx should usually look like. ++(define_expand "altivec_lvx_" ++ [(set (match_operand:VM2 0 "register_operand") ++ (match_operand:VM2 1 "altivec_indexed_or_indirect_operand"))] ++ "TARGET_ALTIVEC" ++{ ++ rtx addr = XEXP (operand1, 0); ++ if (GET_CODE (addr) == PLUS ++ && REG_P (XEXP (addr, 0)) ++ && REG_P (XEXP (addr, 1))) ++ { ++ rtx op1 = XEXP (addr, 0); ++ rtx op2 = XEXP (addr, 1); ++ if (TARGET_64BIT) ++ emit_insn (gen_altivec_lvx__2op_di (operand0, op1, op2)); ++ else ++ emit_insn (gen_altivec_lvx__2op_si (operand0, op1, op2)); ++ } ++ else ++ { ++ if (TARGET_64BIT) ++ emit_insn (gen_altivec_lvx__1op_di (operand0, addr)); ++ else ++ emit_insn (gen_altivec_lvx__1op_si (operand0, addr)); ++ } ++ DONE; ++}) ++ + ; The next two patterns embody what lvx should usually look like. +-(define_insn "altivec_lvx__2op" ++(define_insn "altivec_lvx__2op_" + [(set (match_operand:VM2 0 "register_operand" "=v") +- (mem:VM2 (and:DI (plus:DI (match_operand:DI 1 "register_operand" "b") +- (match_operand:DI 2 "register_operand" "r")) +- (const_int -16))))] +- "TARGET_ALTIVEC && TARGET_64BIT" ++ (mem:VM2 (and:P (plus:P (match_operand:P 1 "register_operand" "b") ++ (match_operand:P 2 "register_operand" "r")) ++ (const_int -16))))] ++ "TARGET_ALTIVEC" + "lvx %0,%1,%2" + [(set_attr "type" "vecload")]) + +-(define_insn "altivec_lvx__1op" ++(define_insn "altivec_lvx__1op_" + [(set (match_operand:VM2 0 "register_operand" "=v") +- (mem:VM2 (and:DI (match_operand:DI 1 "register_operand" "r") +- (const_int -16))))] +- "TARGET_ALTIVEC && TARGET_64BIT" ++ (mem:VM2 (and:P (match_operand:P 1 "register_operand" "r") ++ (const_int -16))))] ++ "TARGET_ALTIVEC" + "lvx %0,0,%1" + [(set_attr "type" "vecload")]) + +-; 32-bit versions of the above. +-(define_insn "altivec_lvx__2op_si" +- [(set (match_operand:VM2 0 "register_operand" "=v") +- (mem:VM2 (and:SI (plus:SI (match_operand:SI 1 "register_operand" "b") +- (match_operand:SI 2 "register_operand" "r")) +- (const_int -16))))] +- "TARGET_ALTIVEC && TARGET_32BIT" +- "lvx %0,%1,%2" +- [(set_attr "type" "vecload")]) +- +-(define_insn "altivec_lvx__1op_si" +- [(set (match_operand:VM2 0 "register_operand" "=v") +- (mem:VM2 (and:SI (match_operand:SI 1 "register_operand" "r") +- (const_int -16))))] +- "TARGET_ALTIVEC && TARGET_32BIT" +- "lvx %0,0,%1" +- [(set_attr "type" "vecload")]) +- + ; This version of stvx is used only in cases where we need to force an stvx + ; over any other store, and we don't care about losing CSE opportunities. + ; Its primary use is for epilogue register restores. +@@ -2664,42 +2673,52 @@ + "stvx %1,%y0" + [(set_attr "type" "vecstore")]) + ++; The following patterns embody what stvx should usually look like. ++(define_expand "altivec_stvx_" ++ [(set (match_operand:VM2 1 "altivec_indexed_or_indirect_operand") ++ (match_operand:VM2 0 "register_operand"))] ++ "TARGET_ALTIVEC" ++{ ++ rtx addr = XEXP (operand1, 0); ++ if (GET_CODE (addr) == PLUS ++ && REG_P (XEXP (addr, 0)) ++ && REG_P (XEXP (addr, 1))) ++ { ++ rtx op1 = XEXP (addr, 0); ++ rtx op2 = XEXP (addr, 1); ++ if (TARGET_64BIT) ++ emit_insn (gen_altivec_stvx__2op_di (operand0, op1, op2)); ++ else ++ emit_insn (gen_altivec_stvx__2op_si (operand0, op1, op2)); ++ } ++ else ++ { ++ if (TARGET_64BIT) ++ emit_insn (gen_altivec_stvx__1op_di (operand0, addr)); ++ else ++ emit_insn (gen_altivec_stvx__1op_si (operand0, addr)); ++ } ++ DONE; ++}) ++ + ; The next two patterns embody what stvx should usually look like. +-(define_insn "altivec_stvx__2op" +- [(set (mem:VM2 (and:DI (plus:DI (match_operand:DI 1 "register_operand" "b") +- (match_operand:DI 2 "register_operand" "r")) +- (const_int -16))) +- (match_operand:VM2 0 "register_operand" "v"))] +- "TARGET_ALTIVEC && TARGET_64BIT" ++(define_insn "altivec_stvx__2op_" ++ [(set (mem:VM2 (and:P (plus:P (match_operand:P 1 "register_operand" "b") ++ (match_operand:P 2 "register_operand" "r")) ++ (const_int -16))) ++ (match_operand:VM2 0 "register_operand" "v"))] ++ "TARGET_ALTIVEC" + "stvx %0,%1,%2" + [(set_attr "type" "vecstore")]) + +-(define_insn "altivec_stvx__1op" +- [(set (mem:VM2 (and:DI (match_operand:DI 1 "register_operand" "r") +- (const_int -16))) +- (match_operand:VM2 0 "register_operand" "v"))] +- "TARGET_ALTIVEC && TARGET_64BIT" ++(define_insn "altivec_stvx__1op_" ++ [(set (mem:VM2 (and:P (match_operand:P 1 "register_operand" "r") ++ (const_int -16))) ++ (match_operand:VM2 0 "register_operand" "v"))] ++ "TARGET_ALTIVEC" + "stvx %0,0,%1" + [(set_attr "type" "vecstore")]) + +-; 32-bit versions of the above. +-(define_insn "altivec_stvx__2op_si" +- [(set (mem:VM2 (and:SI (plus:SI (match_operand:SI 1 "register_operand" "b") +- (match_operand:SI 2 "register_operand" "r")) +- (const_int -16))) +- (match_operand:VM2 0 "register_operand" "v"))] +- "TARGET_ALTIVEC && TARGET_32BIT" +- "stvx %0,%1,%2" +- [(set_attr "type" "vecstore")]) +- +-(define_insn "altivec_stvx__1op_si" +- [(set (mem:VM2 (and:SI (match_operand:SI 1 "register_operand" "r") +- (const_int -16))) +- (match_operand:VM2 0 "register_operand" "v"))] +- "TARGET_ALTIVEC && TARGET_32BIT" +- "stvx %0,0,%1" +- [(set_attr "type" "vecstore")]) +- + (define_expand "altivec_stvxl_" + [(parallel + [(set (match_operand:VM2 0 "memory_operand" "=Z") +Index: gcc/config/rs6000/rs6000.md +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000.md (.../branches/gcc-7-branch) +@@ -1,5 +1,5 @@ + ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler +-;; Copyright (C) 1990-2017 Free Software Foundation, Inc. ++;; Copyright (C) 1990-2018 Free Software Foundation, Inc. + ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + ;; This file is part of GCC. +@@ -135,9 +135,7 @@ + UNSPEC_CDTBCD + UNSPEC_CBCDTD + UNSPEC_DIVE +- UNSPEC_DIVEO + UNSPEC_DIVEU +- UNSPEC_DIVEUO + UNSPEC_UNPACK_128BIT + UNSPEC_PACK_128BIT + UNSPEC_LSQ +@@ -544,7 +542,7 @@ + (define_code_attr su [(sign_extend "s") + (zero_extend "u") + (fix "s") +- (unsigned_fix "s") ++ (unsigned_fix "u") + (float "s") + (unsigned_float "u")]) + +@@ -1008,7 +1006,7 @@ + + (define_insn "extendsi2" + [(set (match_operand:EXTSI 0 "gpc_reg_operand" "=r,r,wl,wu,wj,wK,wH") +- (sign_extend:EXTSI (match_operand:SI 1 "lwa_operand" "Y,r,Z,Z,r,wK,wH")))] ++ (sign_extend:EXTSI (match_operand:SI 1 "lwa_operand" "YZ,r,Z,Z,r,wK,wH")))] + "" + "@ + lwa%U1%X1 %0,%1 +@@ -4757,12 +4755,19 @@ + { + if (FLOAT128_IEEE_P (mode)) + { ++ rtx dest = operands[0]; ++ rtx src = operands[1]; ++ rtx tmp = gen_reg_rtx (DImode); ++ rtx dest_di = gen_lowpart (DImode, dest); ++ + if (mode == KFmode) +- emit_insn (gen_signbitkf2_dm (operands[0], operands[1])); ++ emit_insn (gen_signbitkf2_dm (tmp, src)); + else if (mode == TFmode) +- emit_insn (gen_signbittf2_dm (operands[0], operands[1])); ++ emit_insn (gen_signbittf2_dm (tmp, src)); + else + gcc_unreachable (); ++ ++ emit_insn (gen_lshrdi3 (dest_di, tmp, GEN_INT (63))); + DONE; + } + operands[2] = gen_reg_rtx (DFmode); +@@ -4783,6 +4788,66 @@ + } + }) + ++;; Optimize IEEE 128-bit signbit on 64-bit systems with direct move to avoid ++;; multiple direct moves. If we used a SUBREG:DI of the Floa128 type, the ++;; register allocator would typically move the entire _Float128 item to GPRs (2 ++;; instructions on ISA 3.0, 3-4 instructions on ISA 2.07). ++;; ++;; After register allocation, if the _Float128 had originally been in GPRs, the ++;; split allows the post reload phases to eliminate the move, and do the shift ++;; directly with the register that contains the signbit. ++(define_insn_and_split "signbit2_dm" ++ [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r") ++ (unspec:DI [(match_operand:SIGNBIT 1 "gpc_reg_operand" "wa,r")] ++ UNSPEC_SIGNBIT))] ++ "TARGET_POWERPC64 && TARGET_DIRECT_MOVE" ++ "@ ++ mfvsrd %0,%x1 ++ #" ++ "&& reload_completed && int_reg_operand (operands[1], mode)" ++ [(set (match_dup 0) ++ (match_dup 2))] ++{ ++ operands[2] = gen_highpart (DImode, operands[1]); ++} ++ [(set_attr "type" "mftgpr,*")]) ++ ++;; Optimize IEEE 128-bit signbit on to avoid loading the value into a vector ++;; register and then doing a direct move if the value comes from memory. On ++;; little endian, we have to load the 2nd double-word to get the sign bit. ++(define_insn_and_split "*signbit2_dm_mem" ++ [(set (match_operand:DI 0 "gpc_reg_operand" "=b") ++ (unspec:DI [(match_operand:SIGNBIT 1 "memory_operand" "m")] ++ UNSPEC_SIGNBIT))] ++ "TARGET_POWERPC64 && TARGET_DIRECT_MOVE" ++ "#" ++ "&& 1" ++ [(set (match_dup 0) ++ (match_dup 2))] ++{ ++ rtx dest = operands[0]; ++ rtx src = operands[1]; ++ rtx addr = XEXP (src, 0); ++ ++ if (WORDS_BIG_ENDIAN) ++ operands[2] = adjust_address (src, DImode, 0); ++ ++ else if (REG_P (addr) || SUBREG_P (addr)) ++ operands[2] = adjust_address (src, DImode, 8); ++ ++ else if (GET_CODE (addr) == PLUS && REG_P (XEXP (addr, 0)) ++ && CONST_INT_P (XEXP (addr, 1)) && mem_operand_gpr (src, DImode)) ++ operands[2] = adjust_address (src, DImode, 8); ++ ++ else ++ { ++ rtx tmp = can_create_pseudo_p () ? gen_reg_rtx (DImode) : dest; ++ emit_insn (gen_rtx_SET (tmp, addr)); ++ operands[2] = change_address (src, DImode, ++ gen_rtx_PLUS (DImode, tmp, GEN_INT (8))); ++ } ++}) ++ + (define_expand "copysign3" + [(set (match_dup 3) + (abs:SFDF (match_operand:SFDF 1 "gpc_reg_operand" ""))) +@@ -4812,54 +4877,6 @@ + operands[5] = CONST0_RTX (mode); + }) + +-;; Optimize signbit on 64-bit systems with direct move to avoid doing the store +-;; and load. +-(define_insn_and_split "signbit2_dm" +- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r") +- (unspec:SI +- [(match_operand:SIGNBIT 1 "input_operand" "wa,m,r")] +- UNSPEC_SIGNBIT))] +- "TARGET_POWERPC64 && TARGET_DIRECT_MOVE" +- "#" +- "&& reload_completed" +- [(const_int 0)] +-{ +- rs6000_split_signbit (operands[0], operands[1]); +- DONE; +-} +- [(set_attr "length" "8,8,4") +- (set_attr "type" "mftgpr,load,integer")]) +- +-(define_insn_and_split "*signbit2_dm_ext" +- [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r") +- (any_extend:DI +- (unspec:SI +- [(match_operand:SIGNBIT 1 "input_operand" "wa,m,r")] +- UNSPEC_SIGNBIT)))] +- "TARGET_POWERPC64 && TARGET_DIRECT_MOVE" +- "#" +- "&& reload_completed" +- [(const_int 0)] +-{ +- rs6000_split_signbit (operands[0], operands[1]); +- DONE; +-} +- [(set_attr "length" "8,8,4") +- (set_attr "type" "mftgpr,load,integer")]) +- +-;; MODES_TIEABLE_P doesn't allow DImode to be tied with the various floating +-;; point types, which makes normal SUBREG's problematical. Instead use a +-;; special pattern to avoid using a normal movdi. +-(define_insn "signbit2_dm2" +- [(set (match_operand:DI 0 "gpc_reg_operand" "=r") +- (unspec:DI [(match_operand:SIGNBIT 1 "gpc_reg_operand" "wa") +- (const_int 0)] +- UNSPEC_SIGNBIT))] +- "TARGET_POWERPC64 && TARGET_DIRECT_MOVE" +- "mfvsrd %0,%x1" +- [(set_attr "type" "mftgpr")]) +- +- + ;; Use an unspec rather providing an if-then-else in RTL, to prevent the + ;; compiler from optimizing -0.0 + (define_insn "copysign3_fcpsgn" +@@ -5694,45 +5711,59 @@ + xscvdpsxds %x0,%x1" + [(set_attr "type" "fp")]) + +-(define_expand "fix_trunc2" +- [(parallel [(set (match_operand: 0 "nonimmediate_operand") +- (fix:QHI (match_operand:SFDF 1 "gpc_reg_operand"))) +- (clobber (match_scratch:DI 2))])] +- "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT +- && TARGET_VSX_SMALL_INTEGER" ++;; If we have ISA 3.0, QI/HImode values can go in both VSX registers and GPR ++;; registers. If we have ISA 2.07, we don't allow QI/HImode values in the ++;; vector registers, so we need to do direct moves to the GPRs, but SImode ++;; values can go in VSX registers. Keeping the direct move part through ++;; register allocation prevents the register allocator from doing a direct move ++;; of the SImode value to a GPR, and then a store/load. ++(define_insn_and_split "fix_trunc2" ++ [(set (match_operand: 0 "gpc_reg_operand" "=wJ,wJwK,r") ++ (any_fix:QHI (match_operand:SFDF 1 "gpc_reg_operand" "wJ,wJwK,wa"))) ++ (clobber (match_scratch:SI 2 "=X,X,wi"))] ++ "TARGET_DIRECT_MOVE" ++ "@ ++ fctiwz %0,%1 ++ xscvdpxws %x0,%x1 ++ #" ++ "&& reload_completed && int_reg_operand (operands[0], mode)" ++ [(set (match_dup 2) ++ (any_fix:SI (match_dup 1))) ++ (set (match_dup 3) ++ (match_dup 2))] + { +- if (MEM_P (operands[0])) +- operands[0] = rs6000_address_for_fpconvert (operands[0]); +-}) ++ operands[3] = gen_rtx_REG (SImode, REGNO (operands[0])); ++} ++ [(set_attr "length" "4,4,8") ++ (set_attr "type" "fp")]) + +-(define_insn_and_split "*fix_trunc2_internal" +- [(set (match_operand: 0 "reg_or_indexed_operand" "=wIwJ,rZ") +- (fix:QHI +- (match_operand:SFDF 1 "gpc_reg_operand" ","))) +- (clobber (match_scratch:DI 2 "=X,wi"))] +- "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT +- && TARGET_VSX_SMALL_INTEGER" ++(define_insn "*fix_truncsi2_p8" ++ [(set (match_operand:SI 0 "gpc_reg_operand" "=d,wa") ++ (any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")))] ++ "TARGET_DIRECT_MOVE" ++ "@ ++ fctiwz %0,%1 ++ xscvdpxws %x0,%x1" ++ [(set_attr "type" "fp")]) ++ ++;; Keep the convert and store together through register allocation to prevent ++;; the register allocator from getting clever and doing a direct move to a GPR ++;; and then store for reg+offset stores. ++(define_insn_and_split "*fix_trunc2_mem" ++ [(set (match_operand:QHSI 0 "memory_operand" "=Z") ++ (any_fix:QHSI (match_operand:SFDF 1 "gpc_reg_operand" "wa"))) ++ (clobber (match_scratch:SI 2 "=wa"))] ++ "(mode == SImode && TARGET_P8_VECTOR) || TARGET_P9_VECTOR" + "#" + "&& reload_completed" +- [(const_int 0)] ++ [(set (match_dup 2) ++ (any_fix:SI (match_dup 1))) ++ (set (match_dup 0) ++ (match_dup 3))] + { +- rtx dest = operands[0]; +- rtx src = operands[1]; +- +- if (vsx_register_operand (dest, mode)) +- { +- rtx di_dest = gen_rtx_REG (DImode, REGNO (dest)); +- emit_insn (gen_fix_truncdi2 (di_dest, src)); +- } +- else +- { +- rtx tmp = operands[2]; +- rtx tmp2 = gen_rtx_REG (mode, REGNO (tmp)); +- +- emit_insn (gen_fix_truncdi2 (tmp, src)); +- emit_move_insn (dest, tmp2); +- } +- DONE; ++ operands[3] = (mode == SImode ++ ? operands[2] ++ : gen_rtx_REG (mode, REGNO (operands[2]))); + }) + + (define_expand "fixuns_truncsi2" +@@ -5801,75 +5832,6 @@ + xscvdpuxds %x0,%x1" + [(set_attr "type" "fp")]) + +-(define_expand "fixuns_trunc2" +- [(parallel [(set (match_operand: 0 "nonimmediate_operand") +- (unsigned_fix:QHI (match_operand:SFDF 1 "gpc_reg_operand"))) +- (clobber (match_scratch:DI 2))])] +- "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT +- && TARGET_VSX_SMALL_INTEGER" +-{ +- if (MEM_P (operands[0])) +- operands[0] = rs6000_address_for_fpconvert (operands[0]); +-}) +- +-(define_insn_and_split "*fixuns_trunc2_internal" +- [(set (match_operand: 0 "reg_or_indexed_operand" "=wIwJ,rZ") +- (unsigned_fix:QHI +- (match_operand:SFDF 1 "gpc_reg_operand" ","))) +- (clobber (match_scratch:DI 2 "=X,wi"))] +- "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT +- && TARGET_VSX_SMALL_INTEGER" +- "#" +- "&& reload_completed" +- [(const_int 0)] +-{ +- rtx dest = operands[0]; +- rtx src = operands[1]; +- +- if (vsx_register_operand (dest, mode)) +- { +- rtx di_dest = gen_rtx_REG (DImode, REGNO (dest)); +- emit_insn (gen_fixuns_truncdi2 (di_dest, src)); +- } +- else +- { +- rtx tmp = operands[2]; +- rtx tmp2 = gen_rtx_REG (mode, REGNO (tmp)); +- +- emit_insn (gen_fixuns_truncdi2 (tmp, src)); +- emit_move_insn (dest, tmp2); +- } +- DONE; +-}) +- +-;; If -mvsx-small-integer, we can represent the FIX operation directly. On +-;; older machines, we have to use an UNSPEC to produce a SImode and move it +-;; to another location, since SImode is not allowed in vector registers. +-(define_insn "*fctiwz__smallint" +- [(set (match_operand:SI 0 "vsx_register_operand" "=d,wi") +- (any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" ",")))] +- "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT +- && TARGET_VSX_SMALL_INTEGER" +- "@ +- fctiwz %0,%1 +- xscvdpxws %x0,%x1" +- [(set_attr "type" "fp")]) +- +-;; Combiner pattern to prevent moving the result of converting a floating point +-;; value to 32-bit integer to GPR in order to save it. +-(define_insn_and_split "*fctiwz__mem" +- [(set (match_operand:SI 0 "memory_operand" "=Z") +- (any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "wa"))) +- (clobber (match_scratch:SI 2 "=wa"))] +- "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT +- && TARGET_VSX_SMALL_INTEGER" +- "#" +- "&& reload_completed" +- [(set (match_dup 2) +- (any_fix:SI (match_dup 1))) +- (set (match_dup 0) +- (match_dup 2))]) +- + ;; Here, we use (set (reg) (unspec:DI [(fix:SI ...)] UNSPEC_FCTIWZ)) + ;; rather than (set (subreg:SI (reg)) (fix:SI ...)) + ;; because the first makes it clear that operand 0 is not live +@@ -8678,7 +8640,7 @@ + ;; FPR->GPR GPR->FPR VSX->GPR GPR->VSX + (define_insn "*movdi_internal64" + [(set (match_operand:DI 0 "nonimmediate_operand" +- "=Y, r, r, r, r, r, ++ "=YZ, r, r, r, r, r, + ^m, ^d, ^d, ^wY, $Z, $wb, + $wv, ^wi, *wo, *wo, *wv, *wi, + *wi, *wv, *wv, r, *h, *h, +@@ -8685,7 +8647,7 @@ + ?*r, ?*wg, ?*r, ?*wj") + + (match_operand:DI 1 "input_operand" +- "r, Y, r, I, L, nF, ++ "r, YZ, r, I, L, nF, + d, m, d, wb, wv, wY, + Z, wi, Oj, wM, OjwM, Oj, + wM, wS, wB, *h, r, 0, +@@ -14419,14 +14381,10 @@ + (set_attr "length" "4")]) + + (define_int_iterator UNSPEC_DIV_EXTEND [UNSPEC_DIVE +- UNSPEC_DIVEO +- UNSPEC_DIVEU +- UNSPEC_DIVEUO]) ++ UNSPEC_DIVEU]) + + (define_int_attr div_extend [(UNSPEC_DIVE "e") +- (UNSPEC_DIVEO "eo") +- (UNSPEC_DIVEU "eu") +- (UNSPEC_DIVEUO "euo")]) ++ (UNSPEC_DIVEU "eu")]) + + (define_insn "div_" + [(set (match_operand:GPR 0 "register_operand" "=r") +@@ -14505,16 +14463,14 @@ + (set_attr "length" "4")]) + + (define_insn_and_split "pack" +- [(set (match_operand:FMOVE128 0 "register_operand" "=d,&d") ++ [(set (match_operand:FMOVE128 0 "register_operand" "=&d") + (unspec:FMOVE128 +- [(match_operand: 1 "register_operand" "0,d") +- (match_operand: 2 "register_operand" "d,d")] ++ [(match_operand: 1 "register_operand" "d") ++ (match_operand: 2 "register_operand" "d")] + UNSPEC_PACK_128BIT))] + "FLOAT128_2REG_P (mode)" +- "@ +- fmr %L0,%2 +- #" +- "&& reload_completed && REGNO (operands[0]) != REGNO (operands[1])" ++ "#" ++ "&& reload_completed" + [(set (match_dup 3) (match_dup 1)) + (set (match_dup 4) (match_dup 2))] + { +@@ -14527,8 +14483,8 @@ + operands[3] = gen_rtx_REG (mode, dest_hi); + operands[4] = gen_rtx_REG (mode, dest_lo); + } +- [(set_attr "type" "fpsimple,fp") +- (set_attr "length" "4,8")]) ++ [(set_attr "type" "fp") ++ (set_attr "length" "8")]) + + (define_insn "unpack" + [(set (match_operand:DI 0 "register_operand" "=d,d") +@@ -14803,49 +14759,45 @@ + (set_attr "length" "8")]) + + ;; Conversion between IEEE 128-bit and integer types +-(define_insn "fix_di2_hw" +- [(set (match_operand:DI 0 "altivec_register_operand" "=v") +- (fix:DI (match_operand:IEEE128 1 "altivec_register_operand" "v")))] +- "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" +- "xscvqpsdz %0,%1" +- [(set_attr "type" "vecfloat") +- (set_attr "size" "128")]) + +-(define_insn "fixuns_di2_hw" +- [(set (match_operand:DI 0 "altivec_register_operand" "=v") +- (unsigned_fix:DI (match_operand:IEEE128 1 "altivec_register_operand" "v")))] +- "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" +- "xscvqpudz %0,%1" ++;; The fix function for DImode and SImode was declared earlier as a ++;; define_expand. It calls into rs6000_expand_float128_convert if we don't ++;; have IEEE 128-bit hardware support. QImode and HImode are not provided ++;; unless we have the IEEE 128-bit hardware. ++;; ++;; Unlike the code for converting SFmode/DFmode to QImode/HImode, we don't have ++;; to provide a GPR target that used direct move and a conversion in the GPR ++;; which works around QImode/HImode not being allowed in vector registers in ++;; ISA 2.07 (power8). ++(define_insn "fix_2_hw" ++ [(set (match_operand:SDI 0 "altivec_register_operand" "=v") ++ (any_fix:SDI (match_operand:IEEE128 1 "altivec_register_operand" "v")))] ++ "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" ++ "xscvqpz %0,%1" + [(set_attr "type" "vecfloat") + (set_attr "size" "128")]) + +-(define_insn "fix_si2_hw" +- [(set (match_operand:SI 0 "altivec_register_operand" "=v") +- (fix:SI (match_operand:IEEE128 1 "altivec_register_operand" "v")))] +- "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" +- "xscvqpswz %0,%1" ++(define_insn "fix_trunc2" ++ [(set (match_operand:QHI 0 "altivec_register_operand" "=v") ++ (any_fix:QHI ++ (match_operand:IEEE128 1 "altivec_register_operand" "v")))] ++ "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" ++ "xscvqpwz %0,%1" + [(set_attr "type" "vecfloat") + (set_attr "size" "128")]) + +-(define_insn "fixuns_si2_hw" +- [(set (match_operand:SI 0 "altivec_register_operand" "=v") +- (unsigned_fix:SI (match_operand:IEEE128 1 "altivec_register_operand" "v")))] ++;; Combiner patterns to prevent moving the result of converting an IEEE 128-bit ++;; floating point value to 8/16/32-bit integer to GPR in order to save it. ++(define_insn_and_split "*fix_trunc2_mem" ++ [(set (match_operand:QHSI 0 "memory_operand" "=Z") ++ (any_fix:QHSI ++ (match_operand:IEEE128 1 "altivec_register_operand" "v"))) ++ (clobber (match_scratch:QHSI 2 "=v"))] + "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" +- "xscvqpuwz %0,%1" +- [(set_attr "type" "vecfloat") +- (set_attr "size" "128")]) +- +-;; Combiner pattern to prevent moving the result of converting an IEEE 128-bit +-;; floating point value to 32-bit integer to GPR in order to save it. +-(define_insn_and_split "*fix__mem" +- [(set (match_operand:SI 0 "memory_operand" "=Z") +- (any_fix:SI (match_operand:IEEE128 1 "altivec_register_operand" "v"))) +- (clobber (match_scratch:SI 2 "=v"))] +- "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode)" + "#" + "&& reload_completed" + [(set (match_dup 2) +- (any_fix:SI (match_dup 1))) ++ (any_fix:QHSI (match_dup 1))) + (set (match_dup 0) + (match_dup 2))]) + +Index: gcc/config/rs6000/driver-rs6000.c +=================================================================== +--- a/src/gcc/config/rs6000/driver-rs6000.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/driver-rs6000.c (.../branches/gcc-7-branch) +@@ -21,6 +21,8 @@ + #include "system.h" + #include "coretypes.h" + #include "tm.h" ++#include "diagnostic.h" ++#include "opts.h" + #include + + #ifdef _AIX +@@ -36,6 +38,44 @@ + # include + #endif + ++#ifdef __linux__ ++/* Canonical GCC cpu name table. */ ++static const char *rs6000_supported_cpu_names[] = ++{ ++#define RS6000_CPU(NAME, CPU, FLAGS) NAME, ++#include "rs6000-cpus.def" ++#undef RS6000_CPU ++}; ++ ++/* This table holds a list of cpus where their Linux AT_PLATFORM name differs ++ from their GCC canonical name. The first column in a row contains the GCC ++ canonical cpu name and the other columns in that row contain AT_PLATFORM ++ names that should be mapped to the canonical name. */ ++ ++static const char *linux_cpu_translation_table[][4] = { ++ { "403", "ppc403", NULL }, ++ { "405", "ppc405", NULL }, ++ { "440", "ppc440", "ppc440gp", NULL }, ++ { "476", "ppc470", NULL }, ++ { "601", "ppc601", NULL }, ++ { "603", "ppc603", NULL }, ++ { "604", "ppc604", NULL }, ++ { "7400", "ppc7400", NULL }, ++ { "7450", "ppc7450", NULL }, ++ { "750", "ppc750", NULL }, ++ { "823", "ppc823", NULL }, ++ { "8540", "ppc8540", NULL }, ++ { "8548", "ppc8548", NULL }, ++ { "970", "ppc970", NULL }, ++ { "cell", "ppc-cell-be", NULL }, ++ { "e500mc", "ppce500mc", NULL }, ++ { "e5500", "ppce5500", NULL }, ++ { "e6500", "ppce6500", NULL }, ++ { "power7", "power7+", NULL }, ++ { NULL } /* End of table sentinel. */ ++}; ++#endif ++ + const char *host_detect_local_cpu (int argc, const char **argv); + + #if GCC_VERSION >= 0 +@@ -156,15 +196,20 @@ + + #ifdef __linux__ + +-/* Returns AT_PLATFORM if present, otherwise generic PowerPC. */ ++/* Returns the canonical AT_PLATFORM if present, otherwise NULL. */ + + static const char * + elf_platform (void) + { +- int fd; ++ /* Used to cache the result we determine below. */ ++ static const char *cpu = NULL; + +- fd = open ("/proc/self/auxv", O_RDONLY); ++ /* Use the cached AT_PLATFORM cpu name if we've already determined it. */ ++ if (cpu != NULL) ++ return cpu; + ++ int fd = open ("/proc/self/auxv", O_RDONLY); ++ + if (fd != -1) + { + char buf[1024]; +@@ -177,15 +222,51 @@ + if (n > 0) + { + for (av = (ElfW(auxv_t) *) buf; av->a_type != AT_NULL; ++av) +- switch (av->a_type) ++ if (av->a_type == AT_PLATFORM) + { +- case AT_PLATFORM: +- return (const char *) av->a_un.a_val; +- +- default: ++ /* Cache the result. */ ++ cpu = (const char *) av->a_un.a_val; + break; + } + } ++ ++ /* Verify that CPU is either a valid -mcpu= option name, or is a ++ valid alternative name. If it is a valid alternative name, then use ++ the canonical name. */ ++ if (cpu != NULL) ++ { ++ size_t i, j; ++ char *s; ++ ++ /* Check if AT_PLATFORM is a GCC canonical cpu name. */ ++ for (i = 0; i < ARRAY_SIZE (rs6000_supported_cpu_names); i++) ++ if (!strcmp (cpu, rs6000_supported_cpu_names[i])) ++ return cpu; ++ ++ /* Check if AT_PLATFORM can be translated to a canonical cpu name. */ ++ for (i = 0; linux_cpu_translation_table[i][0] != NULL; i++) ++ { ++ const char *canonical = linux_cpu_translation_table[i][0]; ++ for (j = 1; linux_cpu_translation_table[i][j] != NULL; j++) ++ if (!strcmp (cpu, linux_cpu_translation_table[i][j])) ++ { ++ /* Cache the result. */ ++ cpu = canonical; ++ return cpu; ++ } ++ } ++ ++ /* The kernel returned an AT_PLATFORM name we do not support. */ ++ auto_vec candidates; ++ for (i = 0; i < ARRAY_SIZE (rs6000_supported_cpu_names); i++) ++ candidates.safe_push (rs6000_supported_cpu_names[i]); ++ candidates_list_and_hint (cpu, s, candidates); ++ fatal_error ( ++ input_location, ++ "Unsupported cpu name returned from kernel for -mcpu=native: %s\n" ++ "Please use an explicit cpu name. Valid cpu names are: %s", ++ cpu, s); ++ } + } + return NULL; + } +Index: gcc/config/rs6000/altivec.h +=================================================================== +--- a/src/gcc/config/rs6000/altivec.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/rs6000/altivec.h (.../branches/gcc-7-branch) +@@ -398,8 +398,8 @@ + #define vec_vctzd __builtin_vec_vctzd + #define vec_vctzh __builtin_vec_vctzh + #define vec_vctzw __builtin_vec_vctzw +-#define vec_vextract4b __builtin_vec_vextract4b +-#define vec_vinsert4b __builtin_vec_vinsert4b ++#define vec_extract4b __builtin_vec_extract4b ++#define vec_insert4b __builtin_vec_insert4b + #define vec_vprtyb __builtin_vec_vprtyb + #define vec_vprtybd __builtin_vec_vprtybd + #define vec_vprtybw __builtin_vec_vprtybw +Index: gcc/config/darwin.c +=================================================================== +--- a/src/gcc/config/darwin.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/darwin.c (.../branches/gcc-7-branch) +@@ -3674,21 +3674,4 @@ + : text_section; + } + +-/* When a function is partitioned between sections, we need to insert a label +- at the start of each new chunk - so that it may become a valid 'atom' for +- eh and debug purposes. Without this the linker will emit warnings if one +- tries to add line location information (since the switched fragment will +- be anonymous). */ +- +-void +-darwin_function_switched_text_sections (FILE *fp, tree decl, bool new_is_cold) +-{ +- char buf[128]; +- snprintf (buf, 128, "%s%s",new_is_cold?"__cold_sect_of_":"__hot_sect_of_", +- IDENTIFIER_POINTER (DECL_NAME (decl))); +- /* Make sure we pick up all the relevant quotes etc. */ +- assemble_name_raw (fp, (const char *) buf); +- fputs (":\n", fp); +-} +- + #include "gt-darwin.h" +Index: gcc/config/darwin.h +=================================================================== +--- a/src/gcc/config/darwin.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/darwin.h (.../branches/gcc-7-branch) +@@ -705,10 +705,6 @@ + #undef TARGET_ASM_FUNCTION_SECTION + #define TARGET_ASM_FUNCTION_SECTION darwin_function_section + +-#undef TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS +-#define TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS \ +- darwin_function_switched_text_sections +- + #undef TARGET_ASM_SELECT_RTX_SECTION + #define TARGET_ASM_SELECT_RTX_SECTION machopic_select_rtx_section + #undef TARGET_ASM_UNIQUE_SECTION +Index: gcc/config/arm/arm-builtins.c +=================================================================== +--- a/src/gcc/config/arm/arm-builtins.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/arm/arm-builtins.c (.../branches/gcc-7-branch) +@@ -2576,7 +2576,7 @@ + icode = CODE_FOR_set_fpscr; + arg0 = CALL_EXPR_ARG (exp, 0); + op0 = expand_normal (arg0); +- pat = GEN_FCN (icode) (op0); ++ pat = GEN_FCN (icode) (force_reg (SImode, op0)); + } + emit_insn (pat); + return target; +@@ -2584,7 +2584,9 @@ + case ARM_BUILTIN_CMSE_NONSECURE_CALLER: + target = gen_reg_rtx (SImode); + op0 = arm_return_addr (0, NULL_RTX); +- emit_insn (gen_addsi3 (target, op0, const1_rtx)); ++ emit_insn (gen_andsi3 (target, op0, const1_rtx)); ++ op1 = gen_rtx_EQ (SImode, target, const0_rtx); ++ emit_insn (gen_cstoresi4 (target, op1, target, const0_rtx)); + return target; + + case ARM_BUILTIN_TEXTRMSB: +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/arm/arm.c (.../branches/gcc-7-branch) +@@ -17367,7 +17367,11 @@ + + if (use_cmse) + cmse_nonsecure_call_clear_caller_saved (); +- if (TARGET_THUMB1) ++ ++ /* We cannot run the Thumb passes for thunks because there is no CFG. */ ++ if (cfun->is_thunk) ++ ; ++ else if (TARGET_THUMB1) + thumb1_reorg (); + else if (TARGET_THUMB2) + thumb2_reorg (); +@@ -18187,12 +18191,18 @@ + gcc_assert ((REGNO (operands[1]) != IP_REGNUM) + || (TARGET_ARM && TARGET_LDRD)); + ++ /* For TARGET_ARM the first source register of an STRD ++ must be even. This is usually the case for double-word ++ values but user assembly constraints can force an odd ++ starting register. */ ++ bool allow_strd = TARGET_LDRD ++ && !(TARGET_ARM && (REGNO (operands[1]) & 1) == 1); + switch (GET_CODE (XEXP (operands[0], 0))) + { + case REG: + if (emit) + { +- if (TARGET_LDRD) ++ if (allow_strd) + output_asm_insn ("strd%?\t%1, [%m0]", operands); + else + output_asm_insn ("stm%?\t%m0, %M1", operands); +@@ -18200,7 +18210,7 @@ + break; + + case PRE_INC: +- gcc_assert (TARGET_LDRD); ++ gcc_assert (allow_strd); + if (emit) + output_asm_insn ("strd%?\t%1, [%m0, #8]!", operands); + break; +@@ -18208,7 +18218,7 @@ + case PRE_DEC: + if (emit) + { +- if (TARGET_LDRD) ++ if (allow_strd) + output_asm_insn ("strd%?\t%1, [%m0, #-8]!", operands); + else + output_asm_insn ("stmdb%?\t%m0!, %M1", operands); +@@ -18218,7 +18228,7 @@ + case POST_INC: + if (emit) + { +- if (TARGET_LDRD) ++ if (allow_strd) + output_asm_insn ("strd%?\t%1, [%m0], #8", operands); + else + output_asm_insn ("stm%?\t%m0!, %M1", operands); +@@ -18226,7 +18236,7 @@ + break; + + case POST_DEC: +- gcc_assert (TARGET_LDRD); ++ gcc_assert (allow_strd); + if (emit) + output_asm_insn ("strd%?\t%1, [%m0], #-8", operands); + break; +@@ -18237,8 +18247,8 @@ + otherops[1] = XEXP (XEXP (XEXP (operands[0], 0), 1), 0); + otherops[2] = XEXP (XEXP (XEXP (operands[0], 0), 1), 1); + +- /* IWMMXT allows offsets larger than ldrd can handle, +- fix these up with a pair of ldr. */ ++ /* IWMMXT allows offsets larger than strd can handle, ++ fix these up with a pair of str. */ + if (!TARGET_THUMB2 + && CONST_INT_P (otherops[2]) + && (INTVAL(otherops[2]) <= -256 +@@ -18303,7 +18313,7 @@ + return ""; + } + } +- if (TARGET_LDRD ++ if (allow_strd + && (REG_P (otherops[2]) + || TARGET_THUMB2 + || (CONST_INT_P (otherops[2]) +@@ -19097,6 +19107,11 @@ + static int + arm_compute_static_chain_stack_bytes (void) + { ++ /* Once the value is updated from the init value of -1, do not ++ re-compute. */ ++ if (cfun->machine->static_chain_stack_bytes != -1) ++ return cfun->machine->static_chain_stack_bytes; ++ + /* See the defining assertion in arm_expand_prologue. */ + if (IS_NESTED (arm_current_func_type ()) + && ((TARGET_APCS_FRAME && frame_pointer_needed && TARGET_ARM) +@@ -21395,6 +21410,11 @@ + emit_insn (gen_movsi (stack_pointer_rtx, r1)); + } + ++ /* Let's compute the static_chain_stack_bytes required and store it. Right ++ now the value must the -1 as stored by arm_init_machine_status (). */ ++ cfun->machine->static_chain_stack_bytes ++ = arm_compute_static_chain_stack_bytes (); ++ + /* The static chain register is the same as the IP register. If it is + clobbered when creating the frame, we need to save and restore it. */ + clobber_ip = IS_NESTED (func_type) +@@ -24542,6 +24562,7 @@ + #if ARM_FT_UNKNOWN != 0 + machine->func_type = ARM_FT_UNKNOWN; + #endif ++ machine->static_chain_stack_bytes = -1; + return machine; + } + +@@ -26412,6 +26433,8 @@ + arm32_output_mi_thunk (FILE *file, tree, HOST_WIDE_INT delta, + HOST_WIDE_INT vcall_offset, tree function) + { ++ const bool long_call_p = arm_is_long_call_p (function); ++ + /* On ARM, this_regno is R0 or R1 depending on + whether the function returns an aggregate or not. + */ +@@ -26449,10 +26472,23 @@ + TREE_USED (function) = 1; + } + rtx funexp = XEXP (DECL_RTL (function), 0); ++ if (long_call_p) ++ { ++ emit_move_insn (temp, funexp); ++ funexp = temp; ++ } + funexp = gen_rtx_MEM (FUNCTION_MODE, funexp); +- rtx_insn * insn = emit_call_insn (gen_sibcall (funexp, const0_rtx, NULL_RTX)); ++ rtx_insn *insn = emit_call_insn (gen_sibcall (funexp, const0_rtx, NULL_RTX)); + SIBLING_CALL_P (insn) = 1; ++ emit_barrier (); + ++ /* Indirect calls require a bit of fixup in PIC mode. */ ++ if (long_call_p) ++ { ++ split_all_insns_noflow (); ++ arm_reorg (); ++ } ++ + insn = get_insns (); + shorten_branches (insn); + final_start_function (insn, file, 1); +@@ -26853,7 +26889,10 @@ + arm_array_mode_supported_p (machine_mode mode, + unsigned HOST_WIDE_INT nelems) + { +- if (TARGET_NEON ++ /* We don't want to enable interleaved loads and stores for BYTES_BIG_ENDIAN ++ for now, as the lane-swapping logic needs to be extended in the expanders. ++ See PR target/82518. */ ++ if (TARGET_NEON && !BYTES_BIG_ENDIAN + && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)) + && (nelems >= 2 && nelems <= 4)) + return true; +Index: gcc/config/arm/arm.h +=================================================================== +--- a/src/gcc/config/arm/arm.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/arm/arm.h (.../branches/gcc-7-branch) +@@ -1420,6 +1420,9 @@ + machine_mode thumb1_cc_mode; + /* Set to 1 after arm_reorg has started. */ + int after_arm_reorg; ++ /* The number of bytes used to store the static chain register on the ++ stack, above the stack frame. */ ++ int static_chain_stack_bytes; + } + machine_function; + #endif +Index: gcc/config/arm/arm_cmse.h +=================================================================== +--- a/src/gcc/config/arm/arm_cmse.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/arm/arm_cmse.h (.../branches/gcc-7-branch) +@@ -35,7 +35,6 @@ + #if __ARM_FEATURE_CMSE & 1 + + #include +-#include + + #ifdef __ARM_BIG_ENDIAN + +@@ -174,9 +173,9 @@ + #define CMSE_MPU_NONSECURE 16 + #define CMSE_NONSECURE 18 + +-#define cmse_nsfptr_create(p) ((typeof ((p))) ((intptr_t) (p) & ~1)) ++#define cmse_nsfptr_create(p) ((__typeof__ ((p))) ((__INTPTR_TYPE__) (p) & ~1)) + +-#define cmse_is_nsfptr(p) (!((intptr_t) (p) & 1)) ++#define cmse_is_nsfptr(p) (!((__INTPTR_TYPE__) (p) & 1)) + + #endif /* __ARM_FEATURE_CMSE & 2 */ + +@@ -188,7 +187,7 @@ + cmse_check_address_range (void *, size_t, int); + + #define cmse_check_pointed_object(p, f) \ +- ((typeof ((p))) cmse_check_address_range ((p), sizeof (*(p)), (f))) ++ ((__typeof__ ((p))) cmse_check_address_range ((p), sizeof (*(p)), (f))) + + #endif /* __ARM_FEATURE_CMSE & 1 */ + +Index: gcc/config/arm/neon.md +=================================================================== +--- a/src/gcc/config/arm/neon.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/arm/neon.md (.../branches/gcc-7-branch) +@@ -1143,12 +1143,12 @@ + ) + + (define_insn_and_split "ashldi3_neon" +- [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r,?&r, ?w,w") +- (ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r, 0w,w") +- (match_operand:SI 2 "general_operand" "rUm, i, r, i, i,rUm,i"))) +- (clobber (match_scratch:SI 3 "= X, X,?&r, X, X, X,X")) +- (clobber (match_scratch:SI 4 "= X, X,?&r, X, X, X,X")) +- (clobber (match_scratch:DI 5 "=&w, X, X, X, X, &w,X")) ++ [(set (match_operand:DI 0 "s_register_operand" "= w, w, &r, r, &r, ?w,?w") ++ (ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r, 0w, w") ++ (match_operand:SI 2 "general_operand" "rUm, i, r, i, i,rUm, i"))) ++ (clobber (match_scratch:SI 3 "= X, X, &r, X, X, X, X")) ++ (clobber (match_scratch:SI 4 "= X, X, &r, X, X, X, X")) ++ (clobber (match_scratch:DI 5 "=&w, X, X, X, X, &w, X")) + (clobber (reg:CC_C CC_REGNUM))] + "TARGET_NEON" + "#" +@@ -1243,7 +1243,7 @@ + ;; ashrdi3_neon + ;; lshrdi3_neon + (define_insn_and_split "di3_neon" +- [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r,?&r,?w,?w") ++ [(set (match_operand:DI 0 "s_register_operand" "= w, w, &r, r, &r,?w,?w") + (RSHIFTS:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r,0w, w") + (match_operand:SI 2 "reg_or_int_operand" " r, i, r, i, i, r, i"))) + (clobber (match_scratch:SI 3 "=2r, X, &r, X, X,2r, X")) +Index: gcc/config/arm/arm.md +=================================================================== +--- a/src/gcc/config/arm/arm.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/arm/arm.md (.../branches/gcc-7-branch) +@@ -4498,16 +4498,13 @@ + (set_attr "type" "load1")]) + + (define_insn "unaligned_loadhis" +- [(set (match_operand:SI 0 "s_register_operand" "=l,r") ++ [(set (match_operand:SI 0 "s_register_operand" "=r") + (sign_extend:SI +- (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,Uh")] ++ (unspec:HI [(match_operand:HI 1 "memory_operand" "Uh")] + UNSPEC_UNALIGNED_LOAD)))] + "unaligned_access" + "ldrsh%?\t%0, %1\t@ unaligned" +- [(set_attr "arch" "t2,any") +- (set_attr "length" "2,4") +- (set_attr "predicable" "yes") +- (set_attr "predicable_short_it" "yes,no") ++ [(set_attr "predicable" "yes") + (set_attr "type" "load_byte")]) + + (define_insn "unaligned_loadhiu" +Index: gcc/config/pa/predicates.md +=================================================================== +--- a/src/gcc/config/pa/predicates.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/pa/predicates.md (.../branches/gcc-7-branch) +@@ -277,6 +277,9 @@ + case HImode: + return true; + ++ case VOIDmode: ++ return false; ++ + default: + return (INTVAL (op) % GET_MODE_SIZE (mode)) == 0; + } +Index: gcc/config/pa/pa64-hpux.h +=================================================================== +--- a/src/gcc/config/pa/pa64-hpux.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/pa/pa64-hpux.h (.../branches/gcc-7-branch) +@@ -245,9 +245,19 @@ + + /* We need to use the HP style for internal labels. */ + #undef ASM_GENERATE_INTERNAL_LABEL +-#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \ +- sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM)) ++#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \ ++ do \ ++ { \ ++ char *__p; \ ++ (LABEL)[0] = '*'; \ ++ (LABEL)[1] = (PREFIX)[0]; \ ++ (LABEL)[2] = '$'; \ ++ __p = stpcpy (&(LABEL)[3], &(PREFIX)[1]); \ ++ sprint_ul (__p, (unsigned long) (NUM)); \ ++ } \ ++ while (0) + ++ + #else /* USING_ELFOS_H */ + + /* We are not using GAS. */ +Index: gcc/config/pa/pa.md +=================================================================== +--- a/src/gcc/config/pa/pa.md (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/pa/pa.md (.../branches/gcc-7-branch) +@@ -84,6 +84,7 @@ + UNSPEC_TLSGD_PIC + UNSPEC_TLSLDM_PIC + UNSPEC_TLSIE_PIC ++ UNSPEC_MEMORY_BARRIER + ]) + + ;; UNSPEC_VOLATILE: +@@ -2536,24 +2537,40 @@ + + xoperands[0] = operands[0]; + xoperands[1] = operands[1]; +- xoperands[2] = gen_label_rtx (); + +- (*targetm.asm_out.internal_label) (asm_out_file, \"L\", +- CODE_LABEL_NUMBER (xoperands[2])); +- output_asm_insn (\"mfia %0\", xoperands); ++ if (GET_CODE (operands[1]) == LABEL_REF ++ && !LABEL_REF_NONLOCAL_P (operands[1])) ++ { ++ xoperands[2] = gen_label_rtx (); ++ (*targetm.asm_out.internal_label) (asm_out_file, \"L\", ++ CODE_LABEL_NUMBER (xoperands[2])); ++ output_asm_insn (\"mfia %0\", xoperands); + +- /* If we're trying to load the address of a label that happens to be +- close, then we can use a shorter sequence. */ +- if (GET_CODE (operands[1]) == LABEL_REF +- && !LABEL_REF_NONLOCAL_P (operands[1]) +- && INSN_ADDRESSES_SET_P () +- && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) +- - INSN_ADDRESSES (INSN_UID (insn))) < 8100) +- output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); ++ /* If we're trying to load the address of a label that happens to be ++ close, then we can use a shorter sequence. */ ++ if (INSN_ADDRESSES_SET_P () ++ && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) ++ - INSN_ADDRESSES (INSN_UID (insn))) < 8100) ++ output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); ++ else ++ { ++ output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); ++ output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); ++ } ++ } + else + { +- output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); +- output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); ++ /* Load using linkage table. */ ++ if (TARGET_64BIT) ++ { ++ output_asm_insn (\"addil LT%%%1,%%r27\", xoperands); ++ output_asm_insn (\"ldd RT%%%1(%0),%0\", xoperands); ++ } ++ else ++ { ++ output_asm_insn (\"addil LT%%%1,%%r19\", xoperands); ++ output_asm_insn (\"ldw RT%%%1(%0),%0\", xoperands); ++ } + } + return \"\"; + }" +@@ -2570,25 +2587,33 @@ + + xoperands[0] = operands[0]; + xoperands[1] = operands[1]; +- xoperands[2] = gen_label_rtx (); + +- output_asm_insn (\"bl .+8,%0\", xoperands); +- output_asm_insn (\"depi 0,31,2,%0\", xoperands); +- (*targetm.asm_out.internal_label) (asm_out_file, \"L\", +- CODE_LABEL_NUMBER (xoperands[2])); ++ if (GET_CODE (operands[1]) == LABEL_REF ++ && !LABEL_REF_NONLOCAL_P (operands[1])) ++ { ++ xoperands[2] = gen_label_rtx (); ++ output_asm_insn (\"bl .+8,%0\", xoperands); ++ output_asm_insn (\"depi 0,31,2,%0\", xoperands); ++ (*targetm.asm_out.internal_label) (asm_out_file, \"L\", ++ CODE_LABEL_NUMBER (xoperands[2])); + +- /* If we're trying to load the address of a label that happens to be +- close, then we can use a shorter sequence. */ +- if (GET_CODE (operands[1]) == LABEL_REF +- && !LABEL_REF_NONLOCAL_P (operands[1]) +- && INSN_ADDRESSES_SET_P () +- && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) +- - INSN_ADDRESSES (INSN_UID (insn))) < 8100) +- output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); ++ /* If we're trying to load the address of a label that happens to be ++ close, then we can use a shorter sequence. */ ++ if (INSN_ADDRESSES_SET_P () ++ && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0))) ++ - INSN_ADDRESSES (INSN_UID (insn))) < 8100) ++ output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands); ++ else ++ { ++ output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); ++ output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); ++ } ++ } + else + { +- output_asm_insn (\"addil L%%%1-%2,%0\", xoperands); +- output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands); ++ /* Load using linkage table. */ ++ output_asm_insn (\"addil LT%%%1,%%r19\", xoperands); ++ output_asm_insn (\"ldw RT%%%1(%0),%0\", xoperands); + } + return \"\"; + }" +@@ -9931,14 +9956,8 @@ + ;; doubleword loads and stores are not guaranteed to be atomic + ;; when referencing the I/O address space. + +-;; The kernel cmpxchg operation on linux is not atomic with respect to +-;; memory stores on SMP machines, so we must do stores using a cmpxchg +-;; operation. +- + ;; These patterns are at the bottom so the non atomic versions are preferred. + +-;; Implement atomic QImode store using exchange. +- + (define_expand "atomic_storeqi" + [(match_operand:QI 0 "memory_operand") ;; memory + (match_operand:QI 1 "register_operand") ;; val out +@@ -9991,26 +10010,8 @@ + FAIL; + }) + +-;; Implement atomic SFmode store using exchange. ++;; Implement atomic DImode load. + +-(define_expand "atomic_storesf" +- [(match_operand:SF 0 "memory_operand") ;; memory +- (match_operand:SF 1 "register_operand") ;; val out +- (match_operand:SI 2 "const_int_operand")] ;; model +- "" +-{ +- if (TARGET_SYNC_LIBCALL) +- { +- rtx mem = operands[0]; +- rtx val = operands[1]; +- if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) +- DONE; +- } +- FAIL; +-}) +- +-;; Implement atomic DImode load using 64-bit floating point load. +- + (define_expand "atomic_loaddi" + [(match_operand:DI 0 "register_operand") ;; val out + (match_operand:DI 1 "memory_operand") ;; memory +@@ -10024,29 +10025,27 @@ + + model = memmodel_from_int (INTVAL (operands[2])); + operands[1] = force_reg (SImode, XEXP (operands[1], 0)); +- expand_mem_thread_fence (model); +- emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1])); + if (is_mm_seq_cst (model)) + expand_mem_thread_fence (model); ++ emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1])); ++ expand_mem_thread_fence (model); + DONE; + }) + + (define_insn "atomic_loaddi_1" +- [(set (match_operand:DI 0 "register_operand" "=f,r") +- (mem:DI (match_operand:SI 1 "register_operand" "r,r"))) +- (clobber (match_scratch:DI 2 "=X,f"))] ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (mem:DI (match_operand:SI 1 "register_operand" "r"))) ++ (clobber (match_scratch:DI 2 "=f"))] + "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT" +- "@ +- {fldds|fldd} 0(%1),%0 +- {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0" +- [(set_attr "type" "move,move") +- (set_attr "length" "4,16")]) ++ "{fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0" ++ [(set_attr "type" "move") ++ (set_attr "length" "16")]) + + ;; Implement atomic DImode store. + + (define_expand "atomic_storedi" + [(match_operand:DI 0 "memory_operand") ;; memory +- (match_operand:DI 1 "register_operand") ;; val out ++ (match_operand:DI 1 "reg_or_cint_move_operand") ;; val out + (match_operand:SI 2 "const_int_operand")] ;; model + "" + { +@@ -10065,6 +10064,8 @@ + + model = memmodel_from_int (INTVAL (operands[2])); + operands[0] = force_reg (SImode, XEXP (operands[0], 0)); ++ if (operands[1] != CONST0_RTX (DImode)) ++ operands[1] = force_reg (DImode, operands[1]); + expand_mem_thread_fence (model); + emit_insn (gen_atomic_storedi_1 (operands[0], operands[1])); + if (is_mm_seq_cst (model)) +@@ -10074,87 +10075,33 @@ + + (define_insn "atomic_storedi_1" + [(set (mem:DI (match_operand:SI 0 "register_operand" "r,r")) +- (match_operand:DI 1 "register_operand" "f,r")) ++ (match_operand:DI 1 "reg_or_0_operand" "M,r")) + (clobber (match_scratch:DI 2 "=X,f"))] +- "!TARGET_64BIT && !TARGET_DISABLE_FPREGS +- && !TARGET_SOFT_FLOAT && !TARGET_SYNC_LIBCALL" ++ "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT" + "@ +- {fstds|fstd} %1,0(%0) ++ {fstds|fstd} %%fr0,0(%0) + {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)" + [(set_attr "type" "move,move") + (set_attr "length" "4,16")]) + +-;; Implement atomic DFmode load using 64-bit floating point load. ++;; PA 2.0 hardware supports out-of-order execution of loads and stores, so ++;; we need a memory barrier to enforce program order for memory references. ++;; Since we want PA 1.x code to be PA 2.0 compatible, we also need the ++;; barrier when generating PA 1.x code. + +-(define_expand "atomic_loaddf" +- [(match_operand:DF 0 "register_operand") ;; val out +- (match_operand:DF 1 "memory_operand") ;; memory +- (match_operand:SI 2 "const_int_operand")] ;; model ++(define_expand "memory_barrier" ++ [(set (match_dup 0) ++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))] + "" + { +- enum memmodel model; +- +- if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT) +- FAIL; +- +- model = memmodel_from_int (INTVAL (operands[2])); +- operands[1] = force_reg (SImode, XEXP (operands[1], 0)); +- expand_mem_thread_fence (model); +- emit_insn (gen_atomic_loaddf_1 (operands[0], operands[1])); +- if (is_mm_seq_cst (model)) +- expand_mem_thread_fence (model); +- DONE; ++ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); ++ MEM_VOLATILE_P (operands[0]) = 1; + }) + +-(define_insn "atomic_loaddf_1" +- [(set (match_operand:DF 0 "register_operand" "=f,r") +- (mem:DF (match_operand:SI 1 "register_operand" "r,r"))) +- (clobber (match_scratch:DF 2 "=X,f"))] +- "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT" +- "@ +- {fldds|fldd} 0(%1),%0 +- {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0" +- [(set_attr "type" "move,move") +- (set_attr "length" "4,16")]) +- +-;; Implement atomic DFmode store using 64-bit floating point store. +- +-(define_expand "atomic_storedf" +- [(match_operand:DF 0 "memory_operand") ;; memory +- (match_operand:DF 1 "register_operand") ;; val out +- (match_operand:SI 2 "const_int_operand")] ;; model ++(define_insn "*memory_barrier" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))] + "" +-{ +- enum memmodel model; +- +- if (TARGET_SYNC_LIBCALL) +- { +- rtx mem = operands[0]; +- rtx val = operands[1]; +- if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val)) +- DONE; +- } +- +- if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT) +- FAIL; +- +- model = memmodel_from_int (INTVAL (operands[2])); +- operands[0] = force_reg (SImode, XEXP (operands[0], 0)); +- expand_mem_thread_fence (model); +- emit_insn (gen_atomic_storedf_1 (operands[0], operands[1])); +- if (is_mm_seq_cst (model)) +- expand_mem_thread_fence (model); +- DONE; +-}) +- +-(define_insn "atomic_storedf_1" +- [(set (mem:DF (match_operand:SI 0 "register_operand" "r,r")) +- (match_operand:DF 1 "register_operand" "f,r")) +- (clobber (match_scratch:DF 2 "=X,f"))] +- "!TARGET_64BIT && !TARGET_DISABLE_FPREGS +- && !TARGET_SOFT_FLOAT && !TARGET_SYNC_LIBCALL" +- "@ +- {fstds|fstd} %1,0(%0) +- {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)" +- [(set_attr "type" "move,move") +- (set_attr "length" "4,16")]) ++ "sync" ++ [(set_attr "type" "binary") ++ (set_attr "length" "4")]) +Index: gcc/config/pa/pa.c +=================================================================== +--- a/src/gcc/config/pa/pa.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/pa/pa.c (.../branches/gcc-7-branch) +@@ -1725,9 +1725,7 @@ + } + else + emit_move_insn (scratch_reg, XEXP (op1, 0)); +- emit_insn (gen_rtx_SET (operand0, +- replace_equiv_address (op1, scratch_reg))); +- return 1; ++ op1 = replace_equiv_address (op1, scratch_reg); + } + } + else if ((!INT14_OK_STRICT && symbolic_memory_operand (op1, VOIDmode)) +@@ -1737,10 +1735,10 @@ + /* Load memory address into SCRATCH_REG. */ + scratch_reg = force_mode (word_mode, scratch_reg); + emit_move_insn (scratch_reg, XEXP (op1, 0)); +- emit_insn (gen_rtx_SET (operand0, +- replace_equiv_address (op1, scratch_reg))); +- return 1; ++ op1 = replace_equiv_address (op1, scratch_reg); + } ++ emit_insn (gen_rtx_SET (operand0, op1)); ++ return 1; + } + else if (scratch_reg + && FP_REG_P (operand1) +@@ -1778,9 +1776,7 @@ + } + else + emit_move_insn (scratch_reg, XEXP (op0, 0)); +- emit_insn (gen_rtx_SET (replace_equiv_address (op0, scratch_reg), +- operand1)); +- return 1; ++ op0 = replace_equiv_address (op0, scratch_reg); + } + } + else if ((!INT14_OK_STRICT && symbolic_memory_operand (op0, VOIDmode)) +@@ -1790,10 +1786,10 @@ + /* Load memory address into SCRATCH_REG. */ + scratch_reg = force_mode (word_mode, scratch_reg); + emit_move_insn (scratch_reg, XEXP (op0, 0)); +- emit_insn (gen_rtx_SET (replace_equiv_address (op0, scratch_reg), +- operand1)); +- return 1; ++ op0 = replace_equiv_address (op0, scratch_reg); + } ++ emit_insn (gen_rtx_SET (op0, operand1)); ++ return 1; + } + /* Handle secondary reloads for loads of FP registers from constant + expressions by forcing the constant into memory. For the most part, +@@ -4562,13 +4558,17 @@ + lcla2 and load_offset_label_address insn patterns. */ + rtx reg = gen_reg_rtx (SImode); + rtx_code_label *label_rtx = gen_label_rtx (); +- rtx mcount = gen_rtx_MEM (Pmode, gen_rtx_SYMBOL_REF (Pmode, "_mcount")); + int reg_parm_stack_space = REG_PARM_STACK_SPACE (NULL_TREE); +- rtx arg_bytes, begin_label_rtx; ++ rtx arg_bytes, begin_label_rtx, mcount, sym; + rtx_insn *call_insn; + char begin_label_name[16]; + bool use_mcount_pcrel_call; + ++ /* Set up call destination. */ ++ sym = gen_rtx_SYMBOL_REF (Pmode, "_mcount"); ++ pa_encode_label (sym); ++ mcount = gen_rtx_MEM (Pmode, sym); ++ + /* If we can reach _mcount with a pc-relative call, we can optimize + loading the address of the current function. This requires linker + long branch stub support. */ +@@ -10645,6 +10645,8 @@ + { + int idx, vlen = XVECLEN (body, 0); + ++ if (!TARGET_SOM) ++ fputs ("\t.align 4\n", asm_out_file); + targetm.asm_out.internal_label (asm_out_file, "L", CODE_LABEL_NUMBER (lab)); + if (TARGET_GAS) + fputs ("\t.begin_brtab\n", asm_out_file); +Index: gcc/config/pa/pa.h +=================================================================== +--- a/src/gcc/config/pa/pa.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/pa/pa.h (.../branches/gcc-7-branch) +@@ -1153,9 +1153,19 @@ + PREFIX is the class of label and NUM is the number within the class. + This is suitable for output with `assemble_name'. */ + +-#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \ +- sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM)) ++#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \ ++ do \ ++ { \ ++ char *__p; \ ++ (LABEL)[0] = '*'; \ ++ (LABEL)[1] = (PREFIX)[0]; \ ++ (LABEL)[2] = '$'; \ ++ __p = stpcpy (&(LABEL)[3], &(PREFIX)[1]); \ ++ sprint_ul (__p, (unsigned long) (NUM)); \ ++ } \ ++ while (0) + ++ + /* Output the definition of a compiler-generated label named NAME. */ + + #define ASM_OUTPUT_INTERNAL_LABEL(FILE,NAME) \ +@@ -1172,28 +1182,30 @@ + #define ASM_OUTPUT_ASCII(FILE, P, SIZE) \ + pa_output_ascii ((FILE), (P), (SIZE)) + +-/* Jump tables are always placed in the text section. Technically, it +- is possible to put them in the readonly data section. This has the +- benefit of getting the table out of .text and reducing branch lengths +- as a result. ++/* Jump tables are always placed in the text section. We have to do ++ this for the HP-UX SOM target as we can't switch sections in the ++ middle of a function. + +- The downside is that an additional insn (addil) is needed to access ++ On ELF targets, it is possible to put them in the readonly-data section. ++ This would get the table out of .text and reduce branch lengths. ++ ++ A downside is that an additional insn (addil) is needed to access + the table when generating PIC code. The address difference table +- also has to use 32-bit pc-relative relocations. Currently, GAS does +- not support these relocations, although it is easily modified to do +- this operation. ++ also has to use 32-bit pc-relative relocations. + + The table entries need to look like "$L1+(.+8-$L0)-$PIC_pcrel$0" + when using ELF GAS. A simple difference can be used when using +- SOM GAS or the HP assembler. The final downside is GDB complains +- about the nesting of the label for the table when debugging. */ ++ the HP assembler. + ++ The final downside is GDB complains about the nesting of the label ++ for the table. */ ++ + #define JUMP_TABLES_IN_TEXT_SECTION 1 + + /* This is how to output an element of a case-vector that is absolute. */ + + #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ +- fprintf (FILE, "\t.word L$%04d\n", VALUE) ++ fprintf (FILE, "\t.word L$%d\n", VALUE) + + /* This is how to output an element of a case-vector that is relative. + Since we always place jump tables in the text section, the difference +@@ -1200,7 +1212,7 @@ + is absolute and requires no relocation. */ + + #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \ +- fprintf (FILE, "\t.word L$%04d-L$%04d\n", VALUE, REL) ++ fprintf (FILE, "\t.word L$%d-L$%d\n", VALUE, REL) + + /* This is how to output an absolute case-vector. */ + +Index: gcc/config/pa/pa32-linux.h +=================================================================== +--- a/src/gcc/config/pa/pa32-linux.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/pa/pa32-linux.h (.../branches/gcc-7-branch) +@@ -62,3 +62,12 @@ + + #undef WCHAR_TYPE_SIZE + #define WCHAR_TYPE_SIZE BITS_PER_WORD ++ ++/* Place jump tables in the text section except when generating non-PIC ++ code. When generating non-PIC code, the relocations needed to load the ++ address of the jump table result in a text label in the final executable ++ if the jump table is placed in the text section. This breaks the unwind ++ data for the function. Thus, the jump table needs to be placed in ++ rodata when generating non-PIC code. */ ++#undef JUMP_TABLES_IN_TEXT_SECTION ++#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic) +Index: gcc/config/msp430/msp430.c +=================================================================== +--- a/src/gcc/config/msp430/msp430.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/config/msp430/msp430.c (.../branches/gcc-7-branch) +@@ -905,6 +905,8 @@ + { + if (mode == PSImode && msp430x) + return 1; ++ if (mode == CPSImode && msp430x) ++ return 2; + return ((GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) + / UNITS_PER_WORD); + } +@@ -927,6 +929,8 @@ + { + if (mode == PSImode) + return 2; ++ if (mode == CPSImode) ++ return 4; + return msp430_hard_regno_nregs (regno, mode); + } + +Index: gcc/gimple-ssa-backprop.c +=================================================================== +--- a/src/gcc/gimple-ssa-backprop.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/gimple-ssa-backprop.c (.../branches/gcc-7-branch) +@@ -260,6 +260,11 @@ + post-order walk. */ + auto_sbitmap m_visited_blocks; + ++ /* A bitmap of phis that we have finished processing in the initial ++ post-order walk, excluding those from blocks mentioned in ++ M_VISITED_BLOCKS. */ ++ auto_bitmap m_visited_phis; ++ + /* A worklist of SSA names whose definitions need to be reconsidered. */ + auto_vec m_worklist; + +@@ -500,8 +505,11 @@ + { + if (is_gimple_debug (stmt)) + continue; +- if (is_a (stmt) +- && !bitmap_bit_p (m_visited_blocks, gimple_bb (stmt)->index)) ++ gphi *phi = dyn_cast (stmt); ++ if (phi ++ && !bitmap_bit_p (m_visited_blocks, gimple_bb (phi)->index) ++ && !bitmap_bit_p (m_visited_phis, ++ SSA_NAME_VERSION (gimple_phi_result (phi)))) + { + /* Skip unprocessed phis. */ + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -509,7 +517,7 @@ + fprintf (dump_file, "[BACKEDGE] "); + print_generic_expr (dump_file, var, 0); + fprintf (dump_file, " in "); +- print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM); ++ print_gimple_stmt (dump_file, phi, 0, TDF_SLIM); + } + } + else +@@ -633,7 +641,12 @@ + } + for (gphi_iterator gpi = gsi_start_phis (bb); !gsi_end_p (gpi); + gsi_next (&gpi)) +- process_var (gimple_phi_result (gpi.phi ())); ++ { ++ tree result = gimple_phi_result (gpi.phi ()); ++ process_var (result); ++ bitmap_set_bit (m_visited_phis, SSA_NAME_VERSION (result)); ++ } ++ bitmap_clear (m_visited_phis); + } + + /* Delete the definition of VAR, which has no uses. */ +Index: gcc/dce.c +=================================================================== +--- a/src/gcc/dce.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/dce.c (.../branches/gcc-7-branch) +@@ -131,6 +131,12 @@ + && REGNO (pic_offset_table_rtx) >= FIRST_PSEUDO_REGISTER) + return false; + ++ /* Callee-save restores are needed. */ ++ if (RTX_FRAME_RELATED_P (insn) ++ && crtl->shrink_wrapped_separate ++ && find_reg_note (insn, REG_CFA_RESTORE, NULL)) ++ return false; ++ + body = PATTERN (insn); + switch (GET_CODE (body)) + { +@@ -560,9 +566,19 @@ + FOR_BB_INSNS_REVERSE_SAFE (bb, insn, next) + if (NONDEBUG_INSN_P (insn)) + { ++ rtx turn_into_use = NULL_RTX; ++ + /* Always delete no-op moves. */ + if (noop_move_p (insn)) +- ; ++ { ++ if (RTX_FRAME_RELATED_P (insn)) ++ turn_into_use ++ = find_reg_note (insn, REG_CFA_RESTORE, NULL); ++ if (turn_into_use && REG_P (XEXP (turn_into_use, 0))) ++ turn_into_use = XEXP (turn_into_use, 0); ++ else ++ turn_into_use = NULL_RTX; ++ } + + /* Otherwise rely only on the DCE algorithm. */ + else if (marked_insn_p (insn)) +@@ -589,15 +605,6 @@ + if (!dbg_cnt (dce)) + continue; + +- if (crtl->shrink_wrapped_separate +- && find_reg_note (insn, REG_CFA_RESTORE, NULL)) +- { +- if (dump_file) +- fprintf (dump_file, "DCE: NOT deleting insn %d, it's a " +- "callee-save restore\n", INSN_UID (insn)); +- continue; +- } +- + if (dump_file) + fprintf (dump_file, "DCE: Deleting insn %d\n", INSN_UID (insn)); + +@@ -611,8 +618,19 @@ + if (CALL_P (insn)) + must_clean = true; + +- /* Now delete the insn. */ +- delete_insn_and_edges (insn); ++ if (turn_into_use) ++ { ++ /* Don't remove frame related noop moves if they cary ++ REG_CFA_RESTORE note, while we don't need to emit any code, ++ we need it to emit the CFI restore note. */ ++ PATTERN (insn) ++ = gen_rtx_USE (GET_MODE (turn_into_use), turn_into_use); ++ INSN_CODE (insn) = -1; ++ df_insn_rescan (insn); ++ } ++ else ++ /* Now delete the insn. */ ++ delete_insn_and_edges (insn); + } + + /* Deleted a pure or const call. */ +Index: gcc/params.def +=================================================================== +--- a/src/gcc/params.def (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/params.def (.../branches/gcc-7-branch) +@@ -344,11 +344,11 @@ + "The maximum number of unswitchings in a single loop.", + 3, 0, 0) + +-/* The maximum number of insns in loop header duplicated by he copy loop ++/* The maximum number of insns in loop header duplicated by the copy loop + headers pass. */ + DEFPARAM(PARAM_MAX_LOOP_HEADER_INSNS, + "max-loop-header-insns", +- "The maximum number of insns in loop header duplicated by he copy loop headers pass.", ++ "The maximum number of insns in loop header duplicated by the copy loop headers pass.", + 20, 0, 0) + + /* The maximum number of iterations of a loop the brute force algorithm +Index: gcc/collect2.c +=================================================================== +--- a/src/gcc/collect2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/collect2.c (.../branches/gcc-7-branch) +@@ -1,6 +1,6 @@ + /* Collect static initialization info into data structures that can be + traversed by C++ initialization and finalization routines. +- Copyright (C) 1992-2017 Free Software Foundation, Inc. ++ Copyright (C) 1992-2018 Free Software Foundation, Inc. + Contributed by Chris Smith (csmith@convex.com). + Heavily modified by Michael Meissner (meissner@cygnus.com), + Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com). +@@ -201,6 +201,7 @@ + bool helpflag; /* true if --help */ + + static int shared_obj; /* true if -shared */ ++static int static_obj; /* true if -static */ + + static const char *c_file; /* .c for constructor/destructor list. */ + static const char *o_file; /* .o for constructor/destructor list. */ +@@ -255,6 +256,7 @@ + #ifdef COLLECT_EXPORT_LIST + /* Lists to keep libraries to be scanned for global constructors/destructors. */ + static struct head libs; /* list of libraries */ ++static struct head static_libs; /* list of statically linked libraries */ + static struct path_prefix cmdline_lib_dirs; /* directories specified with -L */ + static struct path_prefix libpath_lib_dirs; /* directories in LIBPATH */ + static struct path_prefix *libpaths[3] = {&cmdline_lib_dirs, +@@ -320,9 +322,7 @@ + static void scan_libraries (const char *); + #endif + #ifdef COLLECT_EXPORT_LIST +-#if 0 + static int is_in_list (const char *, struct id *); +-#endif + static void write_aix_file (FILE *, struct id *); + static char *resolve_lib_name (const char *); + #endif +@@ -911,6 +911,9 @@ + int first_file; + int num_c_args; + char **old_argv; ++#ifdef COLLECT_EXPORT_LIST ++ bool is_static = false; ++#endif + int i; + + for (i = 0; i < USE_LD_MAX; i++) +@@ -1241,6 +1244,8 @@ + *c_ptr++ = xstrdup (q); + if (strcmp (q, "-shared") == 0) + shared_obj = 1; ++ if (strcmp (q, "-static") == 0) ++ static_obj = 1; + if (*q == '-' && q[1] == 'B') + { + *c_ptr++ = xstrdup (q); +@@ -1269,6 +1274,9 @@ + /* Parse arguments. Remember output file spec, pass the rest to ld. */ + /* After the first file, put in the c++ rt0. */ + ++#ifdef COLLECT_EXPORT_LIST ++ is_static = static_obj; ++#endif + first_file = 1; + while ((arg = *++argv) != (char *) 0) + { +@@ -1374,6 +1382,18 @@ + #endif + break; + ++#ifdef COLLECT_EXPORT_LIST ++ case 'b': ++ if (!strcmp (arg, "-bstatic")) ++ { ++ is_static = true; ++ } ++ else if (!strcmp (arg, "-bdynamic") || !strcmp (arg, "-bshared")) ++ { ++ is_static = false; ++ } ++ break; ++#endif + case 'l': + if (first_file) + { +@@ -1390,6 +1410,8 @@ + + /* Saving a full library name. */ + add_to_list (&libs, s); ++ if (is_static) ++ add_to_list (&static_libs, s); + } + #endif + break; +@@ -1490,6 +1512,8 @@ + { + /* Saving a full library name. */ + add_to_list (&libs, arg); ++ if (is_static) ++ add_to_list (&static_libs, arg); + } + #endif + } +@@ -1501,6 +1525,8 @@ + { + fprintf (stderr, "List of libraries:\n"); + dump_list (stderr, "\t", libs.first); ++ fprintf (stderr, "List of statically linked libraries:\n"); ++ dump_list (stderr, "\t", static_libs.first); + } + + /* The AIX linker will discard static constructors in object files if +@@ -1525,9 +1551,11 @@ + this_filter &= ~SCAN_DWEH; + #endif + ++ /* Scan object files. */ + while (export_object_lst < object) + scan_prog_file (*export_object_lst++, PASS_OBJ, this_filter); + ++ /* Scan libraries. */ + for (; list; list = list->next) + scan_prog_file (list->name, PASS_FIRST, this_filter); + +@@ -1975,7 +2003,6 @@ + + #ifdef COLLECT_EXPORT_LIST + /* This function is really used only on AIX, but may be useful. */ +-#if 0 + static int + is_in_list (const char *prefix, struct id *list) + { +@@ -1986,7 +2013,6 @@ + } + return 0; + } +-#endif + #endif /* COLLECT_EXPORT_LIST */ + + /* Added for debugging purpose. */ +@@ -2815,7 +2841,12 @@ + case SYM_AIXI: + if (! (filter & SCAN_CTOR)) + break; +- if (is_shared && !aixlazy_flag) ++ if (is_shared && !aixlazy_flag ++#ifdef COLLECT_EXPORT_LIST ++ && ! static_obj ++ && ! is_in_list (prog_name, static_libs.first) ++#endif ++ ) + add_to_list (&constructors, name); + break; + +Index: gcc/ipa-icf.c +=================================================================== +--- a/src/gcc/ipa-icf.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-icf.c (.../branches/gcc-7-branch) +@@ -2132,23 +2132,6 @@ + return m_hash; + } + +-/* Set all points-to UIDs of aliases pointing to node N as UID. */ +- +-static void +-set_alias_uids (symtab_node *n, int uid) +-{ +- ipa_ref *ref; +- FOR_EACH_ALIAS (n, ref) +- { +- if (dump_file) +- fprintf (dump_file, " Setting points-to UID of [%s] as %d\n", +- xstrdup_for_dump (ref->referring->asm_name ()), uid); +- +- SET_DECL_PT_UID (ref->referring->decl, uid); +- set_alias_uids (ref->referring, uid); +- } +-} +- + /* Merges instance with an ALIAS_ITEM, where alias, thunk or redirection can + be applied. */ + +@@ -2275,7 +2258,6 @@ + if (dump_file) + fprintf (dump_file, "Unified; Variable alias has been created.\n"); + +- set_alias_uids (original, DECL_UID (original->decl)); + return true; + } + } +@@ -2295,7 +2277,7 @@ + + sem_item_optimizer::sem_item_optimizer () + : worklist (0), m_classes (0), m_classes_count (0), m_cgraph_node_hooks (NULL), +- m_varpool_node_hooks (NULL) ++ m_varpool_node_hooks (NULL), m_merged_variables () + { + m_items.create (0); + bitmap_obstack_initialize (&m_bmstack); +@@ -2320,6 +2302,7 @@ + m_items.release (); + + bitmap_obstack_release (&m_bmstack); ++ m_merged_variables.release (); + } + + /* Write IPA ICF summary for symbols. */ +@@ -3571,13 +3554,103 @@ + } + + if (dbg_cnt (merged_ipa_icf)) +- merged_p |= source->merge (alias); ++ { ++ bool merged = source->merge (alias); ++ merged_p |= merged; ++ ++ if (merged && alias->type == VAR) ++ { ++ symtab_pair p = symtab_pair (source->node, alias->node); ++ m_merged_variables.safe_push (p); ++ } ++ } + } + } + ++ if (!m_merged_variables.is_empty ()) ++ fixup_points_to_sets (); ++ + return merged_p; + } + ++/* Fixup points to set PT. */ ++ ++void ++sem_item_optimizer::fixup_pt_set (struct pt_solution *pt) ++{ ++ if (pt->vars == NULL) ++ return; ++ ++ unsigned i; ++ symtab_pair *item; ++ FOR_EACH_VEC_ELT (m_merged_variables, i, item) ++ if (bitmap_bit_p (pt->vars, DECL_UID (item->second->decl))) ++ bitmap_set_bit (pt->vars, DECL_UID (item->first->decl)); ++} ++ ++/* Set all points-to UIDs of aliases pointing to node N as UID. */ ++ ++static void ++set_alias_uids (symtab_node *n, int uid) ++{ ++ ipa_ref *ref; ++ FOR_EACH_ALIAS (n, ref) ++ { ++ if (dump_file) ++ fprintf (dump_file, " Setting points-to UID of [%s] as %d\n", ++ xstrdup_for_dump (ref->referring->asm_name ()), uid); ++ ++ SET_DECL_PT_UID (ref->referring->decl, uid); ++ set_alias_uids (ref->referring, uid); ++ } ++} ++ ++/* Fixup points to analysis info. */ ++ ++void ++sem_item_optimizer::fixup_points_to_sets (void) ++{ ++ /* TODO: remove in GCC 9 and trigger PTA re-creation after IPA passes. */ ++ cgraph_node *cnode; ++ ++ FOR_EACH_DEFINED_FUNCTION (cnode) ++ { ++ tree name; ++ unsigned i; ++ function *fn = DECL_STRUCT_FUNCTION (cnode->decl); ++ if (!gimple_in_ssa_p (fn)) ++ continue; ++ ++ FOR_EACH_SSA_NAME (i, name, fn) ++ if (POINTER_TYPE_P (TREE_TYPE (name)) ++ && SSA_NAME_PTR_INFO (name)) ++ fixup_pt_set (&SSA_NAME_PTR_INFO (name)->pt); ++ fixup_pt_set (&fn->gimple_df->escaped); ++ ++ /* The above get's us to 99% I guess, at least catching the ++ address compares. Below also gets us aliasing correct ++ but as said we're giving leeway to the situation with ++ readonly vars anyway, so ... */ ++ basic_block bb; ++ FOR_EACH_BB_FN (bb, fn) ++ for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi); ++ gsi_next (&gsi)) ++ { ++ gcall *call = dyn_cast (gsi_stmt (gsi)); ++ if (call) ++ { ++ fixup_pt_set (gimple_call_use_set (call)); ++ fixup_pt_set (gimple_call_clobber_set (call)); ++ } ++ } ++ } ++ ++ unsigned i; ++ symtab_pair *item; ++ FOR_EACH_VEC_ELT (m_merged_variables, i, item) ++ set_alias_uids (item->first, DECL_UID (item->first->decl)); ++} ++ + /* Dump function prints all class members to a FILE with an INDENT. */ + + void +Index: gcc/ipa-icf.h +=================================================================== +--- a/src/gcc/ipa-icf.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-icf.h (.../branches/gcc-7-branch) +@@ -141,6 +141,8 @@ + unsigned int index; + }; + ++typedef std::pair symtab_pair; ++ + /* Semantic item is a base class that encapsulates all shared functionality + for both semantic function and variable items. */ + class sem_item +@@ -563,6 +565,12 @@ + processed. */ + bool merge_classes (unsigned int prev_class_count); + ++ /* Fixup points to analysis info. */ ++ void fixup_points_to_sets (void); ++ ++ /* Fixup points to set PT. */ ++ void fixup_pt_set (struct pt_solution *pt); ++ + /* Adds a newly created congruence class CLS to worklist. */ + void worklist_push (congruence_class *cls); + +@@ -632,6 +640,10 @@ + + /* Bitmap stack. */ + bitmap_obstack m_bmstack; ++ ++ /* Vector of merged variables. Needed for fixup of points-to-analysis ++ info. */ ++ vec m_merged_variables; + }; // class sem_item_optimizer + + } // ipa_icf namespace +Index: gcc/regcprop.c +=================================================================== +--- a/src/gcc/regcprop.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/regcprop.c (.../branches/gcc-7-branch) +@@ -854,6 +854,12 @@ + && reg_overlap_mentioned_p (XEXP (link, 0), SET_SRC (set))) + set = NULL; + } ++ ++ /* We need to keep CFI info correct, and the same on all paths, ++ so we cannot normally replace the registers REG_CFA_REGISTER ++ refers to. Bail. */ ++ if (REG_NOTE_KIND (link) == REG_CFA_REGISTER) ++ goto did_replacement; + } + + /* Special-case plain move instructions, since we may well +Index: libgo/configure +=================================================================== +--- a/src/libgo/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libgo/configure (.../branches/gcc-7-branch) +@@ -14784,39 +14784,6 @@ + done + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether can be used" >&5 +-$as_echo_n "checking whether can be used... " >&6; } +-if test "${libgo_cv_c_ustat_h+set}" = set; then : +- $as_echo_n "(cached) " >&6 +-else +- CFLAGS_hold=$CFLAGS +-CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE $OSCFLAGS" +-cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +-#include +-#ifdef HAVE_LINUX_FILTER_H +-#include +-#endif +-#include +- +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- libgo_cv_c_ustat_h=yes +-else +- libgo_cv_c_ustat_h=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-CFLAGS=$CFLAGS_hold +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgo_cv_c_ustat_h" >&5 +-$as_echo "$libgo_cv_c_ustat_h" >&6; } +-if test $libgo_cv_c_ustat_h = yes; then +- +-$as_echo "#define HAVE_USTAT_H 1" >>confdefs.h +- +-fi +- + if test "$ac_cv_header_sys_mman_h" = yes; then + HAVE_SYS_MMAN_H_TRUE= + HAVE_SYS_MMAN_H_FALSE='#' +Index: libgo/mksysinfo.sh +=================================================================== +--- a/src/libgo/mksysinfo.sh (.../tags/gcc_7_3_0_release) ++++ b/src/libgo/mksysinfo.sh (.../branches/gcc-7-branch) +@@ -1088,7 +1088,20 @@ + grep '^const _RLIMIT_' gen-sysinfo.go | + sed -e 's/^\(const \)_\(RLIMIT_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} + grep '^const _RLIM_' gen-sysinfo.go | ++ grep -v '^const _RLIM_INFINITY ' | + sed -e 's/^\(const \)_\(RLIM_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} ++rliminf="" ++if test "${rlimit}" = "_rlimit64" && grep '^const _RLIM64_INFINITY ' gen-sysinfo.go > /dev/null 2>&1; then ++ rliminf=`grep '^const _RLIM64_INFINITY ' gen-sysinfo.go | sed -e 's/.* //'` ++else ++ rliminf=`grep '^const _RLIM_INFINITY ' gen-sysinfo.go | sed -e 's/.* //'` ++fi ++# For compatibility with the gc syscall package, treat 0xffffffffffffffff as -1. ++if test "$rliminf" = "0xffffffffffffffff"; then ++ echo "const RLIM_INFINITY = -1" >> ${OUT} ++elif test -n "$rliminf"; then ++ echo "const RLIM_INFINITY = $rliminf" >> ${OUT} ++fi + + # The sysinfo struct. + grep '^type _sysinfo ' gen-sysinfo.go | \ +@@ -1107,20 +1120,6 @@ + -e 's/mem_unit/Unit/' \ + >> ${OUT} + +-# The ustat struct. +-grep '^type _ustat ' gen-sysinfo.go | \ +- sed -e 's/_ustat/Ustat_t/' \ +- -e 's/f_tfree/Tfree/' \ +- -e 's/f_tinode/Tinoe/' \ +- -e 's/f_fname/Fname/' \ +- -e 's/f_fpack/Fpack/' \ +- >> ${OUT} +-# Force it to be defined, as on some older GNU/Linux systems the +-# header file fails when using with . +-if ! grep 'type _ustat ' gen-sysinfo.go >/dev/null 2>&1; then +- echo 'type Ustat_t struct { Tfree int32; Tinoe uint64; Fname [5+1]int8; Fpack [5+1]int8; }' >> ${OUT} +-fi +- + # The utimbuf struct. + grep '^type _utimbuf ' gen-sysinfo.go | \ + sed -e 's/_utimbuf/Utimbuf/' \ +Index: libgo/config.h.in +=================================================================== +--- a/src/libgo/config.h.in (.../tags/gcc_7_3_0_release) ++++ b/src/libgo/config.h.in (.../branches/gcc-7-branch) +@@ -340,9 +340,6 @@ + /* Define to 1 if you have the `unshare' function. */ + #undef HAVE_UNSHARE + +-/* Define to 1 if you have the header file and it works. */ +-#undef HAVE_USTAT_H +- + /* Define to 1 if you have the `utimensat' function. */ + #undef HAVE_UTIMENSAT + +Index: libgo/configure.ac +=================================================================== +--- a/src/libgo/configure.ac (.../tags/gcc_7_3_0_release) ++++ b/src/libgo/configure.ac (.../branches/gcc-7-branch) +@@ -572,24 +572,6 @@ + #endif + ]) + +-AC_CACHE_CHECK([whether can be used], +-[libgo_cv_c_ustat_h], +-[CFLAGS_hold=$CFLAGS +-CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE $OSCFLAGS" +-AC_COMPILE_IFELSE( +-[AC_LANG_SOURCE([ +-#include +-#ifdef HAVE_LINUX_FILTER_H +-#include +-#endif +-#include +-])], [libgo_cv_c_ustat_h=yes], [libgo_cv_c_ustat_h=no]) +-CFLAGS=$CFLAGS_hold]) +-if test $libgo_cv_c_ustat_h = yes; then +- AC_DEFINE(HAVE_USTAT_H, 1, +- [Define to 1 if you have the header file and it works.]) +-fi +- + AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes) + + AC_CHECK_FUNCS(strerror_r strsignal wait4 mincore setenv unsetenv dl_iterate_phdr) +Index: libgo/go/os/wait_waitid.go +=================================================================== +--- a/src/libgo/go/os/wait_waitid.go (.../tags/gcc_7_3_0_release) ++++ b/src/libgo/go/os/wait_waitid.go (.../branches/gcc-7-branch) +@@ -25,9 +25,12 @@ + // We don't care about the values it returns. + var siginfo [16]uint64 + psig := &siginfo[0] +- _, _, e := syscall.Syscall6(syscall.SYS_WAITID, _P_PID, uintptr(p.Pid), uintptr(unsafe.Pointer(psig)), syscall.WEXITED|syscall.WNOWAIT, 0, 0) ++ r, _, e := syscall.Syscall6(syscall.SYS_WAITID, _P_PID, uintptr(p.Pid), uintptr(unsafe.Pointer(psig)), syscall.WEXITED|syscall.WNOWAIT, 0, 0) + runtime.KeepAlive(p) +- if e != 0 { ++ // Check r as well as e because syscall.Syscall6 currently ++ // just returns errno, and the SIGCHLD signal handler may ++ // change errno. See https://gcc.gnu.org/PR86331. ++ if r != 0 && e != 0 { + // waitid has been available since Linux 2.6.9, but + // reportedly is not available in Ubuntu on Windows. + // See issue 16610. +Index: libgo/go/syscall/libcall_linux_ustat.go +=================================================================== +--- a/src/libgo/go/syscall/libcall_linux_ustat.go (.../tags/gcc_7_3_0_release) ++++ b/src/libgo/go/syscall/libcall_linux_ustat.go (.../branches/gcc-7-branch) +@@ -1,12 +0,0 @@ +-// 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. +- +-// GNU/Linux library ustat call. +-// This is not supported on some kernels, such as arm64. +-// +build !arm64 +- +-package syscall +- +-//sys Ustat(dev int, ubuf *Ustat_t) (err error) +-//ustat(dev _dev_t, ubuf *Ustat_t) _C_int +Index: libgo/sysinfo.c +=================================================================== +--- a/src/libgo/sysinfo.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgo/sysinfo.c (.../branches/gcc-7-branch) +@@ -135,9 +135,6 @@ + #if defined(HAVE_SYS_SYSINFO_H) + #include + #endif +-#if defined(HAVE_USTAT_H) +-#include +-#endif + #if defined(HAVE_UTIME_H) + #include + #endif +Index: libobjc/configure +=================================================================== +--- a/src/libobjc/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libobjc/configure (.../branches/gcc-7-branch) +@@ -11708,7 +11708,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libobjc/ChangeLog +=================================================================== +--- a/src/libobjc/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libobjc/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libvtv/configure +=================================================================== +--- a/src/libvtv/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libvtv/configure (.../branches/gcc-7-branch) +@@ -15516,7 +15516,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libvtv/ChangeLog +=================================================================== +--- a/src/libvtv/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libvtv/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libgfortran/configure +=================================================================== +--- a/src/libgfortran/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libgfortran/configure (.../branches/gcc-7-branch) +@@ -26370,7 +26370,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libgfortran/ChangeLog +=================================================================== +--- a/src/libgfortran/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libgfortran/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,45 @@ ++2018-10-13 Gerald Pfeifer ++ ++ Backport from trunk ++ * io/close.c [!HAVE_UNLINK_OPEN_FILE]: Include . ++ ++2018-09-18 Kyrylo Tkachov ++ ++ Backport from trunk ++ 2018-09-14 Kyrylo Tkachov ++ ++ * io/unix.c (fallback_access): Avoid calling close on ++ uninitialized file descriptor. ++ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ ++2018-06-09 Jerry DeLisle ++ ++ Backport from trunk. ++ PR libgfortran/86070 ++ * io/write_float.def (build_float_string): Initialize *len. ++ ++2018-06-01 Jerry DeLisle ++ ++ Backport from trunk. ++ PR libgfortran/85840 ++ * io/write.c (write_float_0, write_real, write_real_g0, ++ write_complex): Use separate local variables for the float ++ string length. ++ ++2018-02-18 Jerry DeLisle ++ ++ Backport from trunk ++ PR libgfortran/84412 ++ * io/transfer.c (finalize_transfer): After completng an internal unit ++ I/O operation, clear internal_unit_kind. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libgfortran/io/close.c +=================================================================== +--- a/src/libgfortran/io/close.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgfortran/io/close.c (.../branches/gcc-7-branch) +@@ -25,6 +25,9 @@ + #include "io.h" + #include "unix.h" + #include ++#if !HAVE_UNLINK_OPEN_FILE ++#include ++#endif + + typedef enum + { CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED } +Index: libgfortran/io/unix.c +=================================================================== +--- a/src/libgfortran/io/unix.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgfortran/io/unix.c (.../branches/gcc-7-branch) +@@ -149,13 +149,21 @@ + { + int fd; + +- if ((mode & R_OK) && (fd = open (path, O_RDONLY)) < 0) +- return -1; +- close (fd); ++ if (mode & R_OK) ++ { ++ if ((fd = open (path, O_RDONLY)) < 0) ++ return -1; ++ else ++ close (fd); ++ } + +- if ((mode & W_OK) && (fd = open (path, O_WRONLY)) < 0) +- return -1; +- close (fd); ++ if (mode & W_OK) ++ { ++ if ((fd = open (path, O_WRONLY)) < 0) ++ return -1; ++ else ++ close (fd); ++ } + + if (mode == F_OK) + { +Index: libgfortran/io/transfer.c +=================================================================== +--- a/src/libgfortran/io/transfer.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgfortran/io/transfer.c (.../branches/gcc-7-branch) +@@ -3987,6 +3987,10 @@ + + if (dtp->u.p.unit_is_internal) + { ++ /* The unit structure may be reused later so clear the ++ internal unit kind. */ ++ dtp->u.p.current_unit->internal_unit_kind = 0; ++ + fbuf_destroy (dtp->u.p.current_unit); + if (dtp->u.p.current_unit + && (dtp->u.p.current_unit->child_dtio == 0) +Index: libgfortran/io/write.c +=================================================================== +--- a/src/libgfortran/io/write.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgfortran/io/write.c (.../branches/gcc-7-branch) +@@ -1483,7 +1483,7 @@ + + /* Floating point helper functions. */ + +-#define BUF_STACK_SZ 256 ++#define BUF_STACK_SZ 384 + + static int + get_precision (st_parameter_dt *dtp, const fnode *f, const char *source, int kind) +@@ -1584,7 +1584,7 @@ + char buf_stack[BUF_STACK_SZ]; + char str_buf[BUF_STACK_SZ]; + char *buffer, *result; +- size_t buf_size, res_len; ++ size_t buf_size, res_len, flt_str_len; + + /* Precision for snprintf call. */ + int precision = get_precision (dtp, f, source, kind); +@@ -1595,8 +1595,8 @@ + buffer = select_buffer (dtp, f, precision, buf_stack, &buf_size, kind); + + get_float_string (dtp, f, source , kind, 0, buffer, +- precision, buf_size, result, &res_len); +- write_float_string (dtp, result, res_len); ++ precision, buf_size, result, &flt_str_len); ++ write_float_string (dtp, result, flt_str_len); + + if (buf_size > BUF_STACK_SZ) + free (buffer); +@@ -1699,7 +1699,7 @@ + char buf_stack[BUF_STACK_SZ]; + char str_buf[BUF_STACK_SZ]; + char *buffer, *result; +- size_t buf_size, res_len; ++ size_t buf_size, res_len, flt_str_len; + int orig_scale = dtp->u.p.scale_factor; + dtp->u.p.scale_factor = 1; + set_fnode_default (dtp, &f, kind); +@@ -1714,8 +1714,8 @@ + buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind); + + get_float_string (dtp, &f, source , kind, 1, buffer, +- precision, buf_size, result, &res_len); +- write_float_string (dtp, result, res_len); ++ precision, buf_size, result, &flt_str_len); ++ write_float_string (dtp, result, flt_str_len); + + dtp->u.p.scale_factor = orig_scale; + if (buf_size > BUF_STACK_SZ) +@@ -1734,7 +1734,7 @@ + char buf_stack[BUF_STACK_SZ]; + char str_buf[BUF_STACK_SZ]; + char *buffer, *result; +- size_t buf_size, res_len; ++ size_t buf_size, res_len, flt_str_len; + int comp_d; + set_fnode_default (dtp, &f, kind); + +@@ -1758,8 +1758,8 @@ + buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind); + + get_float_string (dtp, &f, source , kind, comp_d, buffer, +- precision, buf_size, result, &res_len); +- write_float_string (dtp, result, res_len); ++ precision, buf_size, result, &flt_str_len); ++ write_float_string (dtp, result, flt_str_len); + + dtp->u.p.g0_no_blanks = 0; + if (buf_size > BUF_STACK_SZ) +@@ -1784,7 +1784,7 @@ + char str1_buf[BUF_STACK_SZ]; + char str2_buf[BUF_STACK_SZ]; + char *buffer, *result1, *result2; +- size_t buf_size, res_len1, res_len2; ++ size_t buf_size, res_len1, res_len2, flt_str_len1, flt_str_len2; + int width, lblanks, orig_scale = dtp->u.p.scale_factor; + + dtp->u.p.scale_factor = 1; +@@ -1807,18 +1807,18 @@ + buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind); + + get_float_string (dtp, &f, source , kind, 0, buffer, +- precision, buf_size, result1, &res_len1); ++ precision, buf_size, result1, &flt_str_len1); + get_float_string (dtp, &f, source + size / 2 , kind, 0, buffer, +- precision, buf_size, result2, &res_len2); ++ precision, buf_size, result2, &flt_str_len2); + if (!dtp->u.p.namelist_mode) + { +- lblanks = width - res_len1 - res_len2 - 3; ++ lblanks = width - flt_str_len1 - flt_str_len2 - 3; + write_x (dtp, lblanks, lblanks); + } + write_char (dtp, '('); +- write_float_string (dtp, result1, res_len1); ++ write_float_string (dtp, result1, flt_str_len1); + write_char (dtp, semi_comma); +- write_float_string (dtp, result2, res_len2); ++ write_float_string (dtp, result2, flt_str_len2); + write_char (dtp, ')'); + + dtp->u.p.scale_factor = orig_scale; +Index: libgfortran/io/write_float.def +=================================================================== +--- a/src/libgfortran/io/write_float.def (.../tags/gcc_7_3_0_release) ++++ b/src/libgfortran/io/write_float.def (.../branches/gcc-7-branch) +@@ -135,6 +135,7 @@ + w = f->u.real.w; + d = f->u.real.d; + p = dtp->u.p.scale_factor; ++ *len = 0; + + rchar = '5'; + +Index: libhsail-rt/configure +=================================================================== +--- a/src/libhsail-rt/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libhsail-rt/configure (.../branches/gcc-7-branch) +@@ -14414,7 +14414,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libhsail-rt/ChangeLog +=================================================================== +--- a/src/libhsail-rt/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libhsail-rt/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libada/configure +=================================================================== +--- a/src/libada/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libada/configure (.../branches/gcc-7-branch) +@@ -3018,7 +3018,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libada/ChangeLog +=================================================================== +--- a/src/libada/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libada/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libffi/configure +=================================================================== +--- a/src/libffi/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libffi/configure (.../branches/gcc-7-branch) +@@ -16444,7 +16444,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libffi/ChangeLog +=================================================================== +--- a/src/libffi/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libffi/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libssp/configure +=================================================================== +--- a/src/libssp/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libssp/configure (.../branches/gcc-7-branch) +@@ -11082,7 +11082,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libssp/ChangeLog +=================================================================== +--- a/src/libssp/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libssp/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libcilkrts/configure +=================================================================== +--- a/src/libcilkrts/configure (.../tags/gcc_7_3_0_release) ++++ b/src/libcilkrts/configure (.../branches/gcc-7-branch) +@@ -15413,7 +15413,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: libcilkrts/ChangeLog +=================================================================== +--- a/src/libcilkrts/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libcilkrts/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libcpp/include/cpplib.h +=================================================================== +--- a/src/libcpp/include/cpplib.h (.../tags/gcc_7_3_0_release) ++++ b/src/libcpp/include/cpplib.h (.../branches/gcc-7-branch) +@@ -702,7 +702,7 @@ + BT_COUNTER, /* `__COUNTER__' */ + BT_HAS_ATTRIBUTE, /* `__has_attribute__(x)' */ + BT_FIRST_USER, /* User defined builtin macros. */ +- BT_LAST_USER = BT_FIRST_USER + 31 ++ BT_LAST_USER = BT_FIRST_USER + 63 + }; + + #define CPP_HASHNODE(HNODE) ((cpp_hashnode *) (HNODE)) +Index: libcpp/ChangeLog +=================================================================== +--- a/src/libcpp/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libcpp/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,19 @@ ++2018-03-03 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-01-31 Jakub Jelinek ++ ++ PR preprocessor/69869 ++ * traditional.c (skip_macro_block_comment): Return bool, true if ++ the macro block comment is unterminated. ++ (copy_comment): Use return value from skip_macro_block_comment instead ++ of always false. ++ ++ 2018-01-27 Jakub Jelinek ++ ++ * include/cpplib.h (enum cpp_builtin_type): Change BT_LAST_USER from ++ BT_FIRST_USER + 31 to BT_FIRST_USER + 63. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: libcpp/traditional.c +=================================================================== +--- a/src/libcpp/traditional.c (.../tags/gcc_7_3_0_release) ++++ b/src/libcpp/traditional.c (.../branches/gcc-7-branch) +@@ -119,8 +119,11 @@ + } + + /* Skip a C-style block comment in a macro as a result of -CC. +- Buffer->cur points to the initial asterisk of the comment. */ +-static void ++ PFILE->buffer->cur points to the initial asterisk of the comment, ++ change it to point to after the '*' and '/' characters that terminate it. ++ Return true if the macro has not been termined, in that case set ++ PFILE->buffer->cur to the end of the buffer. */ ++static bool + skip_macro_block_comment (cpp_reader *pfile) + { + const uchar *cur = pfile->buffer->cur; +@@ -131,10 +134,15 @@ + + /* People like decorating comments with '*', so check for '/' + instead for efficiency. */ +- while(! (*cur++ == '/' && cur[-2] == '*') ) +- ; ++ while (! (*cur++ == '/' && cur[-2] == '*')) ++ if (cur[-1] == '\n') ++ { ++ pfile->buffer->cur = cur - 1; ++ return true; ++ } + + pfile->buffer->cur = cur; ++ return false; + } + + /* CUR points to the asterisk introducing a comment in the current +@@ -158,7 +166,7 @@ + + buffer->cur = cur; + if (pfile->context->prev) +- unterminated = false, skip_macro_block_comment (pfile); ++ unterminated = skip_macro_block_comment (pfile); + else + unterminated = _cpp_skip_block_comment (pfile); + +Index: libcpp/lex.c +=================================================================== +--- a/src/libcpp/lex.c (.../tags/gcc_7_3_0_release) ++++ b/src/libcpp/lex.c (.../branches/gcc-7-branch) +@@ -568,7 +568,7 @@ + { + vc m_nl, m_cr, m_bs, m_qm; + +- data = *((const vc *)s); ++ data = __builtin_vec_vsx_ld (0, s); + s += 16; + + m_nl = (vc) __builtin_vec_cmpeq(data, repl_nl); +Index: fixincludes/configure +=================================================================== +--- a/src/fixincludes/configure (.../tags/gcc_7_3_0_release) ++++ b/src/fixincludes/configure (.../branches/gcc-7-branch) +@@ -5401,7 +5401,7 @@ + # Check whether --with-gcc-major-version-only was given. + if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +- get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" + fi + + fi +Index: fixincludes/ChangeLog +=================================================================== +--- a/src/fixincludes/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/fixincludes/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,11 @@ ++2018-06-22 Jakub Jelinek ++ ++ Backported from mainline ++ 2018-04-18 David Malcolm ++ ++ PR jit/85384 ++ * configure: Regenerate. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. +Index: . +=================================================================== +--- a/src/. (.../tags/gcc_7_3_0_release) ++++ b/src/. (.../branches/gcc-7-branch) + +Property changes on: . +___________________________________________________________________ +Modified: svn:mergeinfo +## -0,0 +0,2 ## + Merged /trunk:r262104,262442,262744 + Merged /branches/gcc-8-branch:r262746-262747 --- gcc-7-7.3.0.orig/debian/patches/sys-auxv-header.diff +++ gcc-7-7.3.0/debian/patches/sys-auxv-header.diff @@ -0,0 +1,46 @@ +# DP: Check for the sys/auxv.h header file. + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1112,6 +1112,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 +@@ -1772,6 +1772,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 +@@ -33,6 +33,10 @@ along with GCC; see the file COPYING3. + # include + #endif + ++#ifdef HAVE_SYS_AUXV_H ++# include ++#endif ++ + #if defined (__APPLE__) || (__FreeBSD__) + # include + # include --- gcc-7-7.3.0.orig/debian/patches/t-libunwind-elf-Wl-z-defs.diff +++ gcc-7-7.3.0/debian/patches/t-libunwind-elf-Wl-z-defs.diff @@ -0,0 +1,13 @@ +# DP: strip -z,defs from linker options for internal libunwind. + +--- a/src/libgcc/config/t-libunwind-elf ++++ b/src/libgcc/config/t-libunwind-elf +@@ -31,7 +31,7 @@ + + SHLIBUNWIND_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared \ + -nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \ +- -Wl,-z,text -Wl,-z,defs -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ ++ -Wl,-z,text -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ + @multilib_flags@ $(SHLIB_OBJS) -lc && \ + rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ + if [ -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) ]; then \ --- gcc-7-7.3.0.orig/debian/patches/testsuite-glibc-warnings.diff +++ gcc-7-7.3.0/debian/patches/testsuite-glibc-warnings.diff @@ -0,0 +1,29 @@ +# 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 +Index: b/src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c ++++ b/src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-fcilkplus" } */ ++/* { dg-options "-fcilkplus -Wno-unused-result" } */ + + #include + --- gcc-7-7.3.0.orig/debian/patches/testsuite-hardening-format.diff +++ gcc-7-7.3.0/debian/patches/testsuite-hardening-format.diff @@ -0,0 +1,356 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Description: use -Wno-format on tests that cannot be adjusted other ways. +# DP: Author: Kees Cook +# 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 -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" } */ + + typedef __SIZE_TYPE__ size_t; + extern "C" void *memcpy (void *, __const void *, 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 + --- gcc-7-7.3.0.orig/debian/patches/testsuite-hardening-printf-types.diff +++ gcc-7-7.3.0/debian/patches/testsuite-hardening-printf-types.diff @@ -0,0 +1,667 @@ +# DP: Description: adjust/standardize printf types to avoid -Wformat warnings. +# DP: Author: Kees Cook +# 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; + } --- gcc-7-7.3.0.orig/debian/patches/testsuite-hardening-updates.diff +++ gcc-7-7.3.0/debian/patches/testsuite-hardening-updates.diff @@ -0,0 +1,144 @@ +# 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/c-c++-common/cilk-plus/CK/spawnee_inline.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/c-c++-common/cilk-plus/CK/spawnee_inline.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c ++++ b/src/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target cilkplus_runtime } */ +-/* { dg-options "-fcilkplus -w" } */ ++/* { dg-options "-fcilkplus -w -U_FORTIFY_SOURCE" } */ + + #include + #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 --- gcc-7-7.3.0.orig/debian/patches/thunderx2t99-pipe-sched.diff +++ gcc-7-7.3.0/debian/patches/thunderx2t99-pipe-sched.diff @@ -0,0 +1,55 @@ +# DP: aarch64-thunderx2: Add pipeline/scheduling info for missing insn types. + +diff -urpN a/src/gcc/config/aarch64/thunderx2t99.md b/src/gcc/config/aarch64/thunderx2t99.md +--- a/src/gcc/config/aarch64/thunderx2t99.md 2018-01-08 19:07:26.219493873 -0500 ++++ b/src/gcc/config/aarch64/thunderx2t99.md 2018-01-08 19:24:18.772835187 -0500 +@@ -69,9 +69,30 @@ + + (define_insn_reservation "thunderx2t99_branch" 1 + (and (eq_attr "tune" "thunderx2t99") +- (eq_attr "type" "call,branch")) ++ (eq_attr "type" "call,branch,trap")) + "thunderx2t99_i2") + ++;; Misc instructions. ++ ++(define_insn_reservation "thunderx2t99_nothing" 0 ++ (and (eq_attr "tune" "thunderx2t99") ++ (eq_attr "type" "no_insn,block")) ++ "nothing") ++ ++(define_insn_reservation "thunderx2t99_mrs" 0 ++ (and (eq_attr "tune" "thunderx2t99") ++ (eq_attr "type" "mrs")) ++ "thunderx2t99_i2") ++ ++(define_insn_reservation "thunderx2t99_multiple" 1 ++ (and (eq_attr "tune" "thunderx2t99") ++ (eq_attr "type" "multiple")) ++ "thunderx2t99_i0+thunderx2t99_i1+thunderx2t99_i2+thunderx2t99_ls0+\ ++ thunderx2t99_ls1+thunderx2t99_sd+thunderx2t99_i1m1+thunderx2t99_i1m2+\ ++ thunderx2t99_i1m3+thunderx2t99_ls0d1+thunderx2t99_ls0d2+thunderx2t99_ls0d3+\ ++ thunderx2t99_ls1d1+thunderx2t99_ls1d2+thunderx2t99_ls1d3+thunderx2t99_f0+\ ++ thunderx2t99_f1") ++ + ;; Integer arithmetic/logic instructions. + + ; Plain register moves are handled by renaming, and don't create any uops. +@@ -87,7 +108,7 @@ + adc_reg,adc_imm,adcs_reg,adcs_imm,\ + logic_reg,logic_imm,logics_reg,logics_imm,\ + csel,adr,mov_imm,shift_reg,shift_imm,bfm,\ +- rbit,rev,extend,rotate_imm")) ++ bfx,rbit,rev,extend,rotate_imm")) + "thunderx2t99_i012") + + (define_insn_reservation "thunderx2t99_alu_shift" 2 +@@ -155,7 +176,7 @@ + + (define_insn_reservation "thunderx2t99_fp_cmp" 5 + (and (eq_attr "tune" "thunderx2t99") +- (eq_attr "type" "fcmps,fcmpd")) ++ (eq_attr "type" "fcmps,fcmpd,fccmps,fccmpd")) + "thunderx2t99_f01") + + (define_insn_reservation "thunderx2t99_fp_divsqrt_s" 16 --- gcc-7-7.3.0.orig/debian/porting.html +++ gcc-7-7.3.0/debian/porting.html @@ -0,0 +1,30 @@ + + +Porting libstdc++-v3 + + + + + + + +

Porting libstdc++-v3

+
+ +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + + --- gcc-7-7.3.0.orig/debian/reduce-test-diff.awk +++ gcc-7-7.3.0/debian/reduce-test-diff.awk @@ -0,0 +1,33 @@ +#! /usr/bin/gawk -f + +BEGIN { + skip=0 + warn=0 +} + +/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ { + next +} + +# only compare gcc, g++, g77 and objc results +/=== treelang tests ===/ { + skip=1 +} + +# omit extra files appended to test-summary +/^\+Compiler version/ { + skip=1 +} + +skip == 0 { + print + next +} + +/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ { + warn=1 +} + +END { + exit warn +} --- gcc-7-7.3.0.orig/debian/rules +++ gcc-7-7.3.0/debian/rules @@ -0,0 +1,83 @@ +#! /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 + $(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-indep binary-arch binary: + $(MAKE) -f debian/rules2 $@ + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +release: + foo=$(shell basename $(CURDIR)); \ + if [ "$$foo" != "gcc-3.4" ]; then \ + find -name CVS -o -name .cvsignore -o -name '.#*' | \ + xargs rm -rf; \ + fi + +.NOTPARALLEL: +.PHONY: build clean binary-indep binary-arch binary release --- gcc-7-7.3.0.orig/debian/rules.conf +++ gcc-7-7.3.0/debian/rules.conf @@ -0,0 +1,1341 @@ +# -*- makefile -*- +# rules.conf +# - used to build debian/control and debian/rules.parameters +# - assumes unpacked sources + +include debian/rules.defs +include debian/rules.sonames + +# manual ... +ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k)) + ifeq ($(DEB_TARGET_ARCH),m68k) + GCC_SONAME := 2 + endif + ifeq ($(DEB_TARGET_ARCH),hppa) + GCC_SONAME := 4 + endif +else + GCC_SONAME := 1 +endif +DEB_LIBGCC_SOVERSION := $(DEB_SOEVERSION) +DEB_LIBGCC_VERSION := $(DEB_EVERSION) + +_soname_map = gcc=$(GCC_SONAME) stdc++=$(CXX_SONAME) gomp=$(GOMP_SONAME) \ + ssp=$(SSP_SONAME) gfortran=$(FORTRAN_SONAME) \ + itm=$(ITM_SONAME) objc=$(OBJC_SONAME) quadmath=$(QUADMATH_SONAME) \ + go=$(GO_SONAME) backtrace=$(BTRACE_SONAME) \ + atomic=$(ATOMIC_SONAME) asan=$(ASAN_SONAME) lsan=$(LSAN_SONAME) \ + tsan=$(TSAN_SONAME) ubsan=$(UBSAN_SONAME) \ + vtv=$(VTV_SONAME) cilkrts=$(CILKRTS_SONAME) mpx=$(MPX_SONAME) \ + gphobos=$(GPHOBOS_SONAME) hsail-rt=$(HSAIL_SONAME) +_soname = $(patsubst $(1)=%,%,$(filter $(1)=%,$(_soname_map))) + +rel_on_dev := $(if $(cross_lib_arch),>=,=) +# $(call _lib_name,,,) +_lib_name = $(subst $(SPACE),, \ + lib$(2)$(1) \ + $(if $(filter dev,$(3)),,$(call _soname,$(1))) \ + $(if $(or $(filter $(3),dev),$(and $(filter $(3),dbg),$(filter $(1),stdc++))),-$(BASE_VERSION)) \ + $(if $(3),-$(3))$(LS)$(AQ)) +# $(call _lib_vers,,) +_lib_vers = ($(if $(filter $(1),dev),$(rel_on_dev),>=) $(2)) + +# Helper to generate biarch/triarch dependencies. +# For example, $(eval $(call gen_multilib_deps,gomp)) will create the +# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32} +# variables if biarch{32,64,n32} is set to yes. + +define gen_multilib_deps + lib$1biarch64$2 := $(call _lib_name,$(1),64,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarch32$2 := $(call _lib_name,$(1),32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchn32$2 := $(call _lib_name,$(1),n32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchx32$2 := $(call _lib_name,$(1),x32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchhf$2 := $(call _lib_name,$(1),hf,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchsf$2 := $(call _lib_name,$(1),sf,$(2)) $(call _lib_vers,$(2),$(3)) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2) + endif + ifeq ($$(biarch32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarch32$2) + else + lib$1biarch$2 := $$(lib$1biarch32$2) + endif + endif + ifeq ($$(biarchx32),yes) + ifeq ($1,mpx) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2) + else + lib$1biarch$2 := + endif + else ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchx32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchx32$2) + else + lib$1biarch$2 := $$(lib$1biarchx32$2) + endif + endif + ifeq ($$(biarchn32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchn32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchn32$2) + else + lib$1biarch$2 := $$(lib$1biarchn32$2) + endif + endif + ifeq ($$(biarchhf),yes) + lib$1biarch$2 := $$(lib$1biarchhf$2) | $(call _lib_name,$(1),hf,$(2)) + endif + ifeq ($$(biarchsf),yes) + lib$1biarch$2 := $$(lib$1biarchsf$2) | $(call _lib_name,$(1),sf,$(2)) + endif +endef +ifeq ($(with_shared_libgcc),yes) + LIBGCC_DEP := libgcc$(GCC_SONAME)$(LS)$(AQ) (>= $(DEB_LIBGCC_VERSION)) + $(eval $(call gen_multilib_deps,gcc,,$(DEB_LIBGCC_VERSION))) +endif +LIBGCC_DEV_DEP := libgcc-$(BASE_VERSION)-dev$(LS)$(AQ) ($(rel_on_dev) $(DEB_VERSION)) +$(foreach x,stdc++ gomp ssp gfortran itm objc atomic asan lsan mpx ubsan quadmath go vtv cilkrts, \ + $(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 + +# 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),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-17 + else + BINUTILSBDV = 2.30 + endif +endif +ifeq ($(DEB_CROSS),yes) + BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), binutils-multiarch$(NT) (>= $(BINUTILSBDV)) + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') +else + BINUTILS_BUILD_DEP = binutils$(NT) (>= $(BINUTILSBDV)) | binutils-multiarch$(NT) (>= $(BINUTILSBDV)) + ifneq (,$(findstring cross-build-,$(build_type))) + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + else + BINUTILSV := $(shell dpkg -l binutils binutils-multiarch \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + endif +endif +ifneq (,$(filter $(build_type), build-native cross-build-native)) + ifeq (,$(filter gccgo% gnat%, $(PKGSOURCE))) + BINUTILS_BUILD_DEP += , $(binutils_hppa64)$(NT) (>= $(BINUTILSBDV)) [$(hppa64_archs)] + endif +endif +ifeq (,$(BINUTILSV)) + BINUTILSV := $(BINUTILSBDV) +endif + +# FIXME; stripping doesn't work with gold +#BINUTILS_BUILD_DEP += , binutils-gold (>= $(BINUTILSV)) [$(gold_archs)] + +# libc-dev dependencies +libc_ver := 2.11 +libc_dev_ver := $(libc_ver) +ifeq ($(with_multiarch_lib),yes) + ifeq ($(derivative),Debian) + libc_dev_ver := 2.13-5 + else + libc_dev_ver := 2.13-0ubuntu6 + endif +endif +# first set LIBC_DEP/LIBC_DEV_DEP for native builds only +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH),alpha ia64)) + LIBC_DEP = libc6.1 + else + LIBC_DEP = libc6 + endif + ifneq (,$(findstring musl-linux-,$(DEB_TARGET_ARCH))) + LIBC_DEP = musl + libc_ver = 0.9 + libc_dev_ver = 0.9 + endif +else + ifeq ($(DEB_TARGET_ARCH_OS),hurd) + LIBC_DEP = libc0.3 + endif + ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + LIBC_DEP = libc0.1 + endif + ifeq ($(DEB_TARGET_ARCH),uclibc) + LIBC_DEP = libuclibc + endif +endif +LIBC_DEV_DEP := $(LIBC_DEP)-dev + +# this is about Debian archs name, *NOT* GNU target triplet +biarch_deb_map := \ + i386=amd64 amd64=i386 \ + mips=mips64 mipsel=mips64el \ + mipsn32=mips mipsn32el=mipsel \ + mips64=mips mips64el=mipsel \ + mipsr6=mips64r6 mipsr6el=mips64r6el \ + mipsn32r6=mipsr6 mipsn32r6el=mipsr6el \ + mips64r6=mipsr6 mips64r6el=mipsr6el \ + powerpc=ppc64 ppc64=powerpc \ + sparc=sparc64 sparc64=sparc\ + s390=s390x s390x=s390 \ + kfreebsd-amd64=i386 \ + armel=armhf \ + armhf=armel +biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map))) + +LIBC_BIARCH_DEP := +LIBC_BIARCH_DEV_DEP := +ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32) $(biarchx32)$(biarchhf)$(biarchsf))) + LIBC_BIARCH_DEP := $${shlibs:Depends} + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver)) + # amd64, x32, i386 + ifneq (,$(findstring $(DEB_TARGET_ARCH),amd64 x32 i386)) + ifeq ($(biarch64)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarch64)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarch32)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_ver)) + endif + endif + # mips* + ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el)) + ifeq ($(biarchn32)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarch64)$(biarch32),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarchn32)$(biarch64),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver)) + endif + endif + + ifeq ($(biarchhf),yes) + LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver)) + LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + endif + ifeq ($(biarchsf),yes) + LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver)) + LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + endif +endif + +# now add the cross suffix and required version +LIBC_DEP := $(LIBC_DEP)$(LS)$(AQ) +LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS)$(AQ) (>= $(libc_dev_ver)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + LIBC_DBG_DEP = libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, +endif + +# TODO: make this automatic, there must be a better way to define LIBC_DEP. +ifneq ($(DEB_CROSS),yes) + LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_dev_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_dev_ver)) + ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty oneiric)) + LIBC_BUILD_DEP += , libc6-dev (>= 2.13-31) [armel armhf] + endif + LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el], + ifeq (yes,$(MIPS_R6_ENABLED)) + LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], + endif +ifneq (,$(findstring amd64,$(biarchx32archs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386], +endif +ifneq (,$(findstring armel,$(biarchhfarchs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-armhf [armel], libhfgcc1 [armel], +endif +ifneq (,$(findstring armhf,$(biarchsfarchs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-armel [armhf], libsfgcc1 [armhf], +endif +else + LIBC_BUILD_DEP = $(LIBC_DEV_DEP), + ifneq ($(LIBC_BIARCH_DEV_DEP),) + LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP), + else + LIBC_BIARCH_BUILD_DEP = + endif +endif + +# needed for the include/asm symlink to run the testsuite for +# non default multilibs +ifneq (,$(multilib_archs)) + GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)]$(pf_ncross), +endif + +LIBUNWIND_DEV_DEP := libunwind8-dev$(LS)$(AQ) +LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64], +LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64], +ifneq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := # nothing +else ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + LIBUNWIND_DEV_DEP := # nothing +endif + +ifneq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty)) + GMP_BUILD_DEP = libgmp3-dev | libgmp-dev (>= 2:5.0.1~), + MPFR_BUILD_DEP = libmpfr-dev, +else + GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~), + MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~), +endif + +ISL_BUILD_DEP = libisl-dev, +ifneq (,$(filter $(distrelease),jessie stretch sid experimental)) + ISL_BUILD_DEP = libisl-dev (>= 0.14), +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 ifneq (,$(filter $(distrelease), stretch jessie trusty xenial artful)) + MPC_BUILD_DEP = libmpc-dev (>= 1.0), +else + MPC_BUILD_DEP = libmpc-dev (>= 1.1), +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 + +CHECK_BUILD_DEP := dejagnu [$(check_no_archs)], + +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-8-base, + endif +endif + +OFFLOAD_BUILD_DEP += nvptx-tools [$(nvptx_archs)], + +PHOBOS_BUILD_DEP = lib32z1-dev [amd64 kfreebsd-amd64], lib64z1-dev [i386], +ifeq ($(derivative),Ubuntu) + PHOBOS_BUILD_DEP += libx32z1-dev [amd64 kfreebsd-amd64 i386], +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 sh4 sparc64 s390x x32 +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)) + 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), wheezy precise 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)], g++-6$(NT) +else ifneq (,$(filter $(distrelease), buster sid artful bionic cosmic)) + gnat_build_dep := gnat-7$(NT) [$(ada_no_archs)], g++-7$(NT) +else + gnat_build_dep := gnat-7$(NT) [$(ada_no_archs)], g++-7$(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 := gcc-4.4-base (<< 4.4.7), gcc-4.7-base (<< 4.7.3), gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~), gcj-4.6-base (<< 4.6.1-4~), gnat-4.6 (<< 4.6.1-5~), gnat (<< 7) +# these would need proper updates, and are only needed for upgrades +ifneq (,$(filter $(distrelease),squeeze wheezy lucid precise trusty)) + 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 := 7 +DEB_GNAT_SOFT_VERSION := 7 + +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) + +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_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_libcilkrts),yes) + addons += libcilkrts + addons += libcilkrts lib32cilkrts lib64cilkrts #libn32cilkrts + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32cilkrts) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfcilkrts) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfcilkrts) +endif +ifeq ($(with_libmpx),yes) + addons += libmpx lib32mpx lib64mpx +endif +ifeq ($(with_libqmath),yes) + addons += libqmath lib32qmath lib64qmath libn32qmath + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32qmath) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfqmath) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfqmath) +endif +ifeq ($(with_jit),yes) + addons += jit +endif +ifeq ($(with_libgccjit),yes) + addons += libjit +endif +ifeq ($(with_offload_nvptx),yes) + addons += olnvptx libgompnvptx +endif +ifeq ($(with_libcc1),yes) + addons += libcc1 +endif +ifeq ($(with_d),yes) + languages += d + ifeq ($(with_libphobos),yes) + addons += libphobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32phobos) + endif +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 + 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) \ + -DCILKRTS_SO=$(CILKRTS_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="$(libphobos_archs)" \ + -Dlibphobos_no_archs="$(libphobos_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 $(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 | sed '/^Build/s/ *, */, /g;/^ /s/ *, */, /g' \ + $(if $(filter yes, $(with_base_only)), | awk '/^$$/ {if (p) exit; else p=1; } {print}') \ + > debian/control.tmp + rm -f debian/control.tmp2 + [ -e debian/control ] \ + && cmp -s debian/control debian/control.tmp \ + && rm -f debian/control.tmp && exit 0; \ + mv debian/control.tmp debian/control; touch $(control_stamp) + +readme-bugs-file: + m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \ + debian/README.Bugs.m4 > debian/README.Bugs + +copyright-file: + rm -f debian/copyright + if echo $(SOURCE_VERSION) | grep -E ^'[0-9]\.[0-9]-[0-9]{8}' ; \ + then SVN_BRANCH="trunk" ; \ + else \ + SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \ + fi ; \ + sed debian/copyright.in \ + -e "s/@BV@/$(BASE_VERSION)/g" \ + -e "s/@SVN_BRANCH@/$$SVN_BRANCH/g" \ + > debian/copyright + +substvars-file: control-file + rm -f debian/substvars.local.tmp + ( \ + echo 'libgcc:Version=$(DEB_LIBGCC_VERSION)'; \ + echo 'gcc:Version=$(DEB_GCC_VERSION)'; \ + echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \ + echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \ + echo 'gdc:Version=$(DEB_GDC_VERSION)'; \ + echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \ + echo 'gnat:SoftVersion=$(DEB_GNAT_SOFT_VERSION)'; \ + echo 'binutils:Version=$(BINUTILSV)'; \ + echo 'dep:libgcc=$(LIBGCC_DEP)'; \ + echo 'dep:libgccdev=$(LIBGCC_DEV_DEP)'; \ + echo 'dep:libgccbiarch=$(libgccbiarch)'; \ + echo 'dep:libgccbiarchdev=$(libgccbiarchdev)'; \ + echo 'dep:libc=$(LIBC_DEP) (>= $(libc_ver))'; \ + echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \ + echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \ + echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \ + echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \ + echo 'dep:libcxxbiarchdev=$(libstdc++biarchdev)'; \ + echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \ + echo 'dep:libgnat=$(LIBGNAT_DEP)'; \ + echo 'base:Breaks=$(BASE_BREAKS)'; \ + ) > debian/substvars.local.tmp +ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs))) + ( \ + echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \ + ) >> debian/substvars.local.tmp +endif +ifeq ($(with_gold),yes) + echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libssp),yes) + echo 'dep:libssp=libssp$(SSP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_gomp),yes) + echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_itm),yes) + echo 'dep:libitm=libitm$(ITM_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_atomic),yes) + echo 'dep:libatomic=libatomic$(ATOMIC_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libbacktrace),yes) + echo 'dep:libbacktrace=libbtrace$(BTRACE_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_asan),yes) + echo 'dep:libasan=libasan$(ASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lsan),yes) + echo 'dep:liblsan=liblsan$(LSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_tsan),yes) + echo 'dep:libtsan=libtsan$(TSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_ubsan),yes) + echo 'dep:libubsan=libubsan$(UBSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_vtv),yes) + echo 'dep:libvtv=libvtv$(VTV_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_cilkrts),yes) + echo 'dep:libcilkrts=libcilkrts$(CILKRTS_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_libphobos),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_cilkrts),yes) + echo 'dep:libcilkrtsbiarch=$(libcilkrtsbiarch)' \ + >> 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_libphobos),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 'CILKRTS_SONAME := $(CILKRTS_SONAME)'; \ + echo 'MPX_SONAME := $(MPX_SONAME)'; \ + echo 'QUADMATH_SONAME := $(QUADMATH_SONAME)'; \ + echo 'GO_SONAME := $(GO_SONAME)'; \ + echo 'CC1_SONAME := $(CC1_SONAME)'; \ + echo 'GCCJIT_SONAME := $(GCCJIT_SONAME)'; \ + echo 'GPHOBOS_SONAME := $(GPHOBOS_SONAME)'; \ + echo 'GDRUNTIME_SONAME := $(GDRUNTIME_SONAME)'; \ + echo 'HSAIL_SONAME := $(HSAIL_SONAME)'; \ + echo 'LIBC_DEP := $(LIBC_DEP)'; \ + ) > debian/rules.parameters.tmp + [ -e debian/rules.parameters ] \ + && cmp -s debian/rules.parameters debian/rules.parameters.tmp \ + && rm -f debian/rules.parameters.tmp && exit 0; \ + mv debian/rules.parameters.tmp debian/rules.parameters; \ + touch $(control_stamp) + +symbols-files: control-file +ifeq ($(DEB_CROSS),yes) + ifneq ($(DEB_STAGE),rtlibs) + test -n "$(LS)" + set -e; \ + for p in $$(dh_listpackages -i | grep '^lib'); do \ + p=$${p%$(LS)}; \ + if [ -f debian/$$p.symbols.$(DEB_TARGET_ARCH) ]; then \ + f=debian/$$p.symbols.$(DEB_TARGET_ARCH); \ + elif [ -f debian/$$p.symbols ]; then \ + f=debian/$$p.symbols; \ + else \ + continue; \ + fi; \ + link=debian/$$p$(LS).symbols; \ + if [ -L $$link ]; then \ + echo >&2 "removing left over symbols file link: $$link"; \ + rm -f $$link; \ + fi; \ + ln -s $$f $$link; \ + done + endif + ifeq ($(with_libphobosdev),yes) + echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libphobosbiarch=$(libgphobosbiarch)' \ + >> debian/substvars.local.tmp + endif +endif + +versioned-files: + fs=`echo debian/*BV* debian/*CXX* debian/*LC* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || echo "CANNOT FIND $$f"; \ + [ -f $$f ] || continue; \ + if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + sed -e 's/@BV@/$(BASE_VERSION)/g' \ + -e 's/@CXX@/$(CXX_SONAME)/g' \ + -e 's/@LC@/$(GCC_SONAME)/g' \ + -e 's/@SRC@/$(PKGSOURCE)/g' \ + -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ + -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \ + -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \ + -e 's/@TARGET_QUAL@/$(TARGET_QUAL)/g' \ + $$f > $$f2; \ + touch -r $$f $$f2; \ + done + for t in ar nm ranlib; do \ + sed "s/@BV@/$(BASE_VERSION)/g;s/@TOOL@/$$t/g" \ + debian/gcc-XX-BV.1 > debian/gcc-$$t-$(BASE_VERSION).1; \ + done + +# don't encode versioned build dependencies in the control file, but check +# these here instead. +check-versions: + v=$$(dpkg-query -l dpkg-dev | awk '/^.i/ {print $$3}'); \ + if dpkg --compare-versions "$$v" lt "$(DPKGV)"; then \ + echo "dpkg-dev (>= $(DPKGV)) required, found $$v"; \ + exit 1; \ + fi + v=$$(dpkg-query -l binutils binutils-multiarch 2>/dev/null | awk '/^.i/ {print $$3;exit}'); \ + if dpkg --compare-versions "$$v" lt "$(BINUTILSBDV)"; then \ + echo "binutils (>= $(BINUTILSBDV)) required, found $$v"; \ + exit 1; \ + fi + +.PRECIOUS: $(stampdir)/%-stamp --- gcc-7-7.3.0.orig/debian/rules.d/binary-ada.mk +++ gcc-7-7.3.0/debian/rules.d/binary-ada.mk @@ -0,0 +1,348 @@ +ifeq ($(with_separate_gnat),yes) + $(lib_binaries) += gnatbase +endif + +ifeq ($(with_libgnat),yes) + # During native builds, gnat-BV Depends: + # * libgnat, libgnatvsn because gnat1 is linked dynamically + # * libgnat because of the development symlink. + # During cross builds, gnat1 is linked statically. Only the latter remains. + $(lib_binaries) += libgnat + ifneq ($(DEB_CROSS),yes) + $(lib_binaries) += libgnatvsn + endif +endif + +arch_binaries := $(arch_binaries) ada +ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) ada-doc + endif +endif + +p_gbase = $(p_xbase) +p_glbase = $(p_lbase) +ifeq ($(with_separate_gnat),yes) + p_gbase = gnat$(pkg_ver)$(cross_bin_arch)-base + p_glbase = gnat$(pkg_ver)$(cross_bin_arch)-base +endif + +p_gnat = gnat-$(GNAT_VERSION)$(cross_bin_arch) +p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch) +p_lgnat = libgnat-$(GNAT_VERSION)$(cross_lib_arch) +p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch) +p_lgnatvsn = libgnatvsn$(GNAT_VERSION)$(cross_lib_arch) +p_lgnatvsn_dev = libgnatvsn$(GNAT_VERSION)-dev$(cross_lib_arch) +p_lgnatvsn_dbg = libgnatvsn$(GNAT_VERSION)-dbg$(cross_lib_arch) +p_gnatd = $(p_gnat)-doc + +d_gbase = debian/$(p_gbase) +d_gnat = debian/$(p_gnat) +d_gnatsjlj = debian/$(p_gnatsjlj) +d_lgnat = debian/$(p_lgnat) +d_lgnatvsn = debian/$(p_lgnatvsn) +d_lgnatvsn_dev = debian/$(p_lgnatvsn_dev) +d_gnatd = debian/$(p_gnatd) + +GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatlink \ + gnatls gnatmake gnatname gnatprep gnatxref gnathtml + +ifeq ($(with_gnatsjlj),yes) + rts_subdir = +endif + +dirs_gnat = \ + $(docdir)/$(p_gbase) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lib_dir)/{adalib,adainclude} \ + $(gcc_lexec_dir) + +files_gnat = \ + $(gcc_lexec_dir)/gnat1 \ + $(gcc_lib_dir)/adainclude/*.ad[bs] \ + $(gcc_lib_dir)/adalib/*.ali \ + $(gcc_lib_dir)/adalib/lib*.a \ + $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver)) + +dirs_lgnat = \ + $(docdir) \ + $(PF)/lib +files_lgnat = \ + $(usr_lib)/lib{gnat,gnarl}-$(GNAT_SONAME).so.1 + +$(binary_stamp)-gnatbase: $(install_stamp) + dh_testdir + dh_testroot + dh_installdocs -p$(p_gbase) debian/README.gnat debian/README.maintainers + : # $(p_gbase) +ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + mkdir -p $(d_gbase)/$(docdir)/$(p_xbase) + ln -sf ../$(p_gbase) $(d_gbase)/$(docdir)/$(p_xbase)/Ada +endif + dh_installchangelogs -p$(p_gbase) src/gcc/ada/ChangeLog + dh_compress -p$(p_gbase) + dh_fixperms -p$(p_gbase) + dh_gencontrol -p$(p_gbase) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_gbase) + dh_md5sums -p$(p_gbase) + dh_builddeb -p$(p_gbase) + touch $@ + + +$(binary_stamp)-libgnat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + : # libgnat + rm -rf $(d_lgnat) + dh_installdirs -p$(p_lgnat) $(dirs_lgnat) + + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + mv $(d)/$(gcc_lib_dir)/$(rts_subdir)/adalib/$$vlib.so.1 $(d)/$(usr_lib)/. ; \ + rm -f $(d)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + done + $(dh_compat2) dh_movefiles -p$(p_lgnat) $(files_lgnat) + + debian/dh_doclink -p$(p_lgnat) $(p_glbase) + + debian/dh_rmemptydirs -p$(p_lgnat) + + b=libgnat; \ + v=$(GNAT_VERSION); \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -dev -dbg; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnat) -V '$(p_lgnat) (>= $(DEB_VERSION))' + $(call cross_mangle_shlibs,$(p_lgnat)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + mkdir -p $(d_lgnat)/usr/share/lintian/overrides + echo package-name-doesnt-match-sonames > \ + $(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat) +endif + + dh_strip -p$(p_lgnat) --dbg-package=$(p_lgnat_dbg) + $(cross_shlibdeps) dh_shlibdeps -p$(p_lgnat) \ + $(call shlibdirs_to_search, \ + $(subst gnat-$(GNAT_SONAME),gcc$(GCC_SONAME),$(p_lgnat)) \ + $(subst gnat-$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnat)) \ + ,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common) + $(call cross_mangle_substvars,$(p_lgnat)) + + : # $(p_lgnat_dbg) + debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase) + + echo $(p_lgnat) $(p_lgnat_dbg) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-libgnatvsn: $(install_stamp) + : # $(p_lgnatvsn_dev) + dh_install -p$(p_lgnatvsn_dev) $(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) + dh_strip -p$(p_lgnatvsn) --dbg-package=$(p_lgnatvsn_dbg) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnatvsn) \ + -V '$(p_lgnatvsn) (>= $(DEB_VERSION))' + $(call cross_mangle_shlibs,$(p_lgnatvsn)) + cat debian/$(p_lgnatvsn)/DEBIAN/shlibs >> debian/shlibs.local + $(cross_shlibdeps) dh_shlibdeps -p$(p_lgnatvsn) \ + $(call shlibdirs_to_search, \ + $(subst gnatvsn$(GNAT_SONAME),gcc$(GCC_SONAME),$(p_lgnatvsn)) \ + $(subst gnatvsn$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnatvsn)) \ + $(subst gnatvsn$(GNAT_SONAME),gnat-$(GNAT_SONAME),$(p_lgnatvsn)) \ + ,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common) + $(call cross_mangle_substvars,$(p_lgnatvsn)) + + : # $(p_lgnatvsn_dbg) + debian/dh_doclink -p$(p_lgnatvsn_dbg) $(p_glbase) + + echo $(p_lgnatvsn) $(p_lgnatvsn_dev) $(p_lgnatvsn_dbg) >> debian/$(lib_binaries) + + touch $@ + +$(binary_stamp)-ada: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + : # $(p_gnat) + rm -rf $(d_gnat) + dh_installdirs -p$(p_gnat) $(dirs_gnat) + : # Upstream does not install gnathtml. + cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + chmod 755 debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + $(dh_compat2) dh_movefiles -p$(p_gnat) $(files_gnat) + +ifeq ($(with_gnatsjlj),yes) + dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir) + $(dh_compat2) dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude +endif + +ifeq ($(with_libgnat),yes) + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + dh_link -p$(p_gnat) \ + /$(usr_lib)/$$vlib.so.1 /$(usr_lib)/$$vlib.so \ + /$(usr_lib)/$$vlib.so.1 /$(usr_lib)/$$lib.so; \ + done + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + dh_link -p$(p_gnat) \ + /$(usr_lib)/$$vlib.so.1 $(gcc_lib_dir)/$(rts_subdir)adalib/$$lib.so; \ + done +endif + debian/dh_doclink -p$(p_gnat) $(p_gbase) +ifeq ($(with_gnatsjlj),yes) + debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase) +endif +ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + ifeq ($(with_check),yes) + cp -p test-summary $(d_gnat)/$(docdir)/$(p_gbase)/. + endif +else + mkdir -p $(d_gnat)/$(docdir)/$(p_gbase)/ada + cp -p src/gcc/ada/ChangeLog $(d_gnat)/$(docdir)/$(p_gbase)/ada/. +endif + + for i in $(GNAT_TOOLS); do \ + case "$$i" in \ + gnat) cp -p debian/gnat.1 $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)gnat$(pkg_ver).1 ;; \ + *) ln -sf $(cmd_prefix)gnat$(pkg_ver).1 $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)$$i$(pkg_ver).1; \ + esac; \ + done + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + : # still ship the unversioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$(cmd_prefix)$$i; \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)$$i.1.gz; \ + done + ifeq ($(unprefixed_names),yes) + : # ship the versioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$$i$(pkg_ver); \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done + + : # still ship the unversioned names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$$i; \ + ln -sf gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$$i.1.gz; \ + done + + endif +else + : # still ship the unversioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$(cmd_prefix)$$i; \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)$$i.1.gz; \ + done +endif + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + dh_install -p$(p_gnat) debian/ada/debian_packaging.mk usr/share/ada + mv $(d_gnat)/usr/share/ada/debian_packaging.mk \ + $(d_gnat)/usr/share/ada/debian_packaging-$(GNAT_VERSION).mk +endif + : # keep this one unversioned, see Debian #802838. + dh_link -p$(p_gnat) \ + usr/bin/$(cmd_prefix)gcc$(pkg_ver) usr/bin/$(cmd_prefix)gnatgcc +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_link -p$(p_gnat) \ + usr/share/man/man1/$(cmd_prefix)gcc$(pkg_ver).1.gz \ + usr/share/man/man1/$(cmd_prefix)gnatgcc.1.gz +endif +ifeq ($(unprefixed_names),yes) + dh_link -p$(p_gnat) \ + usr/bin/$(cmd_prefix)gcc$(pkg_ver) usr/bin/gnatgcc + ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_link -p$(p_gnat) \ + usr/share/man/man1/$(cmd_prefix)gcc$(pkg_ver).1.gz \ + usr/share/man/man1/gnatgcc.1.gz + endif +endif + debian/dh_rmemptydirs -p$(p_gnat) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gnat)/$(gcc_lexec_dir)/gnat1 +endif + dh_strip -p$(p_gnat) + find $(d_gnat) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnat) + mkdir -p $(d_gnat)/usr/share/lintian/overrides + echo '$(p_gnat) binary: hardening-no-pie' \ + > $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gnat) binary: binary-without-manpage' \ + >> $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) +endif + + echo $(p_gnat) >> debian/arch_binaries + +ifeq ($(with_gnatsjlj),yes) + dh_strip -p$(p_gnatsjlj) + find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnatsjlj) + echo $(p_gnatsjlj) >> debian/arch_binaries +endif + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(build_gnatdoc_stamp): $(build_stamp) + mkdir -p html + rm -f html/*.info + echo -n gnat_ugn gnat_rm gnat-style | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'cd html && \ + echo "generating {}-$(GNAT_VERSION).info"; \ + makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ + -I $(builddir)/gcc \ + -o {}-$(GNAT_VERSION).info \ + $(srcdir)/gcc/ada/{}.texi' + touch $@ + +$(binary_stamp)-ada-doc: $(build_html_stamp) $(build_gnatdoc_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gnatd) + dh_installdirs -p$(p_gnatd) \ + $(PF)/share/info + cp -p html/gnat*info* $(d_gnatd)/$(PF)/share/info/. + dh_installdocs -p$(p_gnatd) \ + html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html + echo $(p_gnatd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-base.mk +++ gcc-7-7.3.0/debian/rules.d/binary-base.mk @@ -0,0 +1,75 @@ +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) + +ifneq ($(DEB_STAGE),rtlibs) + ln -sf $(BASE_VERSION) \ + $(d_base)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lib_dir)) + for link in $(additional_links); do \ + ln -sf $(BASE_VERSION) \ + $(d_base)/$$(dirname $(gcc_lib_dir))/$$link; \ + done + ifneq ($(gcc_lib_dir),$(gcc_lexec_dir)) + ln -sf $(BASE_VERSION) \ + $(d_base)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lexec_dir)) + for link in $(additional_links); do \ + ln -sf $(BASE_VERSION) \ + $(d_base)/$$(dirname $(gcc_lexec_dir))/$$link; \ + done + endif +endif + +ifeq ($(with_base_only),yes) + dh_installdocs -p$(p_base) debian/README.Debian +else + dh_installdocs -p$(p_base) debian/README.Debian.$(DEB_TARGET_ARCH) +endif + rm -f $(d_base)/usr/share/doc/$(p_base)/README.Debian + dh_installchangelogs -p$(p_base) + dh_compress -p$(p_base) + dh_fixperms -p$(p_base) +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + $(cross_gencontrol) dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +else + dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +endif + dh_installdeb -p$(p_base) + dh_md5sums -p$(p_base) + dh_builddeb -p$(p_base) + touch $@ + +$(binary_stamp)-lbase: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_lbase) + dh_installdocs -p$(p_lbase) debian/README.Debian + rm -f debian/$(p_lbase)/usr/share/doc/$(p_lbase)/README.Debian + dh_installchangelogs -p$(p_lbase) + dh_compress -p$(p_lbase) + dh_fixperms -p$(p_lbase) + dh_gencontrol -p$(p_lbase) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_lbase) + dh_md5sums -p$(p_lbase) + dh_builddeb -p$(p_lbase) + touch $@ --- gcc-7-7.3.0.orig/debian/rules.d/binary-brig.mk +++ gcc-7-7.3.0/debian/rules.d/binary-brig.mk @@ -0,0 +1,79 @@ +ifneq ($(DEB_STAGE),rtlibs) +# ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) +# arch_binaries := $(arch_binaries) brig-multi +# endif + arch_binaries := $(arch_binaries) brig +endif + +p_brig = gccbrig$(pkg_ver)$(cross_bin_arch) +d_brig = debian/$(p_brig) + +p_brig_m= gccbrig$(pkg_ver)-multilib$(cross_bin_arch) +d_brig_m= debian/$(p_brig_m) + +dirs_brig = \ + $(docdir)/$(p_xbase)/BRIG \ + $(gcc_lexec_dir) + +files_brig = \ + $(PF)/bin/$(cmd_prefix)gccbrig$(pkg_ver) \ + $(gcc_lexec_dir)/brig1 + +$(binary_stamp)-brig: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_brig) + dh_installdirs -p$(p_brig) $(dirs_brig) + $(dh_compat2) dh_movefiles -p$(p_brig) $(files_brig) + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)gccbrig$(pkg_ver) \ + $(d_brig)/$(PF)/bin/gccbrig$(pkg_ver) +# ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) +# ln -sf $(cmd_prefix)gccbrig$(pkg_ver).1 \ +# $(d_brig)/$(PF)/share/man/man1/gccbrig$(pkg_ver).1 +# endif +endif + cp -p $(srcdir)/gcc/brig/ChangeLog \ + $(d_brig)/$(docdir)/$(p_xbase)/BRIG/changelog.BRIG + + mkdir -p $(d_brig)/usr/share/lintian/overrides + echo '$(p_brig) binary: hardening-no-pie' \ + > $(d_brig)/usr/share/lintian/overrides/$(p_brig) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_brig) binary: binary-without-manpage' \ + >> $(d_brig)/usr/share/lintian/overrides/$(p_brig) +endif + + debian/dh_doclink -p$(p_brig) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_brig) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_brig)/$(gcc_lexec_dir)/brig1 +endif + dh_strip -p$(p_brig) \ + $(if $(unstripped_exe),-X/brig1) + dh_shlibdeps -p$(p_brig) + echo $(p_brig) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-brig-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_brig_m) + dh_installdirs -p$(p_brig_m) $(docdir) + + debian/dh_doclink -p$(p_brig_m) $(p_xbase) + + dh_strip -p$(p_brig_m) + dh_shlibdeps -p$(p_brig_m) + echo $(p_brig_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-cpp.mk +++ gcc-7-7.3.0/debian/rules.d/binary-cpp.mk @@ -0,0 +1,85 @@ +ifneq ($(DEB_STAGE),rtlibs) + arch_binaries := $(arch_binaries) cpp + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) cpp-doc + endif + endif +endif + +dirs_cpp = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) + +files_cpp = \ + $(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \ + $(gcc_lexec_dir)/cc1 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cpp += \ + $(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp) + dh_installdirs -p$(p_cpp) $(dirs_cpp) + $(dh_compat2) dh_movefiles -p$(p_cpp) $(files_cpp) + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)cpp$(pkg_ver) \ + $(d_cpp)/$(PF)/bin/cpp$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \ + $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1 + endif +endif + + mkdir -p $(d_cpp)/usr/share/lintian/overrides + echo '$(p_cpp) binary: hardening-no-pie' \ + > $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cpp) binary: binary-without-manpage' \ + >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) +endif + + debian/dh_doclink -p$(p_cpp) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cpp) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) $(d_cpp)/$(gcc_lexec_dir)/cc1 +endif + dh_strip -p$(p_cpp) \ + $(if $(unstripped_exe),-X/cc1) + dh_shlibdeps -p$(p_cpp) + + echo $(p_cpp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cppd) + dh_installdirs -p$(p_cppd) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_cppd) \ + $(PF)/share/info/cpp* + + debian/dh_doclink -p$(p_cppd) $(p_xbase) + dh_installdocs -p$(p_cppd) html/cpp.html html/cppinternals.html + rm -f $(d_cppd)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_cppd) + echo $(p_cppd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-cxx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-cxx.mk @@ -0,0 +1,85 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) cxx-multi + endif + arch_binaries := $(arch_binaries) cxx +endif + +dirs_cxx = \ + $(docdir)/$(p_xbase)/C++ \ + $(PF)/bin \ + $(PF)/share/info \ + $(gcc_lexec_dir) \ + $(PF)/share/man/man1 +files_cxx = \ + $(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \ + $(gcc_lexec_dir)/cc1plus + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cxx += \ + $(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1 +endif + +p_cxx_m = g++$(pkg_ver)-multilib$(cross_bin_arch) +d_cxx_m = debian/$(p_cxx_m) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx) + dh_installdirs -p$(p_cxx) $(dirs_cxx) + $(dh_compat2) dh_movefiles -p$(p_cxx) $(files_cxx) + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)g++$(pkg_ver) \ + $(d_cxx)/$(PF)/bin/g++$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz + endif +endif + + mkdir -p $(d_cxx)/usr/share/lintian/overrides + echo '$(p_cxx) binary: hardening-no-pie' \ + > $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cxx) binary: binary-without-manpage' \ + >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) +endif + + debian/dh_doclink -p$(p_cxx) $(p_xbase) + cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_xbase)/C++/ + cp -p $(srcdir)/gcc/cp/ChangeLog \ + $(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog + debian/dh_rmemptydirs -p$(p_cxx) + + dh_shlibdeps -p$(p_cxx) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_cxx)/$(gcc_lexec_dir)/cc1plus +endif + dh_strip -p$(p_cxx) $(if $(unstripped_exe),-X/cc1plus) + echo $(p_cxx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx_m) + dh_installdirs -p$(p_cxx_m) \ + $(docdir) + + debian/dh_doclink -p$(p_cxx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cxx_m) + + dh_strip -p$(p_cxx_m) + dh_shlibdeps -p$(p_cxx_m) + echo $(p_cxx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-d.mk +++ gcc-7-7.3.0/debian/rules.d/binary-d.mk @@ -0,0 +1,273 @@ +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_libphobos),yes) + $(lib_binaries) += libphobos-dev + $(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) src/gcc/d/README + dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog + + $(dh_compat2) dh_movefiles -p$(p_gdc) -X/zlib/ $(files_gdc) + +ifeq ($(with_libphobos),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) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libgphobos.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gphobos$(GPHOBOS_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + dh_lintian -p$(p_l) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libphobos_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + $(call install_gcc_lib,libgdruntime,$(GDRUNTIME_SONAME),$(2),$(p_l)) + $(call install_gcc_lib,libgphobos,$(GPHOBOS_SONAME),$(2),$(p_l)) + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gdc_include_dir) + ) + + : # included in gdc package + rm -f $(d_l)/$(gdc_include_dir)/__entrypoint.di + + debian/dh_doclink -p$(p_l) \ + $(if $(filter yes,$(with_separate_gdc)),$(p_gdc),$(p_lbase)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# don't put this as a comment within define/endef +# $(call install_gcc_lib,libphobos,$(PHOBOS_SONAME),$(2),$(p_l)) + +do_libphobos = $(call __do_libphobos,lib$(1)gphobos$(GPHOBOS_SONAME),$(1)) +do_libphobos_dev = $(call __do_libphobos_dev,lib$(1)gphobos-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libphobos: $(install_stamp) + $(call do_libphobos,) + +$(binary_stamp)-lib64phobos: $(install_stamp) + $(call do_libphobos,64) + +$(binary_stamp)-lib32phobos: $(install_stamp) + $(call do_libphobos,32) + +$(binary_stamp)-libn32phobos: $(install_stamp) + $(call do_libphobos,n32) + +$(binary_stamp)-libx32phobos: $(install_stamp) + $(call do_libphobos,x32) + +$(binary_stamp)-libhfphobos: $(install_stamp) + $(call do_libphobos,hf) + +$(binary_stamp)-libsfphobos: $(install_stamp) + $(call do_libphobos,sf) + + +$(binary_stamp)-libphobos-dev: $(install_stamp) + $(call do_libphobos_dev,) + +$(binary_stamp)-lib64phobos-dev: $(install_stamp) + $(call do_libphobos_dev,64) + +$(binary_stamp)-lib32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,32) + +$(binary_stamp)-libx32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,x32) + +$(binary_stamp)-libn32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,n32) + +$(binary_stamp)-libhfphobos-dev: $(install_stamp) + $(call do_libphobos_dev,hf) + +$(binary_stamp)-libsfphobos-dev: $(install_stamp) + $(call do_libphobos_dev,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-fixincl.mk +++ gcc-7-7.3.0/debian/rules.d/binary-fixincl.mk @@ -0,0 +1,42 @@ +arch_binaries := $(arch_binaries) fixincl + +p_fix = fixincludes +d_fix = debian/$(p_fix) + +dirs_fix = \ + $(docdir)/$(p_xbase)/fixincludes \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) +files_fix = \ + $(gcc_lexec_dir)/install-tools \ + $(gcc_lib_dir)/install-tools + +# ---------------------------------------------------------------------- +$(binary_stamp)-fixincl: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_fix) + dh_installdirs -p$(p_fix) $(dirs_fix) + $(dh_compat2) dh_movefiles -p$(p_fix) $(files_fix) + +# $(IP) $(builddir)/gcc/fixinc/fixincl $(d_fix)/$(PF)/lib/fixincludes/ +# sed -e "s,^FIXINCL=\(.*\),FIXINCL=/$(PF)/lib/fixincludes/fixincl," \ +# $(builddir)/gcc/fixinc.sh \ +# > $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh +# chmod 755 $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh + $(IR) $(srcdir)/fixincludes/README \ + $(d_fix)/$(docdir)/$(p_xbase)/fixincludes + sed -e 's,@LIBEXECDIR@,$(gcc_lexec_dir),g' debian/fixincludes.in \ + > $(d_fix)/$(PF)/bin/fixincludes + chmod 755 $(d_fix)/$(PF)/bin/fixincludes + + debian/dh_doclink -p$(p_fix) $(p_xbase) + dh_strip -p$(p_fix) + dh_shlibdeps -p$(p_fix) + echo $(p_fix) >> debian/arch_binaries.epoch + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-fortran.mk +++ gcc-7-7.3.0/debian/rules.d/binary-fortran.mk @@ -0,0 +1,273 @@ +ifeq ($(with_libgfortran),yes) + $(lib_binaries) += libgfortran +endif +ifeq ($(with_fdev),yes) + $(lib_binaries) += libgfortran-dev +endif +ifeq ($(with_lib64gfortran),yes) + $(lib_binaries) += lib64fortran +endif +ifeq ($(with_lib64gfortrandev),yes) + $(lib_binaries) += lib64gfortran-dev +endif +ifeq ($(with_lib32gfortran),yes) + $(lib_binaries) += lib32fortran +endif +ifeq ($(with_lib32gfortrandev),yes) + $(lib_binaries) += lib32gfortran-dev +endif +ifeq ($(with_libn32gfortran),yes) + $(lib_binaries) += libn32fortran +endif +ifeq ($(with_libn32gfortrandev),yes) + $(lib_binaries) += libn32gfortran-dev +endif +ifeq ($(with_libx32gfortran),yes) + $(lib_binaries) += libx32fortran +endif +ifeq ($(with_libx32gfortrandev),yes) + $(lib_binaries) += libx32gfortran-dev +endif +ifeq ($(with_libhfgfortran),yes) + $(lib_binaries) += libhffortran +endif +ifeq ($(with_libhfgfortrandev),yes) + $(lib_binaries) += libhfgfortran-dev +endif +ifeq ($(with_libsfgfortran),yes) + $(lib_binaries) += libsffortran +endif +ifeq ($(with_libsfgfortrandev),yes) + $(lib_binaries) += libsfgfortran-dev +endif + +ifeq ($(with_fdev),yes) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) fdev-multi + endif + arch_binaries := $(arch_binaries) fdev + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) fortran-doc + endif + endif +endif + +p_g95 = gfortran$(pkg_ver)$(cross_bin_arch) +p_g95_m = gfortran$(pkg_ver)-multilib$(cross_bin_arch) +p_g95d = gfortran$(pkg_ver)-doc +p_flib = libgfortran$(FORTRAN_SONAME)$(cross_lib_arch) + +d_g95 = debian/$(p_g95) +d_g95_m = debian/$(p_g95_m) +d_g95d = debian/$(p_g95d) + +dirs_g95 = \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + $(PF)/include \ + $(PF)/share/man/man1 +files_g95 = \ + $(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \ + $(gcc_lib_dir)/finclude \ + $(gcc_lexec_dir)/f951 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_g95 += \ + $(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +define __do_fortran + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libgfortran.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gfortran$(FORTRAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst gfortran$(FORTRAN_SONAME),gcc$(QUADMATH_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1)) + + +define __do_libgfortran_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libcaf_single.a + $(call install_gcc_lib,libgfortran,$(FORTRAN_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + dh_strip -p$(p_l) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef +# ---------------------------------------------------------------------- + +do_libgfortran_dev = $(call __do_libgfortran_dev,lib$(1)gfortran-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libgfortran: $(install_stamp) + $(call do_fortran,) + +$(binary_stamp)-lib64fortran: $(install_stamp) + $(call do_fortran,64) + +$(binary_stamp)-lib32fortran: $(install_stamp) + $(call do_fortran,32) + +$(binary_stamp)-libn32fortran: $(install_stamp) + $(call do_fortran,n32) + +$(binary_stamp)-libx32fortran: $(install_stamp) + $(call do_fortran,x32) + +$(binary_stamp)-libhffortran: $(install_stamp) + $(call do_fortran,hf) + +$(binary_stamp)-libsffortran: $(install_stamp) + $(call do_fortran,sf) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95) + dh_installdirs -p$(p_g95) $(dirs_g95) + + $(dh_compat2) dh_movefiles -p$(p_g95) $(files_g95) + + mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95)/$(gcc_lib_dir)/ + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)gfortran$(pkg_ver) \ + $(d_g95)/$(PF)/bin/gfortran$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \ + $(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1 + endif +endif + + mkdir -p $(d_g95)/usr/share/lintian/overrides + echo '$(p_g95) binary: hardening-no-pie' \ + > $(d_g95)/usr/share/lintian/overrides/$(p_g95) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_g95) binary: binary-without-manpage' \ + >> $(d_g95)/usr/share/lintian/overrides/$(p_g95) +endif + + debian/dh_doclink -p$(p_g95) $(p_xbase) + + cp -p $(srcdir)/gcc/fortran/ChangeLog \ + $(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog + debian/dh_rmemptydirs -p$(p_g95) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_g95)/$(gcc_lexec_dir)/f951 +endif + dh_strip -p$(p_g95) \ + $(if $(unstripped_exe),-X/f951) + dh_shlibdeps -p$(p_g95) + echo $(p_g95) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95_m) + dh_installdirs -p$(p_g95_m) $(docdir) + + debian/dh_doclink -p$(p_g95_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_g95_m) + dh_strip -p$(p_g95_m) + dh_shlibdeps -p$(p_g95_m) + echo $(p_g95_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95d) + dh_installdirs -p$(p_g95d) \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_g95d) \ + $(PF)/share/info/gfortran* + + debian/dh_doclink -p$(p_g95d) $(p_xbase) +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_installdocs -p$(p_g95d) + rm -f $(d_g95d)/$(docdir)/$(p_xbase)/copyright + cp -p html/gfortran.html $(d_g95d)/$(docdir)/$(p_xbase)/fortran/ +endif + echo $(p_g95d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-libgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,) + +$(binary_stamp)-lib64gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,64) + +$(binary_stamp)-lib32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,32) + +$(binary_stamp)-libn32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,n32) + +$(binary_stamp)-libx32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,x32) + +$(binary_stamp)-libhfgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,hf) + +$(binary_stamp)-libsfgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,sf) + --- gcc-7-7.3.0.orig/debian/rules.d/binary-gcc.mk +++ gcc-7-7.3.0/debian/rules.d/binary-gcc.mk @@ -0,0 +1,375 @@ +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,cilkrts,mpx} \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/{include,include-fixed} \ + $(PF)/share/man/man1 $(libgcc_dir) + +# XXX: what about triarch mapping? +files_gcc = \ + $(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + +ifeq ($(with_libcc1_plugin),yes) + files_gcc += \ + $(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0} +endif + +files_gcc += \ + $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} + +ifeq ($(DEB_STAGE),stage1) + files_gcc += \ + $(gcc_lib_dir)/include \ + $(shell for h in \ + README limits.h syslimits.h; \ + do \ + test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \ + && echo $(gcc_lib_dir)/include-fixed/$$h; \ + done) +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcc += \ + $(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \ + $(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1 +endif + +usr_doc_files = debian/README.Bugs \ + $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) + +p_loc = gcc$(pkg_ver)-locales +d_loc = debian/$(p_loc) + +p_gcc_m = gcc$(pkg_ver)-multilib$(cross_bin_arch) +d_gcc_m = debian/$(p_gcc_m) + +p_pld = gcc$(pkg_ver)-plugin-dev$(cross_bin_arch) +d_pld = debian/$(p_pld) + +p_tst = gcc$(pkg_ver)-test-results +d_tst = debian/$(p_tst) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc) + dh_installdirs -p$(p_gcc) $(dirs_gcc) + +ifeq ($(with_linaro_branch),yes) + if [ -f $(srcdir)/gcc/ChangeLog.linaro ]; then \ + cp -p $(srcdir)/gcc/ChangeLog.linaro \ + $(d_gcc)/$(docdir)/$(p_xbase)/changelog.linaro; \ + fi +endif +ifeq ($(with_libssp),yes) + cp -p $(srcdir)/libssp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog +endif +ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libgomp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog +endif +ifeq ($(with_itm),yes) + mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libitm/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog +endif +ifeq ($(with_qmath),yes) + cp -p $(srcdir)/libquadmath/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog +endif +ifeq ($(with_asan),yes) + mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libsanitizer/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog +endif +ifeq ($(with_cilkrts),yes) + mv $(d)/$(usr_lib)/libcilkrts.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libcilkrts/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/cilkrts/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 debian/gcc.css $(d_gcc)/$(docdir)/$(p_xbase)/gcc.css + cp -p $(srcdir)/ChangeLog $(d_gcc)/$(docdir)/$(p_xbase)/changelog + cp -p $(srcdir)/gcc/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gcc/changelog + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + ( \ + echo "The comparision of the stage2 and stage3 object files shows differences."; \ + echo "The Debian package was modified to ignore these differences."; \ + echo ""; \ + echo "The following files differ:"; \ + echo ""; \ + cat $(builddir)/gcc/.bad_compare; \ + ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \ + else \ + true; \ + fi + + mkdir -p $(d_gcc)/usr/share/lintian/overrides + echo '$(p_gcc) binary: hardening-no-pie' \ + > $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcc) binary: binary-without-manpage' \ + >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) +endif + + debian/dh_rmemptydirs -p$(p_gcc) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcc)/$(gcc_lexec_dir)/lto1 \ + $(d_gcc)/$(gcc_lexec_dir)/lto-wrapper \ + $(d_gcc)/$(gcc_lexec_dir)/collect2 +endif + dh_strip -p$(p_gcc) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_gcc) + echo $(p_gcc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-gcc-multi: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_m) + dh_installdirs -p$(p_gcc_m) $(docdir) + + debian/dh_doclink -p$(p_gcc_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_gcc_m) + + dh_strip -p$(p_gcc_m) + dh_shlibdeps -p$(p_gcc_m) + echo $(p_gcc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-plugindev: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pld) + dh_installdirs -p$(p_pld) \ + $(docdir) \ + $(gcc_lib_dir)/plugin + $(dh_compat2) dh_movefiles -p$(p_pld) \ + $(gcc_lib_dir)/plugin/include \ + $(gcc_lib_dir)/plugin/gtype.state \ + $(gcc_lexec_dir)/plugin/gengtype + + debian/dh_doclink -p$(p_pld) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pld) + dh_strip -p$(p_pld) + dh_shlibdeps -p$(p_pld) + mkdir -p $(d_pld)/usr/share/lintian/overrides + echo '$(p_pld) binary: hardening-no-pie' \ + > $(d_pld)/usr/share/lintian/overrides/$(p_pld) + echo $(p_pld) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-locales: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_loc) + dh_installdirs -p$(p_loc) \ + $(docdir) + $(dh_compat2) dh_movefiles -p$(p_loc) \ + $(PF)/share/locale/*/*/cpplib*.* \ + $(PF)/share/locale/*/*/gcc*.* + + debian/dh_doclink -p$(p_loc) $(p_xbase) + debian/dh_rmemptydirs -p$(p_loc) + echo $(p_loc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +# ---------------------------------------------------------------------- + +$(binary_stamp)-testresults: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_tst) + dh_installdirs -p$(p_tst) $(docdir) + + debian/dh_doclink -p$(p_tst) $(p_xbase) + + mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test + echo "TEST COMPARE BEGIN" +ifeq ($(with_check),yes) + for i in test-summary testsuite-comparision; do \ + [ -f $$i ] || continue; \ + cp -p $$i $(d_tst)/$(docdir)/$(p_xbase)/$$i; \ + done +# more than one libgo.sum, avoid it + cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \ + $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ + ifeq ($(with_go),yes) + cp -p $(buildlibdir)/libgo/libgo.sum \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ + endif + ifeq (0,1) + cd $(builddir); \ + for i in $(CURDIR)/$(d_tst)/$(docdir)/$(p_xbase)/test/*.sum; do \ + b=$$(basename $$i); \ + if [ -f /usr/share/doc/$(p_xbase)/test/$$b.gz ]; then \ + zcat /usr/share/doc/$(p_xbase)/test/$$b.gz > /tmp/$$b; \ + if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \ + echo "$$b: OK"; \ + else \ + echo "$$b: FAILURES"; \ + fi; \ + rm -f /tmp/$$b; \ + else \ + echo "Test summary for $$b is not available"; \ + fi; \ + done + endif + if which xz 2>&1 >/dev/null; then \ + echo -n $(d_tst)/$(docdir)/$(p_xbase)/test/* \ + | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -7v; \ + fi +else + echo "Nothing to compare (testsuite not run)" + echo 'Test run disabled, reason: $(with_check)' \ + > $(d_tst)/$(docdir)/$(p_xbase)/test-run-disabled +endif + echo "TEST COMPARE END" + + debian/dh_rmemptydirs -p$(p_tst) + + echo $(p_tst) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_doc) + dh_installdirs -p$(p_doc) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_doc) \ + $(PF)/share/info/cpp{,internals}-* \ + $(PF)/share/info/gcc{,int}-* \ + $(PF)/share/info/lib{gomp,itm}-* \ + $(if $(with_qmath),$(PF)/share/info/libquadmath-*) + rm -f $(d_doc)/$(PF)/share/info/gccinst* + +ifeq ($(with_gomp),yes) + $(MAKE) -C $(buildlibdir)/libgomp stamp-build-info + cp -p $(buildlibdir)/libgomp/$(cmd_prefix)libgomp$(pkg_ver).info \ + $(d_doc)/$(PF)/share/info/libgomp$(pkg_ver).info +endif +ifeq ($(with_itm),yes) + -$(MAKE) -C $(buildlibdir)/libitm stamp-build-info + if [ -f $(buildlibdir)/libitm/libitm$(pkg_ver).info ]; then \ + cp -p $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info \ + $(d_doc)/$(PF)/share/info/; \ + fi +endif + + debian/dh_doclink -p$(p_doc) $(p_xbase) + dh_installdocs -p$(p_doc) html/gcc.html html/gccint.html +ifeq ($(with_gomp),yes) + cp -p html/libgomp.html $(d_doc)/usr/share/doc/$(p_doc)/ +endif +ifeq ($(with_itm),yes) + cp -p html/libitm.html $(d_doc)/usr/share/doc/$(p_doc)/ +endif +ifeq ($(with_qmath),yes) + cp -p html/libquadmath.html $(d_doc)/usr/share/doc/$(p_doc)/ +endif + rm -f $(d_doc)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_doc) + echo $(p_doc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-go.mk +++ gcc-7-7.3.0/debian/rules.d/binary-go.mk @@ -0,0 +1,338 @@ +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 \ + $(PF)/share/man/man1/$(cmd_prefix){go,gofmt}$(pkg_ver).1 +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go += \ + $(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1 +endif + +ifeq ($(with_standalone_go),yes) + + dirs_go += \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 + +# XXX: what about triarch mapping? + files_go += \ + $(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{cc1,collect2,lto1,lto-wrapper} \ + $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \ + $(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \ + $(header_files) \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + + ifeq ($(with_cc1),yes) + files_go += \ + $(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0} + endif + + ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go += \ + $(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1 + endif + + ifeq ($(biarch64),yes) + files_go += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarch32),yes) + files_go += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o} + endif + ifeq ($(biarchn32),yes) + files_go += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarchx32),yes) + files_go += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o} + endif +endif + +# ---------------------------------------------------------------------- +define __do_gccgo + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgo.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo '$(p_l) binary: unstripped-binary-or-object' \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + : # don't strip: https://gcc.gnu.org/ml/gcc-patches/2015-02/msg01722.html + : # dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst go$(GO_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst go$(GO_SONAME),atomic$(ATOMIC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +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) \ + $(if $(unstripped_exe),-X/go1) + dh_shlibdeps -p$(p_go) + echo $(p_go) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gccgo-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go_m) + dh_installdirs -p$(p_go_m) $(docdir) + + $(foreach flavour,$(flavours), \ + $(call do_go_dev,$(flavour),$(p_go_m))) + + debian/dh_doclink -p$(p_go_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_go_m) + dh_strip -p$(p_go_m) + dh_shlibdeps -p$(p_go_m) + echo $(p_go_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-go-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_god) + dh_installdirs -p$(p_god) \ + $(docdir)/$(p_xbase)/go \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_god) \ + $(PF)/share/info/gccgo* + + debian/dh_doclink -p$(p_god) $(p_xbase) + dh_installdocs -p$(p_god) + rm -f $(d_god)/$(docdir)/$(p_xbase)/copyright + cp -p html/gccgo.html $(d_god)/$(docdir)/$(p_xbase)/go/ + echo $(p_god) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-hppa64.mk +++ gcc-7-7.3.0/debian/rules.d/binary-hppa64.mk @@ -0,0 +1,39 @@ +arch_binaries := $(arch_binaries) hppa64 + +# ---------------------------------------------------------------------- +$(binary_stamp)-hppa64: $(install_hppa64_stamp) + dh_testdir + dh_testroot + +# dh_installdirs -p$(p_hppa64) + + rm -f $(d_hppa64)/usr/lib/libiberty.a + -find $(d_hppa64) ! -type d + + : # provide as and ld links + dh_link -p $(p_hppa64) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/ld + + debian/dh_doclink -p$(p_hppa64) $(p_xbase) + debian/dh_rmemptydirs -p$(p_hppa64) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_hppa64)/$(gcc_lexec_dir)/cc1 \ + $(d_hppa64)/$(gcc_lexec_dir)/collect2 \ + $(d_hppa64)/$(gcc_lexec_dir)/lto-wrapper \ + $(d_hppa64)/$(gcc_lexec_dir)/lto1 +endif + dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a + dh_shlibdeps -p$(p_hppa64) + + mkdir -p $(d_hppa64)/usr/share/lintian/overrides + cp -p debian/$(p_hppa64).overrides \ + $(d_hppa64)/usr/share/lintian/overrides/$(p_hppa64) + + echo $(p_hppa64) >> debian/arch_binaries + + touch $@ --- gcc-7-7.3.0.orig/debian/rules.d/binary-libasan.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libasan.mk @@ -0,0 +1,76 @@ +$(lib_binaries) += libasan +ifeq ($(with_lib64asan),yes) + $(lib_binaries) += lib64asan +endif +ifeq ($(with_lib32asan),yes) + $(lib_binaries) += lib32asan +endif +ifeq ($(with_libn32asan),yes) + $(lib_binaries) += libn32asan +endif +ifeq ($(with_libx32asan),yes) + $(lib_binaries) += libx32asan +endif +ifeq ($(with_libhfasan),yes) + $(lib_binaries) += libhfasan +endif +ifeq ($(with_libsfasan),yes) + $(lib_binaries) += libsfasan +endif + +define __do_asan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libasan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst asan$(ASAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst asan$(ASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_asan = $(call __do_asan,lib$(1)asan$(ASAN_SONAME),$(1)) + +$(binary_stamp)-libasan: $(install_stamp) + $(call do_asan,) + +$(binary_stamp)-lib64asan: $(install_stamp) + $(call do_asan,64) + +$(binary_stamp)-lib32asan: $(install_stamp) + $(call do_asan,32) + +$(binary_stamp)-libn32asan: $(install_stamp) + $(call do_asan,n32) + +$(binary_stamp)-libx32asan: $(install_stamp) + $(call do_asan,x32) + +$(binary_stamp)-libhfasan: $(install_dependencies) + $(call do_asan,hf) + +$(binary_stamp)-libsfasan: $(install_dependencies) + $(call do_asan,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libatomic.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libatomic.mk @@ -0,0 +1,68 @@ +$(lib_binaries) += libatomic +ifeq ($(with_lib64atomic),yes) + $(lib_binaries) += lib64atomic +endif +ifeq ($(with_lib32atomic),yes) + $(lib_binaries) += lib32atomic +endif +ifeq ($(with_libn32atomic),yes) + $(lib_binaries) += libn32atomic +endif +ifeq ($(with_libx32atomic),yes) + $(lib_binaries) += libx32atomic +endif +ifeq ($(with_libhfatomic),yes) + $(lib_binaries) += libhfatomic +endif +ifeq ($(with_libsfatomic),yes) + $(lib_binaries) += libsfatomic +endif + +define __do_atomic + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libatomic.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libatomic.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_atomic = $(call __do_atomic,lib$(1)atomic$(ATOMIC_SONAME),$(1)) + +$(binary_stamp)-libatomic: $(install_stamp) + $(call do_atomic,) + +$(binary_stamp)-lib64atomic: $(install_stamp) + $(call do_atomic,64) + +$(binary_stamp)-lib32atomic: $(install_stamp) + $(call do_atomic,32) + +$(binary_stamp)-libn32atomic: $(install_stamp) + $(call do_atomic,n32) + +$(binary_stamp)-libx32atomic: $(install_stamp) + $(call do_atomic,x32) + +$(binary_stamp)-libhfatomic: $(install_dependencies) + $(call do_atomic,hf) + +$(binary_stamp)-libsfatomic: $(install_dependencies) + $(call do_atomic,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libcc1.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libcc1.mk @@ -0,0 +1,31 @@ +ifeq ($(with_libcc1),yes) + ifneq ($(DEB_CROSS),yes) + arch_binaries := $(arch_binaries) libcc1 + endif +endif + +p_cc1 = libcc1-$(CC1_SONAME) +d_cc1 = debian/$(p_cc1) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libcc1: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cc1) + dh_installdirs -p$(p_cc1) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_cc1) \ + $(usr_lib)/libcc1.so.* + + debian/dh_doclink -p$(p_cc1) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cc1) + + dh_strip -p$(p_cc1) + dh_makeshlibs -p$(p_cc1) + dh_shlibdeps -p$(p_cc1) + echo $(p_cc1) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libcilkrts.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libcilkrts.mk @@ -0,0 +1,77 @@ +$(lib_binaries) += libcilkrts +ifeq ($(with_lib64cilkrts),yes) + $(lib_binaries) += lib64cilkrts +endif +ifeq ($(with_lib32cilkrts),yes) + $(lib_binaries) += lib32cilkrts +endif +ifeq ($(with_libn32cilkrts),yes) + $(lib_binaries) += libn32cilkrts +endif +ifeq ($(with_libx32cilkrts),yes) + $(lib_binaries) += libx32cilkrts +endif +ifeq ($(with_libhfcilkrts),yes) + $(lib_binaries) += libhfcilkrts +endif +ifeq ($(with_libsfcilkrts),yes) + $(lib_binaries) += libsfcilkrts +endif + +define __do_cilkrts + 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))/libcilkrts.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libcilkrts.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 cilkrts$(CILKRTS_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst cilkrts$(CILKRTS_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_cilkrts = $(call __do_cilkrts,lib$(1)cilkrts$(CILKRTS_SONAME),$(1)) + +$(binary_stamp)-libcilkrts: $(install_stamp) + $(call do_cilkrts,) + +$(binary_stamp)-lib64cilkrts: $(install_stamp) + $(call do_cilkrts,64) + +$(binary_stamp)-lib32cilkrts: $(install_stamp) + $(call do_cilkrts,32) + +$(binary_stamp)-libn32cilkrts: $(install_stamp) + $(call do_cilkrts,n32) + +$(binary_stamp)-libx32cilkrts: $(install_stamp) + $(call do_cilkrts,x32) + +$(binary_stamp)-libhfcilkrts: $(install_dependencies) + $(call do_cilkrts,hf) + +$(binary_stamp)-libsfcilkrts: $(install_dependencies) + $(call do_cilkrts,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libgcc.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libgcc.mk @@ -0,0 +1,385 @@ +ifeq ($(with_libgcc),yes) + $(lib_binaries) += libgcc +endif +ifeq ($(with_lib64gcc),yes) + $(lib_binaries) += lib64gcc +endif +ifeq ($(with_lib32gcc),yes) + $(lib_binaries) += lib32gcc +endif +ifeq ($(with_libn32gcc),yes) + $(lib_binaries) += libn32gcc +endif +ifeq ($(with_libx32gcc),yes) + $(lib_binaries) += libx32gcc +endif +ifeq ($(with_libhfgcc),yes) + $(lib_binaries) += libhfgcc +endif +ifeq ($(with_libsfgcc),yes) + $(lib_binaries) += libsfgcc +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_cdev),yes) + $(lib_binaries) += libgcc-dev + endif + ifeq ($(with_lib64gccdev),yes) + $(lib_binaries) += lib64gcc-dev + endif + ifeq ($(with_lib32gccdev),yes) + $(lib_binaries) += lib32gcc-dev + endif + ifeq ($(with_libn32gccdev),yes) + $(lib_binaries) += libn32gcc-dev + endif + ifeq ($(with_libx32gccdev),yes) + $(lib_binaries) += libx32gcc-dev + endif + ifeq ($(with_libhfgccdev),yes) + $(lib_binaries) += libhfgcc-dev + endif + ifeq ($(with_libsfgccdev),yes) + $(lib_binaries) += libsfgcc-dev + endif +endif + +header_files = \ + $(gcc_lib_dir)/include/std*.h \ + $(shell for h in \ + README features.h arm_fp16.h arm_neon.h arm_cmse.h loongson.h \ + {cpuid,decfloat,float,gcov,iso646,limits,mm3dnow,mm_malloc}.h \ + {ppu_intrinsics,paired,spu2vmx,vec_types,si2vmx}.h \ + {,a,b,e,i,n,p,s,t,w,x}mmintrin.h mmintrin-common.h \ + {abm,adx,avx,avx2,bmi,bmi2,f16c,fma,fma4,fxsr,ia32,}intrin.h \ + {lwp,lzcnt,popcnt,prfchw,rdseed,rtm,tbm,x86,xop,xsave{,opt},xtest,}intrin.h \ + {htm,htmxl,mwaitx,pku,sha,vec,sgx}intrin.h \ + avx512{bw,er,cd,dq,f,ifma,ifmavl,pf,vlbw,vbmi,vldq,vbmivl,vl}intrin.h \ + avx512{4fmaps,4vnniw,vpopcntdq}intrin.h \ + {clflushopt,clwb,clzero,pcommit,xsavec,xsaves}intrin.h \ + {arm_acle,unwind-arm-common,s390intrin}.h \ + msa.h \ + {cross-stdarg,syslimits,unwind,varargs}.h; \ + do \ + test -e $(d)/$(gcc_lib_dir)/include/$$h \ + && echo $(gcc_lib_dir)/include/$$h; \ + test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \ + && echo $(gcc_lib_dir)/include-fixed/$$h; \ + done) \ + $(shell for d in \ + asm bits cilk gnu linux sanitizer $(TARGET_ALIAS) \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS)); \ + do \ + test -e $(d)/$(gcc_lib_dir)/include/$$d \ + && echo $(gcc_lib_dir)/include/$$d; \ + test -e $(d)/$(gcc_lib_dir)/include-fixed/$$d \ + && echo $(gcc_lib_dir)/include-fixed/$$d; \ + done) + +ifeq ($(with_libssp),yes) + header_files += $(gcc_lib_dir)/include/ssp +endif +ifeq ($(with_gomp),yes) + header_files += $(gcc_lib_dir)/include/{omp,openacc}.h +endif +ifeq ($(with_qmath),yes) + header_files += $(gcc_lib_dir)/include/quadmath{,_weak}.h +endif + +ifeq ($(DEB_TARGET_ARCH),ia64) + header_files += $(gcc_lib_dir)/include/ia64intrin.h +endif + +ifeq ($(DEB_TARGET_ARCH),m68k) + header_files += $(gcc_lib_dir)/include/math-68881.h +endif + +ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),powerpc ppc64 ppc64el powerpcspe)) + header_files += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h,spe.h} +endif + +ifeq ($(DEB_TARGET_ARCH),tilegx) + header_files += $(gcc_lib_dir)/include/feedback.h +endif + +p_lgcc = libgcc$(GCC_SONAME)$(cross_lib_arch) +p_lgccdbg = libgcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lgccdev = libgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lgcc = debian/$(p_lgcc) +d_lgccdbg = debian/$(p_lgccdbg) +d_lgccdev = debian/$(p_lgccdev) + +p_l32gcc = lib32gcc$(GCC_SONAME)$(cross_lib_arch) +p_l32gccdbg = lib32gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l32gccdev = lib32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l32gcc = debian/$(p_l32gcc) +d_l32gccdbg = debian/$(p_l32gccdbg) +d_l32gccdev = debian/$(p_l32gccdev) + +p_l64gcc = lib64gcc$(GCC_SONAME)$(cross_lib_arch) +p_l64gccdbg = lib64gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l64gccdev = lib64gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l64gcc = debian/$(p_l64gcc) +d_l64gccdbg = debian/$(p_l64gccdbg) +d_l64gccdev = debian/$(p_l64gccdev) + +p_ln32gcc = libn32gcc$(GCC_SONAME)$(cross_lib_arch) +p_ln32gccdbg = libn32gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_ln32gccdev = libn32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_ln32gcc = debian/$(p_ln32gcc) +d_ln32gccdbg = debian/$(p_ln32gccdbg) +d_ln32gccdev = debian/$(p_ln32gccdev) + +p_lx32gcc = libx32gcc$(GCC_SONAME)$(cross_lib_arch) +p_lx32gccdbg = libx32gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lx32gccdev = libx32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lx32gcc = debian/$(p_lx32gcc) +d_lx32gccdbg = debian/$(p_lx32gccdbg) +d_lx32gccdev = debian/$(p_lx32gccdev) + +p_lhfgcc = libhfgcc$(GCC_SONAME)$(cross_lib_arch) +p_lhfgccdbg = libhfgcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lhfgccdev = libhfgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lhfgcc = debian/$(p_lhfgcc) +d_lhfgccdbg = debian/$(p_lhfgccdbg) +d_lhfgccdev = debian/$(p_lhfgccdev) + +p_lsfgcc = libsfgcc$(GCC_SONAME)$(cross_lib_arch) +p_lsfgccdbg = libsfgcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lsfgccdev = libsfgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lsfgcc = debian/$(p_lsfgcc) +d_lsfgccdbg = debian/$(p_lsfgccdbg) +d_lsfgccdev = debian/$(p_lsfgccdev) + +# __do_gcc_devels(flavour,package,todir,fromdir) +define __do_gcc_devels + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + test -n "$(2)" + rm -rf debian/$(2) + dh_installdirs -p$(2) $(docdir) #TODO + dh_installdirs -p$(2) $(3) + + $(call __do_gcc_devels2,$(1),$(2),$(3),$(4)) + + debian/dh_doclink -p$(2) $(p_lbase) + debian/dh_rmemptydirs -p$(2) + + dh_strip -p$(2) + $(cross_shlibdeps) dh_shlibdeps -p$(2) + $(call cross_mangle_substvars,$(2)) + echo $(2) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# __do_gcc_devels2(flavour,package,todir,fromdir) +define __do_gcc_devels2 +# stage1 builds static libgcc only + $(if $(filter $(DEB_STAGE),stage1),, + : # libgcc_s.so may be a linker script on some architectures + set -e; \ + if [ -h $(4)/libgcc_s.so ]; then \ + rm -f $(4)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + /$(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + /$(3)/libgcc_s.so.$(GCC_SONAME); \ + fi; \ + $(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \ + /$(gcc_lib_dir)/libgcc_s_$(1).so;) + ) + $(dh_compat2) dh_movefiles -p$(2) \ + $(3)/{libgcc*,libgcov.a,*.o} \ + $(if $(1),,$(header_files)) # Only move headers for the "main" package + + : # libbacktrace not installed by default + $(if $(filter yes, $(with_backtrace)), + if [ -f $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a \ + debian/$(2)/$(gcc_lib_dir)/$(1); \ + fi; \ + $(if $(1),, + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + fi + )) + + : # If building a flavour, add a lintian override + $(if $(1), + #TODO: use a file instead of a hacky echo + # bu do we want to use one override file (in the source package) per + # flavour or not since they are essentially the same? + mkdir -p debian/$(2)/usr/share/lintian/overrides + echo "$(2) binary: binary-from-other-architecture" \ + >> debian/$(2)/usr/share/lintian/overrides/$(2) + ) + $(if $(filter yes, $(with_lib$(1)gmath)), + $(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_libssp)), + $(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_ssp)), + mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/; + ) + $(if $(filter yes, $(with_gomp)), + $(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_itm)), + $(call install_gcc_lib,libitm,$(ITM_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_atomic)), + $(call install_gcc_lib,libatomic,$(ATOMIC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_asan)), + $(call install_gcc_lib,libasan,$(ASAN_SONAME),$(1),$(2)) + mv $(4)/libasan_preinit.o debian/$(2)/$(3)/; + ) + $(if $(1),,$(if $(filter yes, $(with_lsan)), + $(call install_gcc_lib,liblsan,$(LSAN_SONAME),$(1),$(2)) + )) + $(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) + dh_strip -p$(p_l) --dbg-package=$(p_d) + + # see Debian #533843 for the __aeabi symbol handling; this construct is + # just to include the symbols for dpkg versions older than 1.15.3 which + # didn't allow bypassing the symbol blacklist + $(if $(filter yes,$(with_shared_libgcc)), + $(if $(findstring gcc1,$(p_l)), \ + ln -sf libgcc.symbols debian/$(p_l).symbols \ + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) -p$(p_d) \ + -- -v$(DEB_LIBGCC_VERSION) -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)), + if head -1 $(d_l)/DEBIAN/symbols 2>/dev/null | grep -q '^lib'; then \ + grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \ + || cat debian/libgcc.symbols.aeabi \ + >> $(d_l)/DEBIAN/symbols; \ + fi + ) + ) + + $(if $(DEB_STAGE),, + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + ) + $(call cross_mangle_substvars,$(p_l)) + + $(if $(2),, # only for native + mkdir -p $(d_l)/usr/share/lintian/overrides + echo '$(p_l): package-name-doesnt-match-sonames' \ + > $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + echo $(p_l) $(p_d) >> debian/$(lib_binaries).epoch + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgcc = $(call __do_libgcc,lib$(1)gcc$(GCC_SONAME),$(1),$(2)) +# ---------------------------------------------------------------------- + +$(binary_stamp)-libgcc: $(install_dependencies) + $(call do_libgcc,,) + +$(binary_stamp)-lib64gcc: $(install_dependencies) + $(call do_libgcc,64,) + +$(binary_stamp)-lib32gcc: $(install_dependencies) + $(call do_libgcc,32,) + +$(binary_stamp)-libn32gcc: $(install_dependencies) + $(call do_libgcc,n32,) + +$(binary_stamp)-libx32gcc: $(install_dependencies) + $(call do_libgcc,x32,) + +$(binary_stamp)-libhfgcc: $(install_dependencies) + $(call do_libgcc,hf) + +$(binary_stamp)-libsfgcc: $(install_dependencies) + $(call do_libgcc,sf) + +$(binary_stamp)-libgcc-dev: $(install_dependencies) + $(call do_gcc_devels,) + +$(binary_stamp)-lib64gcc-dev: $(install_dependencies) + $(call do_gcc_devels,64) + +$(binary_stamp)-lib32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,32) + +$(binary_stamp)-libn32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,n32) + +$(binary_stamp)-libx32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,x32) + +$(binary_stamp)-libhfgcc-dev: $(install_dependencies) + $(call do_gcc_devels,hf) + +$(binary_stamp)-libsfgcc-dev: $(install_dependencies) + $(call do_gcc_devels,sf) + --- gcc-7-7.3.0.orig/debian/rules.d/binary-libgccjit.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libgccjit.mk @@ -0,0 +1,89 @@ +ifeq ($(with_libgccjit),yes) + $(lib_binaries) += libgccjit +endif + +$(lib_binaries) += libgccjitdev + +ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libgccjitdoc +endif + +p_jitlib = libgccjit$(GCCJIT_SONAME) +p_jitdbg = libgccjit$(GCCJIT_SONAME)-dbg +p_jitdev = libgccjit$(pkg_ver)-dev +p_jitdoc = libgccjit$(pkg_ver)-doc + +d_jitlib = debian/$(p_jitlib) +d_jitdev = debian/$(p_jitdev) +d_jitdbg = debian/$(p_jitdbg) +d_jitdoc = debian/$(p_jitdoc) + +$(binary_stamp)-libgccjit: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitlib) $(d_jitdbg) + dh_installdirs -p$(p_jitlib) \ + $(usr_lib) + dh_installdirs -p$(p_jitdbg) + + $(dh_compat2) dh_movefiles -p$(p_jitlib) \ + $(usr_lib)/libgccjit.so.* + rm -f $(d)/$(usr_lib)/libgccjit.so + + debian/dh_doclink -p$(p_jitlib) $(p_base) + debian/dh_doclink -p$(p_jitdbg) $(p_base) + + dh_strip -p$(p_jitlib) --dbg-package=$(p_jitdbg) + $(cross_makeshlibs) dh_makeshlibs -p$(p_jitlib) + $(call cross_mangle_shlibs,$(p_jitlib)) + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_jitlib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_jitlib)) + echo $(p_jitlib) $(p_jitdbg) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdev: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdev) + dh_installdirs -p$(p_jitdev) \ + $(usr_lib) \ + $(gcc_lib_dir)/include + + rm -f $(d)/$(usr_lib)/libgccjit.so + + $(dh_compat2) dh_movefiles -p$(p_jitdev) \ + $(gcc_lib_dir)/include/libgccjit*.h + dh_link -p$(p_jitdev) \ + $(usr_lib)/libgccjit.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgccjit.so + + debian/dh_doclink -p$(p_jitdev) $(p_base) + + echo $(p_jitdev) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdoc: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdoc) + dh_installdirs -p$(p_jitdoc) \ + $(PF)/share/info + + $(dh_compat2) dh_movefiles -p$(p_jitdoc) \ + $(PF)/share/info/libgccjit* + + debian/dh_doclink -p$(p_jitdoc) $(p_base) + echo $(p_jitdoc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ --- gcc-7-7.3.0.orig/debian/rules.d/binary-libgomp.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libgomp.mk @@ -0,0 +1,68 @@ +$(lib_binaries) += libgomp +ifeq ($(with_lib64gomp),yes) + $(lib_binaries) += lib64gomp +endif +ifeq ($(with_lib32gomp),yes) + $(lib_binaries) += lib32gomp +endif +ifeq ($(with_libn32gomp),yes) + $(lib_binaries) += libn32gomp +endif +ifeq ($(with_libx32gomp),yes) + $(lib_binaries) += libx32gomp +endif +ifeq ($(with_libhfgomp),yes) + $(lib_binaries) += libhfgomp +endif +ifeq ($(with_libsfgomp),yes) + $(lib_binaries) += libsfgomp +endif + +define __do_gomp + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libgomp.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst gomp$(GOMP_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1)) + +$(binary_stamp)-libgomp: $(install_stamp) + $(call do_gomp,) + +$(binary_stamp)-lib64gomp: $(install_stamp) + $(call do_gomp,64) + +$(binary_stamp)-lib32gomp: $(install_stamp) + $(call do_gomp,32) + +$(binary_stamp)-libn32gomp: $(install_stamp) + $(call do_gomp,n32) + +$(binary_stamp)-libx32gomp: $(install_stamp) + $(call do_gomp,x32) + +$(binary_stamp)-libhfgomp: $(install_dependencies) + $(call do_gomp,hf) + +$(binary_stamp)-libsfgomp: $(install_dependencies) + $(call do_gomp,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libhsail.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libhsail.mk @@ -0,0 +1,133 @@ +ifeq ($(with_libhsailrt),yes) + $(lib_binaries) += libhsail +endif +ifeq ($(with_brigdev),yes) + $(lib_binaries) += libhsail-dev +endif +#ifeq ($(with_lib64hsailrt),yes) +# $(lib_binaries) += lib64hsail +#endif +#ifeq ($(with_lib64hsailrtdev),yes) +# $(lib_binaries) += lib64hsail-dev +#endif +#ifeq ($(with_lib32hsailrt),yes) +# $(lib_binaries) += lib32hsail +#endif +#ifeq ($(with_lib32hsailrtdev),yes) +# $(lib_binaries) += lib32hsail-dev +#endif +#ifeq ($(with_libn32hsailrt),yes) +# $(lib_binaries) += libn32hsail +#endif +#ifeq ($(with_libn32hsailrtdev),yes) +# $(lib_binaries) += libn32hsail-dev +#endif +#ifeq ($(with_libx32hsailrt),yes) +# $(lib_binaries) += libx32hsail +#endif +#ifeq ($(with_libx32hsailrtdev),yes) +# $(lib_binaries) += libx32hsail-dev +#endif +#ifeq ($(with_libhfhsailrt),yes) +# $(lib_binaries) += libhfhsail +#endif +#ifeq ($(with_libhfhsailrtdev),yes) +# $(lib_binaries) += libhfhsail-dev +#endif +#ifeq ($(with_libsfhsailrt),yes) +# $(lib_binaries) += libsfhsail +#endif +#ifeq ($(with_libsfhsailrt-dev),yes) +# $(lib_binaries) += libsfhsail-dev +#endif + +define __do_hsail + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libhsail-rt.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libhsail-rt.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst hsail-rt$(HSAIL_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_hsail_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) +# $(dh_compat2) dh_movefiles -p$(p_l) + + $(call install_gcc_lib,libhsail-rt,$(HSAIL_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_hsail = $(call __do_hsail,lib$(1)hsail-rt$(HSAIL_SONAME),$(1)) +do_hsail_dev = $(call __do_hsail_dev,lib$(1)hsail-rt-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libhsail: $(install_stamp) + @echo XXXXXXXXXXXX XX $(HSAIL_SONAME) + $(call do_hsail,) + +$(binary_stamp)-lib64hsail: $(install_stamp) + $(call do_hsail,64) + +$(binary_stamp)-lib32hsail: $(install_stamp) + $(call do_hsail,32) + +$(binary_stamp)-libn32hsail: $(install_stamp) + $(call do_hsail,n32) + +$(binary_stamp)-libx32hsail: $(install_stamp) + $(call do_hsail,x32) + +$(binary_stamp)-libhfhsail: $(install_dependencies) + $(call do_hsail,hf) + +$(binary_stamp)-libsfhsail: $(install_dependencies) + $(call do_hsail,sf) + + +$(binary_stamp)-libhsail-dev: $(install_stamp) + $(call do_hsail_dev,) + +$(binary_stamp)-lib64hsail-dev: $(install_stamp) + $(call do_hsail_dev,64) + +$(binary_stamp)-lib32hsail-dev: $(install_stamp) + $(call do_hsail_dev,32) + +$(binary_stamp)-libx32hsail-dev: $(install_stamp) + $(call do_hsail_dev,x32) + +$(binary_stamp)-libn32hsail-dev: $(install_stamp) + $(call do_hsail_dev,n32) + +$(binary_stamp)-libhfhsail-dev: $(install_stamp) + $(call do_hsail_dev,hf) + +$(binary_stamp)-libsfhsail-dev: $(install_stamp) + $(call do_hsail_dev,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libitm.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libitm.mk @@ -0,0 +1,68 @@ +$(lib_binaries) += libitm +ifeq ($(with_lib64itm),yes) + $(lib_binaries) += lib64itm +endif +ifeq ($(with_lib32itm),yes) + $(lib_binaries) += lib32itm +endif +ifeq ($(with_libn32itm),yes) + $(lib_binaries) += libn32itm +endif +ifeq ($(with_libx32itm),yes) + $(lib_binaries) += libx32itm +endif +ifeq ($(with_libhfitm),yes) + $(lib_binaries) += libhfitm +endif +ifeq ($(with_libsfitm),yes) + $(lib_binaries) += libsfitm +endif + +define __do_itm + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libitm.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libitm.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_itm = $(call __do_itm,lib$(1)itm$(ITM_SONAME),$(1)) + +$(binary_stamp)-libitm: $(install_stamp) + $(call do_itm,) + +$(binary_stamp)-lib64itm: $(install_stamp) + $(call do_itm,64) + +$(binary_stamp)-lib32itm: $(install_stamp) + $(call do_itm,32) + +$(binary_stamp)-libn32itm: $(install_stamp) + $(call do_itm,n32) + +$(binary_stamp)-libx32itm: $(install_stamp) + $(call do_itm,x32) + +$(binary_stamp)-libhfitm: $(install_dependencies) + $(call do_itm,hf) + +$(binary_stamp)-libsfitm: $(install_dependencies) + $(call do_itm,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-liblsan.mk +++ gcc-7-7.3.0/debian/rules.d/binary-liblsan.mk @@ -0,0 +1,76 @@ +$(lib_binaries) += liblsan +ifeq ($(with_lib64lsan),yes) + $(lib_binaries) += lib64lsan +endif +ifeq ($(with_lib32lsan),yes) + $(lib_binaries) += lib32lsan +endif +ifeq ($(with_libn32lsan),yes) + $(lib_binaries) += libn32lsan +endif +ifeq ($(with_libx32lsan),yes) + $(lib_binaries) += libx32lsan +endif +ifeq ($(with_libhflsan),yes) + $(lib_binaries) += libhflsan +endif +ifeq ($(with_libsflsan),yes) + $(lib_binaries) += libsflsan +endif + +define __do_lsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/liblsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst lsan$(LSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst lsan$(LSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_lsan = $(call __do_lsan,lib$(1)lsan$(LSAN_SONAME),$(1)) + +$(binary_stamp)-liblsan: $(install_stamp) + $(call do_lsan,) + +$(binary_stamp)-lib64lsan: $(install_stamp) + $(call do_lsan,64) + +$(binary_stamp)-lib32lsan: $(install_stamp) + $(call do_lsan,32) + +$(binary_stamp)-libn32lsan: $(install_stamp) + $(call do_lsan,n32) + +$(binary_stamp)-libx32lsan: $(install_stamp) + $(call do_lsan,x32) + +$(binary_stamp)-libhflsan: $(install_dependencies) + $(call do_lsan,hf) + +$(binary_stamp)-libsflsan: $(install_dependencies) + $(call do_lsan,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libmpx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libmpx.mk @@ -0,0 +1,78 @@ +$(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) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf 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) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_mpx = $(call __do_mpx,lib$(1)mpx$(MPX_SONAME),$(1)) + +$(binary_stamp)-libmpx: $(install_stamp) + $(call do_mpx,) + +$(binary_stamp)-lib64mpx: $(install_stamp) + $(call do_mpx,64) + +$(binary_stamp)-lib32mpx: $(install_stamp) + $(call do_mpx,32) + +$(binary_stamp)-libn32mpx: $(install_stamp) + $(call do_mpx,n32) + +$(binary_stamp)-libx32mpx: $(install_stamp) + $(call do_mpx,x32) + +$(binary_stamp)-libhfmpx: $(install_dependencies) + $(call do_mpx,hf) + +$(binary_stamp)-libsfmpx: $(install_dependencies) + $(call do_mpx,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libobjc.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libobjc.mk @@ -0,0 +1,161 @@ +ifeq ($(with_libobjc),yes) + $(lib_binaries) += libobjc +endif +ifeq ($(with_objcdev),yes) + $(lib_binaries) += libobjc-dev +endif +ifeq ($(with_lib64objc),yes) + $(lib_binaries) += lib64objc +endif +ifeq ($(with_lib64objcdev),yes) + $(lib_binaries) += lib64objc-dev +endif +ifeq ($(with_lib32objc),yes) + $(lib_binaries) += lib32objc +endif +ifeq ($(with_lib32objcdev),yes) + $(lib_binaries) += lib32objc-dev +endif +ifeq ($(with_libn32objc),yes) + $(lib_binaries) += libn32objc +endif +ifeq ($(with_libn32objcdev),yes) + $(lib_binaries) += libn32objc-dev +endif +ifeq ($(with_libx32objc),yes) + $(lib_binaries) += libx32objc +endif +ifeq ($(with_libx32objcdev),yes) + $(lib_binaries) += libx32objc-dev +endif +ifeq ($(with_libhfobjc),yes) + $(lib_binaries) += libhfobjc +endif +ifeq ($(with_libhfobjcdev),yes) + $(lib_binaries) += libhfobjc-dev +endif +ifeq ($(with_libsfobjc),yes) + $(lib_binaries) += libsfobjc +endif +ifeq ($(with_libsfobjcdev),yes) + $(lib_binaries) += libsfobjc-dev +endif + +files_lobjcdev= \ + $(gcc_lib_dir)/include/objc + +files_lobjc = \ + $(usr_lib$(2))/libobjc.so.* +ifeq ($(with_objc_gc),yes) + files_lobjc += \ + $(usr_lib$(2))/libobjc_gc.so.* +endif + +define __do_libobjc + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjc) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + rm -f debian/$(p_l).symbols + $(if $(2), + ln -sf libobjc.symbols debian/$(p_l).symbols , + fgrep -v libobjc.symbols.gc debian/libobjc.symbols > debian/$(p_l).symbols + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst objc$(OBJC_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + +define __do_libobjc_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjcdev) + + $(call install_gcc_lib,libobjc,$(OBJC_SONAME),$(2),$(p_l)) + $(if $(filter yes,$(with_objc_gc)), + $(if $(2),, + dh_link -p$(p_l) \ + /$(usr_lib$(2))/libobjc_gc.so.$(OBJC_SONAME) \ + /$(gcc_lib_dir$(2))/libobjc_gc.so + )) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + + +# ---------------------------------------------------------------------- + +do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1)) +do_libobjc_dev = $(call __do_libobjc_dev,lib$(1)objc-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libobjc: $(install_stamp) + $(call do_libobjc,) + +$(binary_stamp)-lib64objc: $(install_stamp) + $(call do_libobjc,64) + +$(binary_stamp)-lib32objc: $(install_stamp) + $(call do_libobjc,32) + +$(binary_stamp)-libn32objc: $(install_stamp) + $(call do_libobjc,n32) + +$(binary_stamp)-libx32objc: $(install_stamp) + $(call do_libobjc,x32) + +$(binary_stamp)-libhfobjc: $(install_stamp) + $(call do_libobjc,hf) + +$(binary_stamp)-libsfobjc: $(install_stamp) + $(call do_libobjc,sf) + + +$(binary_stamp)-libobjc-dev: $(install_stamp) + $(call do_libobjc_dev,) + +$(binary_stamp)-lib64objc-dev: $(install_stamp) + $(call do_libobjc_dev,64) + +$(binary_stamp)-lib32objc-dev: $(install_stamp) + $(call do_libobjc_dev,32) + +$(binary_stamp)-libx32objc-dev: $(install_stamp) + $(call do_libobjc_dev,x32) + +$(binary_stamp)-libn32objc-dev: $(install_stamp) + $(call do_libobjc_dev,n32) + +$(binary_stamp)-libhfobjc-dev: $(install_stamp) + $(call do_libobjc_dev,hf) + +$(binary_stamp)-libsfobjc-dev: $(install_stamp) + $(call do_libobjc_dev,sf) + --- gcc-7-7.3.0.orig/debian/rules.d/binary-libquadmath.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libquadmath.mk @@ -0,0 +1,69 @@ +$(lib_binaries) += libqmath +ifeq ($(with_lib64qmath),yes) + $(lib_binaries) += lib64qmath +endif +ifeq ($(with_lib32qmath),yes) + $(lib_binaries) += lib32qmath +endif +ifeq ($(with_libn32qmath),yes) + $(lib_binaries) += libn32qmath +endif +ifeq ($(with_libx32qmath),yes) + $(lib_binaries) += libx32qmath +endif +ifeq ($(with_libhfqmath),yes) + $(lib_binaries) += libhfqmath +endif +ifeq ($(with_libsfqmath),yes) + $(lib_binaries) += libsfqmath +endif + +define __do_qmath + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libquadmath.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libquadmath.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_qmath = $(call __do_qmath,lib$(1)quadmath$(QUADMATH_SONAME),$(1)) + +$(binary_stamp)-libqmath: $(install_stamp) + $(call do_qmath,) + +$(binary_stamp)-lib64qmath: $(install_stamp) + $(call do_qmath,64) + +$(binary_stamp)-lib32qmath: $(install_stamp) + $(call do_qmath,32) + +$(binary_stamp)-libn32qmath: $(install_stamp) + $(call do_qmath,n32) + +$(binary_stamp)-libx32qmath: $(install_stamp) + $(call do_qmath,x32) + +$(binary_stamp)-libhfqmath: $(install_stamp) + $(call do_qmath,hf) + +$(binary_stamp)-libsfqmath: $(install_stamp) + $(call do_qmath,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libssp.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libssp.mk @@ -0,0 +1,155 @@ +arch_binaries := $(arch_binaries) libssp +ifeq ($(with_lib64ssp),yes) + arch_binaries := $(arch_binaries) lib64ssp +endif +ifeq ($(with_lib32ssp),yes) + arch_binaries := $(arch_binaries) lib32ssp +endif +ifeq ($(with_libn32ssp),yes) + arch_binaries := $(arch_binaries) libn32ssp +endif +ifeq ($(with_libx32ssp),yes) + arch_binaries := $(arch_binaries) libx32ssp +endif + +p_ssp = libssp$(SSP_SONAME) +p_ssp32 = lib32ssp$(SSP_SONAME) +p_ssp64 = lib64ssp$(SSP_SONAME) +p_sspx32 = libx32ssp$(SSP_SONAME) +p_sspd = libssp$(SSP_SONAME)-dev + +d_ssp = debian/$(p_ssp) +d_ssp32 = debian/$(p_ssp32) +d_ssp64 = debian/$(p_ssp64) +d_sspx32 = debian/$(p_sspx32) +d_sspd = debian/$(p_sspd) + +dirs_ssp = \ + $(docdir)/$(p_base) \ + $(PF)/$(libdir) +files_ssp = \ + $(PF)/$(libdir)/libssp.so.* + +dirs_sspd = \ + $(docdir) \ + $(PF)/include \ + $(PF)/$(libdir) +files_sspd = \ + $(gcc_lib_dir)/include/ssp \ + $(PF)/$(libdir)/libssp.{a,so} \ + $(PF)/$(libdir)/libssp_nonshared.a + +ifeq ($(with_lib32ssp),yes) + dirs_sspd += $(lib32) + files_sspd += $(lib32)/libssp.{a,so} + files_sspd += $(lib32)/libssp_nonshared.a +endif +ifeq ($(with_lib64ssp),yes) + dirs_sspd += $(PF)/lib64 + files_sspd += $(PF)/lib64/libssp.{a,so} + files_sspd += $(PF)/lib64/libssp_nonshared.a +endif + +$(binary_stamp)-libssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp) + dh_installdirs -p$(p_ssp) + + $(dh_compat2) dh_movefiles -p$(p_ssp) $(files_ssp) + debian/dh_doclink -p$(p_ssp) $(p_lbase) + + debian/dh_rmemptydirs -p$(p_ssp) + + dh_strip -p$(p_ssp) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp) -V '$(p_ssp) (>= $(DEB_SOVERSION))' + dh_shlibdeps -p$(p_ssp) + echo $(p_ssp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp64) + dh_installdirs -p$(p_ssp64) \ + $(PF)/lib64 + $(dh_compat2) dh_movefiles -p$(p_ssp64) \ + $(PF)/lib64/libssp.so.* + + debian/dh_doclink -p$(p_ssp64) $(p_lbase) + + dh_strip -p$(p_ssp64) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp64) -V '$(p_ssp64) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp64) + echo $(p_ssp64) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp32) + dh_installdirs -p$(p_ssp32) \ + $(lib32) + $(dh_compat2) dh_movefiles -p$(p_ssp32) \ + $(lib32)/libssp.so.* + + debian/dh_doclink -p$(p_ssp32) $(p_lbase) + + dh_strip -p$(p_ssp32) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp32) -V '$(p_ssp32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp32) + echo $(p_ssp32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libn32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspn32) + dh_installdirs -p$(p_sspn32) \ + $(PF)/$(libn32) + $(dh_compat2) dh_movefiles -p$(p_sspn32) \ + $(PF)/$(libn32)/libssp.so.* + + debian/dh_doclink -p$(p_sspn32) $(p_lbase) + + dh_strip -p$(p_sspn32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspn32) -V '$(p_sspn32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspn32) + echo $(p_sspn32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libx32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspx32) + dh_installdirs -p$(p_sspx32) \ + $(PF)/$(libx32) + $(dh_compat2) dh_movefiles -p$(p_sspx32) \ + $(PF)/$(libx32)/libssp.so.* + + debian/dh_doclink -p$(p_sspx32) $(p_lbase) + + dh_strip -p$(p_sspx32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspx32) -V '$(p_sspx32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspx32) + echo $(p_sspx32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libstdcxx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libstdcxx.mk @@ -0,0 +1,527 @@ +ifeq ($(with_libcxx),yes) + $(lib_binaries) += libstdcxx +endif +ifeq ($(with_lib64cxx),yes) + $(lib_binaries) += lib64stdcxx +endif +ifeq ($(with_lib32cxx),yes) + $(lib_binaries) += lib32stdcxx +endif +ifeq ($(with_libn32cxx),yes) + $(lib_binaries) += libn32stdcxx +endif +ifeq ($(with_libx32cxx),yes) + $(lib_binaries) += libx32stdcxx +endif +ifeq ($(with_libhfcxx),yes) + $(lib_binaries) += libhfstdcxx +endif +ifeq ($(with_libsfcxx),yes) + $(lib_binaries) += libsfstdcxx +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_lib64cxxdev),yes) + $(lib_binaries) += lib64stdcxx-dev + endif + ifeq ($(with_lib64cxxdbg),yes) + $(lib_binaries) += lib64stdcxxdbg + endif + ifeq ($(with_lib32cxxdev),yes) + $(lib_binaries) += lib32stdcxx-dev + endif + ifeq ($(with_lib32cxxdbg),yes) + $(lib_binaries) += lib32stdcxxdbg + endif + ifeq ($(with_libn32cxxdev),yes) + $(lib_binaries) += libn32stdcxx-dev + endif + ifeq ($(with_libn32cxxdbg),yes) + $(lib_binaries) += libn32stdcxxdbg + endif + ifeq ($(with_libx32cxxdev),yes) + $(lib_binaries) += libx32stdcxx-dev + endif + ifeq ($(with_libx32cxxdbg),yes) + $(lib_binaries) += libx32stdcxxdbg + endif + ifeq ($(with_libhfcxxdev),yes) + $(lib_binaries) += libhfstdcxx-dev + endif + ifeq ($(with_libhfcxxdbg),yes) + $(lib_binaries) += libhfstdcxxdbg + endif + ifeq ($(with_libsfcxxdev),yes) + $(lib_binaries) += libsfstdcxx-dev + endif + ifeq ($(with_libsfcxxdbg),yes) + $(lib_binaries) += libsfstdcxxdbg + endif + + ifeq ($(with_cxxdev),yes) + $(lib_binaries) += libstdcxx-dev + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libstdcxx-doc + endif + endif +endif + +libstdc_ext = -$(BASE_VERSION) + +p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib64 = lib64stdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib32 = lib32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libn32= libn32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libx32= libx32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libhf = libhfstdc++$(CXX_SONAME)$(cross_lib_arch) +p_libsf = libsfstdc++$(CXX_SONAME)$(cross_lib_arch) +p_dev = libstdc++$(libstdc_ext)-dev$(cross_lib_arch) +p_pic = libstdc++$(libstdc_ext)-pic$(cross_lib_arch) +p_dbg = libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg64 = lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg32 = lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgx32= libx32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbghf = libhfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgsf = libsfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_libd = libstdc++$(libstdc_ext)-doc + +d_lib = debian/$(p_lib) +d_lib64 = debian/$(p_lib64) +d_lib32 = debian/$(p_lib32) +d_libn32= debian/$(p_libn32) +d_libx32= debian/$(p_libx32) +d_libhf = debian/$(p_libhf) +d_libsf = debian/$(p_libsf) +d_dev = debian/$(p_dev) +d_pic = debian/$(p_pic) +d_dbg = debian/$(p_dbg) +d_dbg64 = debian/$(p_dbg64) +d_dbg32 = debian/$(p_dbg32) +d_dbghf = debian/$(p_dbghf) +d_dbgsf = debian/$(p_dbgsf) +d_libd = debian/$(p_libd) + +dirs_dev = \ + $(docdir)/$(p_base)/C++ \ + $(usr_lib) \ + $(gcc_lib_dir)/include \ + $(PFL)/include/c++ + +files_dev = \ + $(PFL)/include/c++/$(BASE_VERSION) \ + $(gcc_lib_dir)/libstdc++.{a,so} \ + $(gcc_lib_dir)/libsupc++.a \ + $(gcc_lib_dir)/libstdc++fs.a + +ifeq ($(with_multiarch_cxxheaders),yes) + dirs_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION) + files_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/{bits,ext} +endif + +dirs_dbg = \ + $(docdir) \ + $(PF)/lib/debug/$(usr_lib) \ + $(usr_lib)/debug \ + $(PF)/share/gdb/auto-load/$(usr_lib)/debug \ + $(gcc_lib_dir) +files_dbg = \ + $(usr_lib)/debug/libstdc++.{a,so*} \ + $(usr_lib)/debug/libstdc++fs.a + +dirs_pic = \ + $(docdir) \ + $(gcc_lib_dir) +files_pic = \ + $(gcc_lib_dir)/libstdc++_pic.a + +# ---------------------------------------------------------------------- + +gxx_baseline_dir = $(shell \ + sed -n '/^baseline_dir *=/s,.*= *\(.*\)$$,\1,p' \ + $(buildlibdir)/libstdc++-v3/testsuite/Makefile) +gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt + +debian/README.libstdc++-baseline: + cat debian/README.libstdc++-baseline.in \ + > debian/README.libstdc++-baseline + + baseline_name=`basename $(gxx_baseline_dir)`; \ + baseline_parentdir=`dirname $(gxx_baseline_dir)`; \ + compat_baseline_name=""; \ + if [ -f "$(gxx_baseline_file)" ]; then \ + ( \ + echo "A baseline file for $$baseline_name was found."; \ + echo "Running the check-abi script ..."; \ + echo ""; \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \ + check-abi; \ + ) >> debian/README.libstdc++-baseline; \ + else \ + ( \ + echo "No baseline file found for $$baseline_name."; \ + echo "Generating a new baseline file ..."; \ + echo ""; \ + ) >> debian/README.libstdc++-baseline; \ + mkdir -p $(gxx_baseline_dir); \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \ + if [ -f $(gxx_baseline_file) ]; then \ + cat $(gxx_baseline_file); \ + else \ + cat $$(find $(buildlibdir)/libstdc++-v3 $(srcdir)/libstdc++-v3 -name '.new') || true; \ + fi >> debian/README.libstdc++-baseline; \ + fi + +# ---------------------------------------------------------------------- +# FIXME: see #792204, libstdc++ symbols on sparc64, for now ignore errors +# for the 32bit multilib build + +define __do_libstdcxx + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + + dh_installdirs -p$(p_l) \ + $(docdir) \ + $(usr_lib$(2)) \ + $(PF)/share/gdb/auto-load/$(usr_lib$(2)) + + $(if $(DEB_CROSS),,$(if $(2),, + dh_installdirs -p$(p_l) \ + $(PF)/share/gcc-$(BASE_VERSION)/python + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(PF)/share/gcc-$(BASE_VERSION)/python/libstdcxx + )) + cp -p $(d)/$(usr_lib$(2))/libstdc++.so.*.py \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib$(2))'," \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/libstdc++.so.*.py + + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_l)/$(usr_lib$(2))/. + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch)) + + $(if $(filter $(DEB_TARGET_ARCH), armel hppa sparc64), \ + -$(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + @echo "FIXME: libstdc++ not feature complete (https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html)", \ + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + ) + + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dbg + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_d) + dh_installdirs -p$(p_d) \ + $(PF)/lib/debug/$(usr_lib$(2)) \ + $(usr_lib$(2)) + + $(if $(filter yes,$(with_lib$(2)cxx)), + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_d)/$(usr_lib$(2))/.; + dh_strip -p$(p_d) --keep-debug; + $(if $(filter yes,$(with_common_libs)),, # if !with_common_libs + # remove the debug symbols for libstdc++ + # built by a newer version of GCC + rm -rf $(d_d)/usr/lib/debug/$(PF); + ) + rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9] + ) + + $(if $(filter yes,$(with_cxx_debug)), + mkdir -p $(d_d)/$(usr_lib$(2))/debug; + mv $(d)/$(usr_lib$(2))/debug/libstdc++* $(d_d)/$(usr_lib$(2))/debug; + rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a + ) + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \ + $(call shlibdirs_to_search,$(subst $(pkg_ver),,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l))),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_d)) + + debian/dh_doclink -p$(p_d) $(p_lbase) + debian/dh_rmemptydirs -p$(p_d) + echo $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib$(2))/libstdc++.a $(d)/$(usr_lib$(2))/libstdc++fs.a $(d)/$(usr_lib$(2))/libsupc++.a \ + $(d)/$(gcc_lib_dir$(2))/ + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libstdc++.a \ + $(gcc_lib_dir$(2))/libstdc++fs.a \ + $(gcc_lib_dir$(2))/libsupc++.a \ + $(if $(with_multiarch_cxxheaders),$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/$(2)) + $(call install_gcc_lib,libstdc++,$(CXX_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + dh_strip -p$(p_l) + dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1)) +do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1)) +do_libstdcxx_dev = $(call __do_libstdcxx_dev,lib$(1)stdc++-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libstdcxx: $(install_stamp) + $(call do_libstdcxx,) + +$(binary_stamp)-lib64stdcxx: $(install_stamp) + $(call do_libstdcxx,64) + +$(binary_stamp)-lib32stdcxx: $(install_stamp) + $(call do_libstdcxx,32) + +$(binary_stamp)-libn32stdcxx: $(install_stamp) + $(call do_libstdcxx,n32) + +$(binary_stamp)-libx32stdcxx: $(install_stamp) + $(call do_libstdcxx,x32) + +$(binary_stamp)-libhfstdcxx: $(install_stamp) + $(call do_libstdcxx,hf) + +$(binary_stamp)-libsfstdcxx: $(install_stamp) + $(call do_libstdcxx,sf) + +$(binary_stamp)-lib64stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,64) + +$(binary_stamp)-lib32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,32) + +$(binary_stamp)-libn32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,n32) + +$(binary_stamp)-libx32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,x32) + +$(binary_stamp)-libhfstdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,hf) + +$(binary_stamp)-libsfstdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,sf) + +$(binary_stamp)-lib64stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,64) + +$(binary_stamp)-lib32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,32) + +$(binary_stamp)-libn32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,n32) + +$(binary_stamp)-libx32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,x32) + +$(binary_stamp)-libhfstdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,hf) + +$(binary_stamp)-libsfstdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,sf) + +# ---------------------------------------------------------------------- +libcxxdev_deps = $(install_stamp) +ifeq ($(with_libcxx),yes) + libcxxdev_deps += $(binary_stamp)-libstdcxx +endif +ifeq ($(with_check),yes) + libcxxdev_deps += debian/README.libstdc++-baseline +endif +$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_dev) $(d_pic) + dh_installdirs -p$(p_dev) $(dirs_dev) + dh_installdirs -p$(p_pic) $(dirs_pic) + dh_installdirs -p$(p_dbg) $(dirs_dbg) + + : # - correct libstdc++-v3 file locations + mv $(d)/$(usr_lib)/libsupc++.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++fs.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/ + ln -sf ../../../$(DEB_TARGET_GNU_TYPE)/libstdc++.so.$(CXX_SONAME) \ + $(d)/$(gcc_lib_dir)/libstdc++.so + mv $(d)/$(usr_lib)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/ + + rm -f $(d)/$(usr_lib)/debug/libstdc++_pic.a + rm -f $(d)/$(usr_lib64)/debug/libstdc++_pic.a + + : # remove precompiled headers + -find $(d) -type d -name '*.gch' | xargs rm -rf + + for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \ + if [ -d $$i ]; then mv $$i $$i-gnu; fi; \ + done + + $(dh_compat2) dh_movefiles -p$(p_dev) $(files_dev) + $(dh_compat2) dh_movefiles -p$(p_pic) $(files_pic) +ifeq ($(with_cxx_debug),yes) + $(dh_compat2) dh_movefiles -p$(p_dbg) $(files_dbg) +endif + + dh_link -p$(p_dev) \ + /$(usr_lib)/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/libstdc++.so \ + /$(PFL)/include/c++/$(BASE_VERSION) /$(PFL)/include/c++/$(GCC_VERSION) +ifeq ($(with_multiarch_cxxheaders),yes) + dh_link -p$(p_dev) \ + /$(PFL)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION) \ + /$(PFL)/include/$(DEB_TARGET_MULTIARCH)/c++/$(GCC_VERSION) +endif + + debian/dh_doclink -p$(p_dev) $(p_lbase) + debian/dh_doclink -p$(p_pic) $(p_lbase) + debian/dh_doclink -p$(p_dbg) $(p_lbase) + cp -p $(srcdir)/libstdc++-v3/ChangeLog \ + $(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++ +ifeq ($(with_check),yes) + cp -p debian/README.libstdc++-baseline \ + $(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline.$(DEB_TARGET_ARCH) + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt.$(DEB_TARGET_ARCH); \ + fi +endif + cp -p $(buildlibdir)/libstdc++-v3/src/libstdc++-symbols.ver \ + $(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map + + cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib)'," \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/libstdc++.so.*.py + +ifeq ($(with_libcxx),yes) + cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \ + $(d_dbg)/$(usr_lib)/ + dh_strip -p$(p_dbg) --keep-debug + rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9] +endif + + dh_strip -p$(p_dev) --dbg-package=$(p_dbg) +ifneq ($(with_common_libs),yes) + : # remove the debug symbols for libstdc++ built by a newer version of GCC + rm -rf $(d_dbg)/usr/lib/debug/$(PF) +endif + dh_strip -p$(p_pic) + +ifeq ($(with_cxxdev),yes) + debian/dh_rmemptydirs -p$(p_dev) + debian/dh_rmemptydirs -p$(p_pic) + debian/dh_rmemptydirs -p$(p_dbg) +endif + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ + $(call shlibdirs_to_search,,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_dbg)) + echo $(p_dev) $(p_pic) $(p_dbg) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/doc + +doxygen-docs: $(build_doxygen_stamp) +$(build_doxygen_stamp): $(build_stamp) + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-html-doxygen + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-man-doxygen + -find $(doxygen_doc_dir)/doxygen/html -name 'struct*' -empty | xargs rm -f + + touch $@ + +$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_libd) + dh_installdirs -p$(p_libd) \ + $(docdir)/$(p_base)/libstdc++ \ + $(PF)/share/man + +# debian/dh_doclink -p$(p_libd) $(p_base) + dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd) + dh_installdocs -p$(p_libd) + rm -f $(d_libd)/$(docdir)/$(p_base)/copyright + + cp -a $(srcdir)/libstdc++-v3/doc/html/* \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/. + cp -a $(doxygen_doc_dir)/doxygen/html \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/user + find $(d_libd)/$(docdir)/$(p_base)/libstdc++ -name '*.md5' \ + | xargs -r rm -f + +# Broken docs ... see #766499 +# rm -f $(d_libd)/$(docdir)/$(p_base)/libstdc++/*/jquery.js +# dh_link -p$(p_libd) \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/html/jquery.js \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/user/jquery.js + + : FIXME: depending on the doxygen version + if [ -d $(doxygen_doc_dir)/doxygen/man/man3cxx ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3cxx \ + $(d_libd)/$(PF)/share/man/man3; \ + if [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3/* \ + $(d_libd)/$(PF)/share/man/man3/; \ + fi; \ + elif [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3 \ + $(d_libd)/$(PF)/share/man/man3; \ + fi + + for i in $(d_libd)/$(PF)/share/man/man3/*.3; do \ + [ -f $${i} ] || continue; \ + mv $${i} $${i}cxx; \ + done + rm -f $(d_libd)/$(PF)/share/man/man3/todo.3* + + mkdir -p $(d_libd)/usr/share/lintian/overrides + cp -p debian/$(p_libd).overrides \ + $(d_libd)/usr/share/lintian/overrides/$(p_libd) + + echo $(p_libd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libtsan.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libtsan.mk @@ -0,0 +1,80 @@ +$(lib_binaries) += libtsan +ifeq (0,1) +ifeq ($(with_lib64tsan),yes) + $(lib_binaries) += lib64tsan +endif +ifeq ($(with_lib32tsan),yes) + $(lib_binaries) += lib32tsan +endif +ifeq ($(with_libn32tsan),yes) + $(lib_binaries) += libn32tsan +endif +ifeq ($(with_libx32tsan),yes) + $(lib_binaries) += libx32tsan +endif +ifeq ($(with_libhftsan),yes) + $(lib_binaries) += libhftsan +endif +ifeq ($(with_libsftsan),yes) + $(lib_binaries) += libsftsan +endif +endif + +define __do_tsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libtsan.so.* \ + $(usr_lib$(2))/libtsan_preinit.o + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst tsan$(TSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst tsan$(TSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_tsan = $(call __do_tsan,lib$(1)tsan$(TSAN_SONAME),$(1)) + +$(binary_stamp)-libtsan: $(install_stamp) + $(call do_tsan,) + +$(binary_stamp)-lib64tsan: $(install_stamp) + $(call do_tsan,64) + +$(binary_stamp)-lib32tsan: $(install_stamp) + $(call do_tsan,32) + +$(binary_stamp)-libn32tsan: $(install_stamp) + $(call do_tsan,n32) + +$(binary_stamp)-libx32tsan: $(install_stamp) + $(call do_tsan,x32) + +$(binary_stamp)-libhftsan: $(install_dependencies) + $(call do_tsan,hf) + +$(binary_stamp)-libsftsan: $(install_dependencies) + $(call do_tsan,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libubsan.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libubsan.mk @@ -0,0 +1,76 @@ +$(lib_binaries) += libubsan +ifeq ($(with_lib64ubsan),yes) + $(lib_binaries) += lib64ubsan +endif +ifeq ($(with_lib32ubsan),yes) + $(lib_binaries) += lib32ubsan +endif +ifeq ($(with_libn32ubsan),yes) + $(lib_binaries) += libn32ubsan +endif +ifeq ($(with_libx32ubsan),yes) + $(lib_binaries) += libx32ubsan +endif +ifeq ($(with_libhfubsan),yes) + $(lib_binaries) += libhfubsan +endif +ifeq ($(with_libsfubsan),yes) + $(lib_binaries) += libsfubsan +endif + +define __do_ubsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libubsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst ubsan$(UBSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst ubsan$(UBSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_ubsan = $(call __do_ubsan,lib$(1)ubsan$(UBSAN_SONAME),$(1)) + +$(binary_stamp)-libubsan: $(install_stamp) + $(call do_ubsan,) + +$(binary_stamp)-lib64ubsan: $(install_stamp) + $(call do_ubsan,64) + +$(binary_stamp)-lib32ubsan: $(install_stamp) + $(call do_ubsan,32) + +$(binary_stamp)-libn32ubsan: $(install_stamp) + $(call do_ubsan,n32) + +$(binary_stamp)-libx32ubsan: $(install_stamp) + $(call do_ubsan,x32) + +$(binary_stamp)-libhfubsan: $(install_dependencies) + $(call do_ubsan,hf) + +$(binary_stamp)-libsfubsan: $(install_dependencies) + $(call do_ubsan,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-libvtv.mk +++ gcc-7-7.3.0/debian/rules.d/binary-libvtv.mk @@ -0,0 +1,76 @@ +$(lib_binaries) += libvtv +ifeq ($(with_lib64vtv),yes) + $(lib_binaries) += lib64vtv +endif +ifeq ($(with_lib32vtv),yes) + $(lib_binaries) += lib32vtv +endif +ifeq ($(with_libn32vtv),yes) + $(lib_binaries) += libn32vtv +endif +ifeq ($(with_libx32vtv),yes) + $(lib_binaries) += libx32vtv +endif +ifeq ($(with_libhfvtv),yes) + $(lib_binaries) += libhfvtv +endif +ifeq ($(with_libsfvtv),yes) + $(lib_binaries) += libsfvtv +endif + +define __do_vtv + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libvtv.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst vtv$(VTV_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst vtv$(VTV_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_vtv = $(call __do_vtv,lib$(1)vtv$(VTV_SONAME),$(1)) + +$(binary_stamp)-libvtv: $(install_stamp) + $(call do_vtv,) + +$(binary_stamp)-lib64vtv: $(install_stamp) + $(call do_vtv,64) + +$(binary_stamp)-lib32vtv: $(install_stamp) + $(call do_vtv,32) + +$(binary_stamp)-libn32vtv: $(install_stamp) + $(call do_vtv,n32) + +$(binary_stamp)-libx32vtv: $(install_stamp) + $(call do_vtv,x32) + +$(binary_stamp)-libhfvtv: $(install_dependencies) + $(call do_vtv,hf) + +$(binary_stamp)-libsfvtv: $(install_dependencies) + $(call do_vtv,sf) --- gcc-7-7.3.0.orig/debian/rules.d/binary-neon.mk +++ gcc-7-7.3.0/debian/rules.d/binary-neon.mk @@ -0,0 +1,47 @@ +arch_binaries := $(arch_binaries) neon + +p_nlgcc = libgcc$(GCC_SONAME)-neon +p_ngomp = libgomp$(GOMP_SONAME)-neon +p_nlobjc = libobjc$(OBJC_SONAME)-neon +p_nflib = libgfortran$(FORTRAN_SONAME)-neon +p_nlcxx = libstdc++$(CXX_SONAME)-neon + +d_nlgcc = debian/$(p_nlgcc) +d_ngomp = debian/$(p_ngomp) +d_nlobjc = debian/$(p_nlobjc) +d_nflib = debian/$(p_nflib) +d_nlcxx = debian/$(p_nlcxx) + +neon_pkgs = -p$(p_nlgcc) -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx) + +# ---------------------------------------------------------------------- +$(binary_stamp)-neon: $(install_neon_stamp) + dh_testdir + dh_testroot + + dh_installdirs -p$(p_nlgcc) \ + $(PF)/share/doc \ + lib/neon + dh_installdirs -A -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx) \ + $(PF)/share/doc \ + $(PF)/lib/neon + + cp -a $(d_neon)/$(PF)/lib/libgcc*.so.* \ + $(d_nlgcc)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libgomp*.so.* \ + $(d_ngomp)/$(PF)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libobjc*.so.* \ + $(d_nlobjc)/$(PF)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libgfortran*.so.* \ + $(d_nflib)/$(PF)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libstdc++*.so.* \ + $(d_nlcxx)/$(PF)/lib/neon/ + + for p in $(p_nlgcc) $(p_ngomp) $(p_nlobjc) $(p_nflib) $(p_nlcxx); do \ + ln -s ../$(p_base) debian/$$p/usr/share/doc/$$p; \ + done + dh_strip $(neon_pkgs) + dh_shlibdeps $(neon_pkgs) + echo $(p_nlgcc) $(p_ngomp) $(p_nlobjc) $(p_nflib) $(p_nlcxx) >> debian/arch_binaries + + touch $@ --- gcc-7-7.3.0.orig/debian/rules.d/binary-nof.mk +++ gcc-7-7.3.0/debian/rules.d/binary-nof.mk @@ -0,0 +1,51 @@ +arch_binaries := $(arch_binaries) nof + +p_nof = gcc$(pkg_ver)-nof +d_nof = debian/$(p_nof) + +dirs_nof = \ + $(docdir) \ + $(usr_lib)/nof +ifeq ($(with_cdev),yes) + dirs_nof += \ + $(gcc_lib_dir)/nof +endif + +ifeq ($(with_cdev),yes) + files_nof = \ + $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(gcc_lib_dir)/libgcc_s_nof.so \ + $(usr_lib)/nof \ + $(gcc_lib_dir)/nof +else + files_nof = \ + $(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-nof: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libgcc_dir)/. + rm -f $(d)/$(usr_lib)/libgcc_s_nof.so + ln -sf $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(d)/$(gcc_lib_dir)/libgcc_s_nof.so + + rm -rf $(d_nof) + dh_installdirs -p$(p_nof) $(dirs_nof) + $(dh_compat2) dh_movefiles -p$(p_nof) $(files_nof) + debian/dh_doclink -p$(p_nof) $(p_xbase) + dh_strip -p$(p_nof) + dh_shlibdeps -p$(p_nof) + + dh_makeshlibs $(ldconfig_arg) -p$(p_nof) + : # Only keep the shlibs file for the libgcc_s_nof library + fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \ + > debian/$(p_nof)/DEBIAN/shlibs.tmp + mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs + + echo $(p_nof) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-nvptx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-nvptx.mk @@ -0,0 +1,88 @@ +ifeq ($(with_offload_nvptx),yes) + arch_binaries := $(arch_binaries) nvptx + ifeq ($(with_common_libs),yes) + arch_binaries := $(arch_binaries) nvptx-plugin + endif +endif + +p_nvptx = gcc$(pkg_ver)-offload-nvptx +d_nvptx = debian/$(p_nvptx) + +p_pl_nvptx = libgomp-plugin-nvptx1 +d_pl_nvptx = debian/$(p_pl_nvptx) + +dirs_nvptx = \ + $(docdir)/$(p_xbase)/ \ + $(PF)/bin \ + $(gcc_lexec_dir)/accel + +files_nvptx = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver) \ + $(gcc_lexec_dir)/accel/nvptx-none + +# not needed: libs moved, headers not needed for lto1 +# $(PF)/nvptx-none + +# are these needed? +# $(PF)/lib/gcc/nvptx-none/$(versiondir)/{include,finclude,mgomp} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_nvptx += \ + $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver).1 +endif + +$(binary_stamp)-nvptx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_nvptx) + dh_installdirs -p$(p_nvptx) $(dirs_nvptx) + $(dh_compat2) dh_movefiles --sourcedir=$(d)-nvptx -p$(p_nvptx) \ + $(files_nvptx) + + mkdir -p $(d_nvptx)/usr/share/lintian/overrides + echo '$(p_nvptx) binary: hardening-no-pie' \ + > $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_nvptx) binary: binary-without-manpage' \ + >> $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +endif + + debian/dh_doclink -p$(p_nvptx) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_nvptx) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_nvptx)/$(gcc_lexec_dir)/accel/nvptx-none/{collect2,lto1,lto-wrapper,mkoffload} +endif + dh_strip -p$(p_nvptx) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_nvptx) + echo $(p_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-nvptx-plugin: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pl_nvptx) + dh_installdirs -p$(p_pl_nvptx) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_pl_nvptx) \ + $(usr_lib)/libgomp-plugin-nvptx.so.* + + debian/dh_doclink -p$(p_pl_nvptx) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pl_nvptx) + + dh_strip -p$(p_pl_nvptx) + dh_makeshlibs -p$(p_pl_nvptx) + dh_shlibdeps -p$(p_pl_nvptx) + echo $(p_pl_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-objc.mk +++ gcc-7-7.3.0/debian/rules.d/binary-objc.mk @@ -0,0 +1,73 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) objc-multi + endif + arch_binaries := $(arch_binaries) objc +endif + +p_objc = gobjc$(pkg_ver)$(cross_bin_arch) +d_objc = debian/$(p_objc) + +p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch) +d_objc_m= debian/$(p_objc_m) + +dirs_objc = \ + $(docdir)/$(p_xbase)/ObjC \ + $(gcc_lexec_dir) + +files_objc = \ + $(gcc_lexec_dir)/cc1obj + +$(binary_stamp)-objc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc) + dh_installdirs -p$(p_objc) $(dirs_objc) + $(dh_compat2) dh_movefiles -p$(p_objc) $(files_objc) + + cp -p $(srcdir)/libobjc/{README*,THREADS*} \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/. + + cp -p $(srcdir)/libobjc/ChangeLog \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc + + mkdir -p $(d_objc)/usr/share/lintian/overrides + echo '$(p_objc) binary: hardening-no-pie' \ + > $(d_objc)/usr/share/lintian/overrides/$(p_objc) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_objc) binary: binary-without-manpage' \ + >> $(d_objc)/usr/share/lintian/overrides/$(p_objc) +endif + + debian/dh_doclink -p$(p_objc) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_objc) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objc)/$(gcc_lexec_dir)/cc1obj +endif + dh_strip -p$(p_objc) \ + $(if $(unstripped_exe),-X/cc1obj) + dh_shlibdeps -p$(p_objc) + echo $(p_objc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc_m) + dh_installdirs -p$(p_objc_m) $(docdir) + + debian/dh_doclink -p$(p_objc_m) $(p_xbase) + + dh_strip -p$(p_objc_m) + dh_shlibdeps -p$(p_objc_m) + echo $(p_objc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-objcxx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-objcxx.mk @@ -0,0 +1,66 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) objcxx-multi + endif + arch_binaries := $(arch_binaries) objcxx +endif + +p_objcx = gobjc++$(pkg_ver)$(cross_bin_arch) +d_objcx = debian/$(p_objcx) + +p_objcx_m = gobjc++$(pkg_ver)-multilib$(cross_bin_arch) +d_objcx_m = debian/$(p_objcx_m) + +dirs_objcx = \ + $(docdir)/$(p_xbase)/Obj-C++ \ + $(gcc_lexec_dir) + +files_objcx = \ + $(gcc_lexec_dir)/cc1objplus + +$(binary_stamp)-objcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objcx) + dh_installdirs -p$(p_objcx) $(dirs_objcx) + $(dh_compat2) dh_movefiles -p$(p_objcx) $(files_objcx) + + debian/dh_doclink -p$(p_objcx) $(p_xbase) + cp -p $(srcdir)/gcc/objcp/ChangeLog \ + $(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog + + mkdir -p $(d_objcx)/usr/share/lintian/overrides + echo '$(p_objcx) binary: hardening-no-pie' \ + > $(d_objcx)/usr/share/lintian/overrides/$(p_objcx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_objcx) binary: binary-without-manpage' \ + >> $(d_objcx)/usr/share/lintian/overrides/$(p_objcx) +endif + + debian/dh_rmemptydirs -p$(p_objcx) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objcx)/$(gcc_lexec_dir)/cc1objplus +endif + dh_strip -p$(p_objcx) \ + $(if $(unstripped_exe),-X/cc1objplus) + dh_shlibdeps -p$(p_objcx) + echo $(p_objcx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_m) + debian/dh_doclink -p$(p_objcx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_objcx_m) + dh_strip -p$(p_objcx_m) + dh_shlibdeps -p$(p_objcx_m) + echo $(p_objcx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-snapshot.mk +++ gcc-7-7.3.0/debian/rules.d/binary-snapshot.mk @@ -0,0 +1,161 @@ +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_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 + dh_strip -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i))) +endif + dh_compress -p$(p_snap) -X README.Bugs -X.log.xz -X.sum.xz + -find $(d_snap) -type d ! -perm 755 -exec chmod 755 {} \; + dh_fixperms -p$(p_snap) +ifeq ($(with_ada),yes) + find $(d_snap)/$(gcc_lib_dir) -name '*.ali' | xargs -r chmod 444 +endif + + mkdir -p $(d_snap)/usr/share/lintian/overrides + cp -p debian/gcc-snapshot.overrides \ + $(d_snap)/usr/share/lintian/overrides/$(p_snap) + + ( \ + echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libffi $(FFI_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \ + ) > debian/shlibs.local + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ + dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib + -sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars + +ifeq ($(with_multiarch_lib),yes) + : # paths needed for relative lookups from startfile_prefixes + for ma in $(xarch_multiarch_names); do \ + mkdir -p $(d_snap)/lib/$$ma; \ + mkdir -p $(d_snap)/usr/lib/$$ma; \ + done +endif + + dh_gencontrol -p$(p_snap) -- $(common_substvars) \ + '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' + dh_installdeb -p$(p_snap) + dh_md5sums -p$(p_snap) + dh_builddeb -p$(p_snap) + + trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-softfloat.mk +++ gcc-7-7.3.0/debian/rules.d/binary-softfloat.mk @@ -0,0 +1,31 @@ +arch_binaries := $(arch_binaries) softfloat + +p_softfloat = gcc$(pkg_ver)-soft-float +d_softfloat = debian/$(p_softfloat) + +dirs_softfloat = \ + $(PFL)/$(libdir) \ + $(gcc_lib_dir) + +files_softfloat = \ + $(PFL)/$(libdir)/soft-float \ + $(gcc_lib_dir)/soft-float + +# ---------------------------------------------------------------------- +$(binary_stamp)-softfloat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_softfloat) + dh_installdirs -p$(p_softfloat) $(dirs_softfloat) + $(dh_compat2) dh_movefiles -p$(p_softfloat) $(files_softfloat) + rm -rf $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.so* + mv $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.a \ + $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp_nonshared.a + debian/dh_doclink -p$(p_softfloat) $(p_xbase) + dh_strip -p$(p_softfloat) + dh_shlibdeps -p$(p_softfloat) + echo $(p_softfloat) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-7-7.3.0.orig/debian/rules.d/binary-source.mk +++ gcc-7-7.3.0/debian/rules.d/binary-source.mk @@ -0,0 +1,53 @@ +indep_binaries := $(indep_binaries) gcc-source + +ifeq ($(BACKPORT),true) + p_source = gcc$(pkg_ver)-$(GCC_VERSION)-source +else + p_source = gcc$(pkg_ver)-source +endif +d_source= debian/$(p_source) + +$(binary_stamp)-gcc-source: $(install_stamp) + dh_testdir + dh_testroot + + dh_installdocs -p$(p_source) + dh_installchangelogs -p$(p_source) + + dh_install -p$(p_source) $(gcc_tarball) usr/src/gcc$(pkg_ver) +ifneq (,$(gdc_tarball)) + dh_install -p$(p_source) $(gdc_tarball) usr/src/gcc$(pkg_ver) +endif + tar cf - $$(find './debian' -mindepth 1 \( \ + -name .svn -prune -o \ + -path './debian/.debhelper' -prune -o \ + -path './debian/gcc-*' -type d -prune -o \ + -path './debian/cpp-*' -type d -prune -o \ + -path './debian/*fortran*' -type d -prune -o \ + -path './debian/lib*' -type d -prune -o \ + -path './debian/patches/*' -prune -o \ + -path './debian/tmp*' -prune -o \ + -path './debian/files' -prune -o \ + -path './debian/rules.d/*' -prune -o \ + -path './debian/rules.parameters' -prune -o \ + -path './debian/soname-cache' -prune -o \ + -path './debian/*substvars*' -prune -o \ + -path './debian/gcc-snapshot*' -prune -o \ + -path './debian/*[0-9]*.p*' -prune -o \ + -path './debian/*$(pkg_ver)[.-]*' -prune -o \ + -print \) ) \ + | tar -x -C $(d_source)/usr/src/gcc$(pkg_ver) -f - + # FIXME: Remove generated files + find $(d_source)/usr/src/gcc$(pkg_ver) -name '*.debhelper.log' -o -name .svn | xargs rm -rf + + touch $(d_source)/usr/src/gcc$(pkg_ver)/debian/rules.parameters + + dh_link -p$(p_source) \ + /usr/src/gcc$(pkg_ver)/debian/patches /usr/src/gcc$(pkg_ver)/patches + + mkdir -p $(d_source)/usr/share/lintian/overrides + cp -p debian/$(p_source).overrides \ + $(d_source)/usr/share/lintian/overrides/$(p_source) + echo $(p_source) >> debian/indep_binaries + + touch $@ --- gcc-7-7.3.0.orig/debian/rules.defs +++ gcc-7-7.3.0/debian/rules.defs @@ -0,0 +1,2082 @@ +# -*- 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_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) +DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),dapper hardy lucid precise quantal raring saucy trusty)) + ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu) + DEB_BUILD_GNU_TYPE = i686-linux-gnu + endif + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i686-linux-gnu + endif + endif +else + ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy)) + # keep dpkg defaults + else ifneq (,$(filter $(distrelease),jessie)) + ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu) + DEB_BUILD_GNU_TYPE = i586-linux-gnu + endif + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i586-linux-gnu + endif + else + # stretch and newer ... + DEB_BUILD_GNU_TYPE := $(subst i586,i686,$(DEB_BUILD_GNU_TYPE)) + DEB_HOST_GNU_TYPE := $(subst i586,i686,$(DEB_HOST_GNU_TYPE)) + endif +endif + +CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ + sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') + +# the name of the source package +PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source) +# those are required here too +SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version) +DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \ + sed -e 's/.*://' -e 's/ds[0-9]*//')) +# 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 + ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid)) + with_sysroot = / + endif + 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 + # first ones are wheezy and maverick + ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid)) + with_sysroot = / + endif + 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 nostrap, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off +endif + +ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off + DEB_BUILD_OPTIONS := $(DEB_BUILD_OPTIONS) nostrip + export DEB_BUILD_OPTIONS +endif + +# ------------------------------------------------------------------- +# stage options +ifdef DEB_STAGE + with_cdev := yes + separate_lang := yes + # "stage1" is minimal compiler with static libgcc + # "stage2" is minimal compiler with shared libgcc + # "rtlibs" is a subset of target libraries, without compilers + ifeq ($(DEB_STAGE),stage1) + with_shared_libgcc := no + endif + ifeq ($(DEB_STAGE),stage2) + with_libgcc := yes + with_shared_libgcc := yes + endif + ifeq ($(DEB_STAGE),rtlibs) + with_rtlibs := libgcc libgomp libstdc++ libgfortran libquadmath + ifeq ($(DEB_CROSS),yes) + LS := + TS := + cross_lib_arch := + endif + endif +endif + +ifeq ($(BACKPORT),true) + with_dev := no + with_source := yes + with_base_only := yes +endif + +# ------------------------------------------------------------------- +# sysroot options +ifdef WITH_SYSROOT + with_sysroot = $(WITH_SYSROOT) +endif +ifdef WITH_BUILD_SYSROOT + with_build_sysroot = $(WITH_BUILD_SYSROOT) +endif + +# ------------------------------------------------------------------- +# for components configuration + +COMMA = , +SPACE = $(EMPTY) $(EMPTY) + +# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG + +DEB_LANG_OPT := $(filter lang=%,$(DEB_BUILD_OPTIONS)) +DEB_LANG := $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT)))) +DEB_NOLANG_OPT := $(filter nolang=%,$(DEB_BUILD_OPTIONS)) +DEB_NOLANG := $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT)))) +lfilt = $(strip $(if $(DEB_LANG), \ + $(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3))) +nlfilt = $(strip $(if $(DEB_NOLANG), \ + $(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3)))) +wlfilt = $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \ + disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3))) +envfilt = $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4))) + +# ------------------------------------------------------------------- +# architecture specific config + +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? + +# 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 +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 (,$(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 +with_offload_nvptx := $(call envfilt, nvptx, , , $(with_offload_nvptx)) + +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 +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)) + 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)) + 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 riscv64 sh4 +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 7 + +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) + libphobos_archs = amd64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 + ifneq (,$(filter $(DEB_TARGET_ARCH), $(libphobos_archs))) + with_libphobos := yes + endif + + libphobos_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 + libphobos_no_systems := gnu kfreebsd-gnu + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libphobos_no_cpus))) + with_libphobos := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(libphobos_no_systems))) + with_libphobos := disabled for system $(DEB_TARGET_GNU_SYSTEM) + endif + with_libphobosdev := $(with_libphobos) + + 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 ------------------- + +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU), ia64 i386 i486 i586 i686 amd64)) + # FIXME: upstream build tied to gfortran build + ifeq ($(with_fortran),yes) + with_qmath := yes + ifneq (,$(findstring gcc-7,$(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-7,$(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-7, $(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 := + +# libcilkrts -------------------- +with_cilkrts := +with_cilkrts := $(call envfilt, cilkrts, , , $(with_cilkrts)) +cilkrts_archs = amd64 i386 x32 armel armhf sparc sparc64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(cilkrts_archs))) + with_cilkrts := yes +endif + +# 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 + ifeq ($(with_common_libs),yes) + ifneq (,$(findstring gcc-, $(PKGSOURCE))) + with_libmpx := yes + endif + endif + endif +endif + +# pie by default -------------------- +with_pie := +ifeq ($(distribution),Debian) + ifeq (,$(filter $(distrelease),wheezy squeeze jessie)) + pie_archs = amd64 arm64 armel armhf i386 \ + mips mipsel mips64 mips64el mipsn32 mipsn32el \ + mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \ + ppc64el s390x sparc sparc64 kfreebsd-amd64 kfreebsd-i386 \ + hurd-i386 riscv64 + endif + ifeq (,$(filter $(distrelease),wheezy squeeze jessie stretch)) + pie_archs += powerpc ppc64 + endif +else ifeq ($(distribution),Ubuntu) + ifeq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily)) + pie_archs = s390x + endif + ifeq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily xenial)) + pie_archs += amd64 ppc64el + endif + ifeq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily xenial yakkety zesty)) + pie_archs += armhf arm64 i386 + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),$(pie_archs))) + with_pie := yes +endif +ifeq ($(trunk_build),yes) + with_pie := disabled for trunk builds +endif + +# gold -------------------- +# armel with binutils 2.20.51 only +gold_archs = amd64 armel armhf i386 powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 hurd-i386 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs))) + with_gold := yes +endif + +# plugins -------------------- +with_plugins := yes +ifneq (,$(with_rtlibs)) + with_plugins := disabled for rtlibs stage +endif + +endif # ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) + +# Don't include docs with GFDL invariant sections +GFDL_INVARIANT_FREE := yes +ifeq ($(derivative),Ubuntu) + GFDL_INVARIANT_FREE := no +endif + +# ------------------------------------------------------------------- +# non-extra config +ifeq ($(extra_package),yes) + ifeq ($(with_separate_libgo),yes) + # package stuff + with_gccbase := yes + with_cdev := no + with_cxx := no + with_cxxdev := no + endif +else + # libssp ------------------ + ifeq ($(with_ssp)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h),$(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi)) + #endif + with_libssp := libc provides ssp + endif + + # libgomp ----------------- + ifeq ($(with_gomp)-$(with_common_libs),yes-yes) + with_libgomp := yes + endif + + # libitm ----------------- + ifeq ($(with_itm)-$(with_common_libs),yes-yes) + with_libitm := yes + endif + + # libatomic ----------------- + ifeq ($(with_atomic)-$(with_common_libs),yes-yes) + with_libatomic := yes + endif + + # libbacktrace ----------------- + ifeq ($(with_backtrace)-$(with_common_libs),yes-yes) + # currently not a shared library + #with_libbacktrace := yes + endif + + # libasan ----------------- + # asan changes soname in GCC 8 + #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 ----------------- + # ubsan changes soname in GCC 8 + #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 + + # libcilkrts ----------------- + #ifeq ($(with_cilkrts)-$(with_common_libs),yes-yes) + ifeq ($(with_cilkrts),yes) + with_libcilkrts := yes + endif + #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 + + # 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 + 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_libcilkrts := 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-7, $(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 + +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_libcilkrts),yes) + with_lib$1cilkrts := 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 \ + libcilkrts libvtv + 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_libphobos),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)) + 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_lib64cilkrts := 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_lib32cilkrts := 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_libx32cilkrts := 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-7/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 nvptx-newlib-*.tar.* /usr/src/gcc-$(BASE_VERSION)/nvptx-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 +endif +ifeq ($(DEB_STAGE),rtlibs) + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef +endif + +# takes a *list* of package names as $1, the multilib dirname as $2 +_shlibdirs = \ + $(if $(strip $(1)), \ + $(shell find $(foreach p,$(1),$(CURDIR)/debian/$(p)) \ + -name '*.so.*' -printf '%h ' | uniq)) \ + $(with_build_sysroot)/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)/usr/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)$(subst /usr,,/$(usr_lib$(2))) \ + $(with_build_sysroot)/$(usr_lib$(2)) \ + $(if $(findstring mips64,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_lib64)) \ + $(if $(findstring mipsn32,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_libn32)) \ + $(if $(filter yes,$(biarchsf) $(biarchhf)), \ + $(with_build_sysroot)/usr/$(call mlib_to_march,$(2))/lib) \ + $(if $(filter yes, $(with_common_libs)),, \ + $(CURDIR)/$(d)/$(usr_lib$(2)) \ + $(CURDIR)/$(d)/usr/$(call mlib_to_march,$(2))/lib) +shlibdirs_to_search = -l$(subst $(SPACE),:,$(foreach d,$(_shlibdirs),$(d))) --- gcc-7-7.3.0.orig/debian/rules.parameters +++ gcc-7-7.3.0/debian/rules.parameters @@ -0,0 +1,42 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 7.3.0 +NEXT_GCC_VERSION := 7.3.1 +BASE_VERSION := 7 +SOURCE_VERSION := 7.3.0-31ubuntu1 +DEB_VERSION := 7.3.0-31ubuntu1 +DEB_EVERSION := 1:7.3.0-31ubuntu1 +DEB_GDC_VERSION := 7.3.0-31ubuntu1 +DEB_SOVERSION := 5 +DEB_SOEVERSION := 1:5 +DEB_LIBGCC_SOVERSION := +DEB_LIBGCC_VERSION := 1:7.3.0-31ubuntu1 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := 5 +GCC_SONAME := 1 +CXX_SONAME := 6 +FORTRAN_SONAME := 4 +OBJC_SONAME := 4 +GDC_VERSION := 7 +GNAT_VERSION := 7 +GNAT_SONAME := 7 +FFI_SONAME := 7 +SSP_SONAME := 0 +GOMP_SONAME := 1 +ITM_SONAME := 1 +ATOMIC_SONAME := 1 +BTRACE_SONAME := 1 +ASAN_SONAME := 4 +LSAN_SONAME := 0 +TSAN_SONAME := 0 +UBSAN_SONAME := 0 +VTV_SONAME := 0 +CILKRTS_SONAME := 5 +MPX_SONAME := 2 +QUADMATH_SONAME := 0 +GO_SONAME := 11 +CC1_SONAME := 0 +GCCJIT_SONAME := 0 +GPHOBOS_SONAME := 71 +GDRUNTIME_SONAME := 71 +HSAIL_SONAME := 0 +LIBC_DEP := libc6 --- gcc-7-7.3.0.orig/debian/rules.patch +++ gcc-7-7.3.0/debian/rules.patch @@ -0,0 +1,409 @@ +# -*- makefile -*- +# rules to patch the unpacked files in the source directory +# --------------------------------------------------------------------------- +# various rules to unpack addons and (un)apply patches. +# - patch / apply-patches +# - unpatch / reverse-patches + +.NOTPARALLEL: + +patchdir ?= debian/patches +series_file ?= $(patchdir)/series + +# which patches should be applied? + +debian_patches = \ + svn-updates \ + $(if $(with_linaro_branch),gcc-linaro) \ + $(if $(with_linaro_branch),gcc-linaro-no-macros) \ + +ifneq (,$(filter $(derivative),Ubuntu)) + # LP: #1799955, the random header needs to be the same for M-A: same + debian_patches += \ + $(if $(with_linaro_branch),,libstdc++-r250464) +endif + +# svn-updates \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + svn-doc-updates \ + $(if $(with_linaro_branch),gcc-linaro-doc) \ + rename-info-files \ + gcc-fuse-ld-lld-doc \ + +# svn-doc-updates \ +# $(if $(with_linaro_branch),,svn-doc-updates) \ + +else +endif +debian_patches += \ + gcc-gfdl-build + +debian_patches += \ + gcc-textdomain \ + gcc-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 \ + pr47818 \ + 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 \ + gotools-configury \ + pr66368 \ + pr67590 \ + libjit-ldflags \ + libffi-pax \ + libffi-race-condition \ + gcc-foffload-default \ + gcc-fuse-ld-lld \ + pr77631 \ + cuda-float128 \ + libgo-sparc64 \ + libgo-ia64 \ + libcc1-compiler-name \ + sh-builtin-trap \ + libffi-mipsen-r6 \ + gcc-alpha-bs-ignore \ + pr83204 \ + pr81356 \ + aarch64-simd-fnma-fix \ + thunderx2t99-pipe-sched \ + pr84475 \ + libffi-riscv \ + gcc-force-cross-layout \ + gcc-search-prefixed-as-ld \ + kfreebsd-decimal-float \ + +ifeq (,$(filter $(DEB_TARGET_ARCH),armhf armel)) + debian_patches += pr67165 +endif + +# $(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \ +# libstdc++-nothumb-check \ + +ifeq (,$(filter $(distrelease),trusty stretch jessie wheezy)) + debian_patches += gcc-as-needed-push-pop +endif + +ifeq (,$(filter $(distrelease),lenny squeeze wheezy dapper trusty xenial artful)) + debian_patches += gcc-hppa-caller-copies-ABI +endif + +hardening_patches = +ifeq ($(with_ssp)-$(with_ssp_default),yes-yes) + hardening_patches += gcc-default-ssp + hardening_patches += gcc-default-format-security + ifeq (,$(filter $(distrelease),dapper hardy lucid maverick natty oneiric precise quantal raring saucy trusty)) + hardening_patches += gcc-default-ssp-strong + endif +endif +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(findstring gcc-7, $(PKGSOURCE))) + hardening_patches += \ + 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-7, $(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 + +debian_patches += ada-arm + +# there should be no harm to always apply these, except for new GCC versions +#ifeq ($(with_ada),yes) + + debian_patches += \ + ada-gcc-name \ + ada-verbose \ + ada-library-project-files-soname + + # FIXME: needs update + #ada-symbolic-tracebacks \ + + ifeq ($(biarch64),yes) + debian_patches += \ + ada-nobiarch-check + endif + + #ifeq ($(with_libgnat),yes) + debian_patches += \ + ada-link-lib \ + ada-libgnatvsn \ + ada-gnattools-cross \ + ada-tools-move-ldflags \ + ada-acats + #endif + #ifeq ($(with_gnatsjlj),yes) + debian_patches += \ + ada-sjlj + #endif + + debian_patches += ada-link-shlib + debian_patches += ada-lib-info-source-date-epoch + debian_patches += ada-armel-libatomic +#endif + + +ifeq ($(with_d),yes) + debian_patches += \ + gdc-7 \ + gdc-updates \ + libphobos-zlib \ + gdc-versym-cpu \ + gdc-versym-os \ + gdc-frontend-posix \ + gdc-profiledbuild \ + gdc-sparc-fix \ +# gdc-multiarch + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gdc-7-doc + else + debian_patches += gdc-texinfo + endif + ifeq ($(with_libphobos),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),powerpcspe) + debian_patches += powerpc_remove_many + debian_patches += powerpc_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 \ + libcilkrts-targets \ + t-libunwind-elf-Wl-z-defs \ + +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 +debian_patches += ada-kfreebsd +debian_patches += ada-drop-termio-h + +# 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_libphobos),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 + +# Ada patches needed for both the stable package and snapshot builds +debian_patches += ada-749574 + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. +#debian_patches += libasan-sparc + +# Has to be refreshed manually as described in the header. +debian_patches += ada-changes-in-autogen-output + +series_stamp = $(stampdir)/02-series-stamp +series: $(series_stamp) +$(series_stamp): + echo $(strip $(addsuffix .diff,$(debian_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" > $(series_file) +ifneq (,$(strip $(hardening_patches))) + ifneq ($(trunk_build),yes) + echo $(strip $(addsuffix .diff,$(hardening_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" >> $(series_file) + endif +endif + sed -r 's/(.)$$/\1 -p1/' -i $(series_file) + touch $@ + +autoconf_files = $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/(configure\.ac|acinclude.m4)$$/s:[^/]+/src/:src/:p' | sort -u) +autoconf_dirs = $(sort $(dir $(autoconf_files))) + +automake_files = $(addprefix ./, $(filter-out none, \ + $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/Makefile\.(am|in)$$/s:[^/]+/src/:src/:p' | sort -u))) + +autoconf_version = 2.64 +ifeq ($(trunk_build),yes) + # The actual version depends on the build-dependencies set by + # variable AUTO_BUILD_DEP in rules.conf. Here, we assume the + # correct version is installed. + #autoconf_version = +endif + +# FIXME: the auto* stuff is done every time for every subdir, which +# leads to build errors. Idea: record the auto* calls in the patch +# files (AUTO ) and run them separately, +# maybe only once per directory). +$(patch_stamp): $(unpack_stamp) $(series_stamp) + sync + QUILT_PATCHES=$(patchdir) QUILT_PATCH_OPTS='-E' \ + quilt --quiltrc /dev/null push -a || test $$? = 2 + +ifneq (,$(filter svn-updates, $(debian_patches))) + awk '/^EOF/ {exit} p==1 {print} /EOF$$/ {p=1}' \ + $(patchdir)/svn-updates.diff > src/LAST_UPDATED +endif + + : # only needed when we have changes, and currently fails with autogen 5.18 + : #cd $(srcdir)/fixincludes && ./genfixes + + sync + echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \ + cd $(CURDIR)/{} && rm -f configure && \ + AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)' + + for i in $(debian_patches) $(hardening_patches); do \ + echo -e "\n$$i:" >> pxxx; \ + sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \ + done +# -$(srcdir)/move-if-change pxxx $@ + mv pxxx $@ + +unpatch: + QUILT_PATCHES=$(patchdir) \ + quilt --quiltrc /dev/null pop -a -R || test $$? = 2 + rm -rf .pc + +update-patches: $(series_stamp) + export QUILT_PATCHES=$(patchdir); \ + export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \ + export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \ + while quilt push; do quilt refresh; done + +patch: $(patch_stamp) +.PHONY: patch series quilt autotools --- gcc-7-7.3.0.orig/debian/rules.sonames +++ gcc-7-7.3.0/debian/rules.sonames @@ -0,0 +1,91 @@ +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 CILKRTS_SONAME=5 >> $$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=71 >> $$cache; \ + echo GDRUNTIME_SONAME=71 >> $$cache; \ + echo HSAIL_SONAME=0 >> $$cache; \ + cat $$cache) +else + SONAME_VARS := $(shell cat debian/soname-cache) +endif +CXX_SONAME = $(call vafilt,$(SONAME_VARS),CXX_SONAME) +OBJC_SONAME = $(call vafilt,$(SONAME_VARS),OBJC_SONAME) +FORTRAN_SONAME = $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME) +SSP_SONAME = $(call vafilt,$(SONAME_VARS),SSP_SONAME) +FFI_SONAME = $(call vafilt,$(SONAME_VARS),FFI_SONAME) +GOMP_SONAME = $(call vafilt,$(SONAME_VARS),GOMP_SONAME) +ATOMIC_SONAME = $(call vafilt,$(SONAME_VARS),ATOMIC_SONAME) +BTRACE_SONAME = $(call vafilt,$(SONAME_VARS),BTRACE_SONAME) +ASAN_SONAME = $(call vafilt,$(SONAME_VARS),ASAN_SONAME) +LSAN_SONAME = $(call vafilt,$(SONAME_VARS),LSAN_SONAME) +TSAN_SONAME = $(call vafilt,$(SONAME_VARS),TSAN_SONAME) +UBSAN_SONAME = $(call vafilt,$(SONAME_VARS),UBSAN_SONAME) +VTV_SONAME = $(call vafilt,$(SONAME_VARS),VTV_SONAME) +CILKRTS_SONAME = $(call vafilt,$(SONAME_VARS),CILKRTS_SONAME) +QUADMATH_SONAME = $(call vafilt,$(SONAME_VARS),QUADMATH_SONAME) +GNAT_SONAME = $(call vafilt,$(SONAME_VARS),GNAT_SONAME) +GO_SONAME = $(call vafilt,$(SONAME_VARS),GO_SONAME) +ITM_SONAME = $(call vafilt,$(SONAME_VARS),ITM_SONAME) +CC1_SONAME = $(call vafilt,$(SONAME_VARS),CC1_SONAME) +GCCJIT_SONAME = $(call vafilt,$(SONAME_VARS),GCCJIT_SONAME) +MPX_SONAME = $(call vafilt,$(SONAME_VARS),MPX_SONAME) +GPHOBOS_SONAME = $(call vafilt,$(SONAME_VARS),GPHOBOS_SONAME) +GDRUNTIME_SONAME= $(call vafilt,$(SONAME_VARS),GDRUNTIME_SONAME) +HSAIL_SONAME = $(call vafilt,$(SONAME_VARS),HSAIL_SONAME) + +# alias +GFORTRAN_SONAME = $(FORTRAN_SONAME) +STDC++_SONAME = $(CXX_SONAME) --- gcc-7-7.3.0.orig/debian/rules.source +++ gcc-7-7.3.0/debian/rules.source @@ -0,0 +1,15 @@ +SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +patchdir = $(SOURCE_DIR)/patches + +include $(SOURCE_DIR)/debian/rules.defs +include $(SOURCE_DIR)/debian/rules.patch +include $(SOURCE_DIR)/debian/rules.unpack + +patch-source: $(patch_stamp) + +clean-source: + rm -rf $(stampdir) + rm -rf $(gcc_srcdir) $(gdc_srcdir) + rm -rf bin + rm -rf $(srcdir) + --- gcc-7-7.3.0.orig/debian/rules.unpack +++ gcc-7-7.3.0/debian/rules.unpack @@ -0,0 +1,208 @@ +# -*- 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/cppenv.texi \ + gcc/doc/cppinternals.texi \ + gcc/doc/cppopts.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/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 + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in $(gfdl_manpages); do \ + touch $(srcdir)/$$i; \ + done + rm -f $(srcdir)/INSTALL/*.html + rm -f $(srcdir)/zlib/contrib/dotzlib/DotZLib.chm + endif +endif + echo "$(gcc_tarball) unpacked." > $@ + +# --------------------------------------------------------------------------- +ifneq (,$(gdc_tarball)) +$(unpack_stamp)-$(gdc_tarball): $(gdc_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack gdc tarball + mkdir -p $(stampdir) + if [ -d $(srcdir)/gcc/d ]; then \ + echo >&2 "Source directory $(srcdir)/gcc/d exists. Delete by hand";\ + false; \ + fi + #rm -rf $(gdc_srcdir) + rm -rf $(srcdir)/gcc/d + rm -rf $(srcdir)/gcc/testsuite/gdc.test + rm -f $(srcdir)/gcc/testsuite/lib/gdc*.exp + rm -rf $(srcdir)/libphobos + tar -x -C $(srcdir) --strip-components=1 -f $(gdc_tarpath) +ifeq ($(GFDL_INVARIANT_FREE),yes-now-purge-gfdl) + ifneq ($(single_package),yes) + for i in gcc/d/gdc.texi; do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in gcc/d/gdc.1; do \ + touch $(srcdir)/$$i; \ + done + endif +endif + echo "$(gdc_tarball) unpacked." > $@ +endif + +# --------------------------------------------------------------------------- +ifneq (,$(nl_nvptx_tarball)) +$(unpack_stamp)-$(nl_nvptx_tarball): $(nl_nvptx_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack newlib-nvptx tarball + mkdir -p $(stampdir) + : # rm -rf $(nl_nvptx_srcdir) + tar -x -f $(nl_nvptx_tarpath) + echo "$(nl_nvptx_tarball) unpacked." > $@ +endif --- gcc-7-7.3.0.orig/debian/rules2 +++ gcc-7-7.3.0/debian/rules2 @@ -0,0 +1,2580 @@ +#! /usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +.SUFFIXES: + +include debian/rules.defs +include debian/rules.parameters + +dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 \ + && echo DH_COMPAT=2) + +# some tools +SHELL = /bin/bash -e # brace expansion in rules file +IR = install -m 644 # Install regular file +IP = install -m 755 # Install program +IS = install -m 755 # Install script + +DWZ = dwz +ifneq (,$(filter $(distrelease),jessie stretch trusty xenial)) + DWZ = : dwz +endif + +# kernel-specific ulimit hack +ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux) + ULIMIT_M = if [ -e /proc/meminfo ]; then \ + m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \ + /proc/meminfo`; \ + else \ + m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \ + fi; \ + echo "Limiting memory for test runs to $${m}kB"; \ + if ulimit -m $$m; then \ + echo " limited to `ulimit -m`kB"; \ + else \ + echo " failed"; \ + fi +else + ULIMIT_M = true +endif + +ifeq ($(locale_data),generate) + SET_LOCPATH = LOCPATH=$(CURDIR)/locales +endif + +SET_PATH = PATH=$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH +ifeq ($(trunk_build),yes) + ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif + ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif +endif + +# the recipient for the test summaries. Send with: debian/rules mail-summary +S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org + +# build not yet prepared to take variables from the environment +define unsetenv + unexport $(1) + $(1) = +endef +$(foreach v, CPPFLAGS CFLAGS CXXFLAGS DFLAGS FFLAGS FCFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) + +CC = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-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++-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-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 + +# work around PR 57689 +ifeq ($(DEB_TARGET_ARCH),ia64) + BOOT_CFLAGS = -g -O1 +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=$(with_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_libphobos),yes) + CONFARGS += --with-target-system-zlib +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 +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 + 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),) + bootstrap_target = bootstrap + # no profiledbootstrap on the following architectures + # - m68k: we're happy that it builds at all + no_profiled_bs_archs := alpha arm hppa m68k mips mipsel mips64 mips64el \ + powerpcspe s390 sh4 sparc sparc64 + ifeq (,$(filter $(DEB_TARGET_ARCH),$(no_profiled_bs_archs))) + bootstrap_target = profiledbootstrap + endif + ifneq (, $(filter $(PKGSOURCE),gcc-$(BASE_VERSION) gnat-$(BASE_VERSION) gcc-snapshot)) + bootstrap_target = bootstrap + endif + ifneq (,$(DEB_STAGE)) + bootstrap_target = bootstrap + endif + + ifeq ($(derivative),Debian) + # disable profiled bootstrap for backports + ifneq (,$(filter $(distrelease),squeeze wheezy jessie)) + bootstrap_target = bootstrap + endif + # disable profiled bootstrap on slow archs, get to testing first ... + ifneq (,$(filter $(DEB_TARGET_ARCH), arm arm64 armel armhf mips mipsel sparc)) + bootstrap_target = bootstrap + endif + endif + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily)) + bootstrap_target = bootstrap + endif + ifeq ($(with_linaro_branch),yes) + bootstrap_target = bootstrap + endif + endif +endif + +DEJAGNU_TIMEOUT=300 +# Increase the timeout for one testrun on slow architectures +ifeq ($(derivative),Debian) + ifneq (,$(findstring $(DEB_TARGET_ARCH),arm64)) + DEJAGNU_TIMEOUT=240 + else ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel armhf hppa m68k sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia)) + DEJAGNU_TIMEOUT=180 + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu) + DEJAGNU_TIMEOUT=900 + endif +else ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH),arm64)) + DEJAGNU_TIMEOUT=240 + else ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf hppa ia64 sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia)) + DEJAGNU_TIMEOUT=180 + endif +endif + +DEJAGNU_RUNS = +ifneq ($(trunk_build),yes) +ifeq ($(with_ssp),yes) + # the buildds are just slow ... don't check the non-default + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),sh4 mips)) + DEJAGNU_RUNS = + else ifneq (,$(filter $(DEB_TARGET_ARCH),armel)) + DEJAGNU_RUNS = + else + ifneq ($(single_package),yes) + DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector) + endif + endif + ifeq ($(derivative),Ubuntu) + # the buildds are just slow ... don't check the non-default + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),ia64 sparc)) + DEJAGNU_RUNS = + endif + # FIXME Ubuntu armel buildd hangs + ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + DEJAGNU_RUNS = + endif + endif +endif +endif + +ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + ifeq ($(with_arm_thumb),yes) + #DEJAGNU_RUNS += -marm + else + DEJAGNU_RUNS += -mthumb + endif + endif +endif + +# no b-d on g++-multilib, this is run by the built compiler +abi_run_check = $(strip $(if $(wildcard build/runcheck$(1).out), \ + $(shell cat build/runcheck$(1).out), \ + $(shell CC="$(builddir)/gcc/xg++ -B$(builddir)/gcc/ -static-libgcc $(1)" bash debian/runcheck.sh))) +ifeq ($(biarch32),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips64 mips64el mipsn32 mipsn32el),-mabi=32,-m32)) +endif +ifeq ($(biarch64),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips mipsel),-mabi=64,-m64)) +endif +ifeq ($(biarchn32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mabi=n32) +endif +ifeq ($(biarchx32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mx32) +endif + +# gdc is not multilib'd +ifneq (,$(findstring gdc, $(PKGSOURCE))) + DEJAGNU_RUNS = +endif + +# neither is gnat +ifneq (,$(findstring gnat, $(PKGSOURCE))) + DEJAGNU_RUNS = +endif + +ifneq (,$(strip $(value DEJAGNU_RUNS))) + RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}" +endif + +# PF is the installation prefix for the package without the leading slash. +# It's "usr" for gcc releases. +ifneq (,$(PF)) + # use value set in the environment +else ifeq ($(trunk_build),yes) + PF = usr/lib/gcc-snapshot +else ifeq ($(PKGSOURCE),gcc-linaro) + PF = usr/lib/gcc-linaro +else + PF = usr +endif + +# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +ifeq ($(DEB_CROSS),yes) + PFL = $(PF)/$(DEB_TARGET_GNU_TYPE) +else + PFL = $(PF) +endif + +# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +ifeq ($(DEB_CROSS),yes) + RPF = $(PF)/$(DEB_TARGET_GNU_TYPE) +else + RPF = +endif + +ifeq ($(with_multiarch_lib),yes) + ifeq ($(DEB_CROSS),yes) + libdir = lib + else + libdir = lib/$(DEB_TARGET_MULTIARCH) + endif +else + libdir = lib +endif +configured_libdir = lib + +hppa64libexecdir= $(PF)/lib + +# /usr/libexec doesn't follow the FHS +ifeq ($(single_package),yes) + libdir = lib + libexecdir = $(PF)/libexec + versiondir = $(BASE_VERSION) +else + libexecdir = $(PF)/$(configured_libdir) + versiondir = $(BASE_VERSION) +endif +buildlibdir = $(builddir)/$(TARGET_ALIAS) + +# install cross compilers in /usr/lib/gcc-cross, native ones in /usr/lib/gcc +gcc_subdir_name = gcc +ifneq ($(single_package),yes) + ifeq ($(DEB_CROSS),yes) + gcc_subdir_name = gcc-cross + endif +endif + +gcc_lib_dir = $(PF)/$(configured_libdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) +gcc_lexec_dir = $(libexecdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) + +lib32loc = lib32 +ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) +lib32loc = libo32 +endif +lib32 = $(PF)/$(lib32loc) +lib64 = lib64 +libn32 = lib32 +libx32 = libx32 + +p_l= $(1)$(cross_lib_arch) +p_d= $(1)-dbg$(cross_lib_arch) +d_l= debian/$(p_l) +d_d= debian/$(p_d) + +ifeq ($(DEB_CROSS),yes) + usr_lib = $(PFL)/lib +else + usr_lib = $(PFL)/$(libdir) +endif +usr_lib32 = $(PFL)/$(lib32loc) +usr_libn32 = $(PFL)/lib32 +usr_libx32 = $(PFL)/libx32 +usr_lib64 = $(PFL)/lib64 +# FIXME: Move to the new location for native builds too +ifeq ($(DEB_CROSS),yes) + usr_libhf = $(PFL)/libhf + usr_libsf = $(PFL)/libsf +else + usr_libhf = $(PFL)/lib/arm-linux-gnueabihf + usr_libsf = $(PFL)/lib/arm-linux-gnueabi +endif + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + PFL = $(PF) + RPF = + libdir = lib/$(DEB_TARGET_MULTIARCH) + usr_lib = $(PF)/lib/$(DEB_TARGET_MULTIARCH) +endif + +gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir) +gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir) +gcc_lib_dirx32 = $(gcc_lib_dir)/$(biarchx32subdir) +gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir) +gcc_lib_dirhf = $(gcc_lib_dir)/$(biarchhfsubdir) +gcc_lib_dirsf = $(gcc_lib_dir)/$(biarchsfsubdir) + +libgcc_dir = $(RPF)/$(libdir) +# yes, really; lib32gcc_s ends up in usr +libgcc_dir32 = $(PFL)/$(lib32loc) +libgcc_dirn32 = $(RPF)/lib32 +# libx32gcc_s also ends up in usr +libgcc_dirx32 = $(PFL)/libx32 +libgcc_dir64 = $(RPF)/lib64 +# FIXME: Move to the new location for native builds too +ifeq ($(DEB_CROSS),yes) + libgcc_dirhf = $(RPF)/libhf + libgcc_dirsf = $(RPF)/libsf +else + libgcc_dirhf = $(RPF)/lib/arm-linux-gnueabihf + libgcc_dirsf = $(RPF)/lib/arm-linux-gnueabi +endif + +# install_gcc_lib(lib,soname,flavour,package) +define install_gcc_lib + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/ + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so + +endef + +checkdirs = $(builddir) +ifeq ($(with_separate_go),yes) + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + checkdirs = $(buildlibdir)/libgo + endif +endif +ifeq ($(with_separate_gnat),yes) + ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + checkdirs = $(builddir)/gcc + endif +endif + +# FIXME: MULTIARCH_DIRNAME needed for g++-multiarch-incdir.diff +MULTIARCH_DIRNAME := $(DEB_TARGET_MULTIARCH) +export MULTIARCH_DIRNAME + +default: build + +configure: $(configure_dependencies) + +$(configure_dummy_stamp): + touch $(configure_dummy_stamp) + +$(configure_stamp): + dh_testdir + : # give information about the build process + @echo "------------------------ Build process variables ------------------------" + @echo "Memory on this machine:" + @egrep '^(Mem|Swap)' /proc/meminfo || true + @echo "Number of parallel processes used for the build: $(USE_CPUS)" + @echo "DEB_BUILD_OPTIONS: $$DEB_BUILD_OPTIONS" + @echo "Package source: $(PKGSOURCE)" + @echo "GCC version: $(GCC_VERSION)" + @echo "Base Debian version: $(BASE_VERSION)" + @echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))" +ifeq ($(DEB_CROSS),yes) + @echo "Building cross compiler for $(DEB_TARGET_ARCH)" +endif + @echo "Using shell $(SHELL)" + @echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))" + @echo "CPPFLAGS: $(CPPFLAGS)" + @echo "CFLAGS: $(CFLAGS)" + @echo "LDFLAGS: $(LDFLAGS)" + @echo "BOOT_CFLAGS: $(BOOT_CFLAGS)" + @echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)" + @echo "Install prefix: /$(PF)" +ifeq ($(biarchn32)-$(biarch64),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)" +else ifeq ($(biarchn32)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)" +else ifeq ($(biarch64)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (x32/64/32, defaulting to x32)" +else ifeq ($(biarch64)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (32/64/x32, defaulting to 32bit)" +else ifeq ($(biarch32)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (64/32/x32, defaulting to 64bit)" +else + ifeq ($(biarch64),yes) + @echo "Will build the biarch compilers (32/64, defaulting to 32bit)" + else + ifeq ($(biarch32),yes) + @echo "Will build the biarch compilers (64/32, defaulting to 64bit)" + else + @echo "Will not build the biarch compilers" + endif + endif +endif + +ifeq ($(with_cxx),yes) + @echo "Will build the C++ compiler" +else + @echo "Will not build the C++ compiler: $(with_cxx)" +endif +ifeq ($(with_objc),yes) + @echo "Will build the ObjC compiler." + ifeq ($(with_objc_gc),yes) + @echo "Will build the extra ObjC runtime for garbage collection." + else + @echo "Will not build the extra ObjC runtime for garbage collection." + endif +else + @echo "Will not build the ObjC compiler: $(with_objc)" +endif +ifeq ($(with_objcxx),yes) + @echo "Will build the Obj-C++ compiler" +else + @echo "Will not build the Obj-C++ compiler: $(with_objcxx)" +endif +ifeq ($(with_fortran),yes) + @echo "Will build the Fortran 95 compiler." +else + @echo "Will not build the Fortran 95 compiler: $(with_fortran)" +endif +ifeq ($(with_ada),yes) + @echo "Will build the Ada compiler." + ifeq ($(with_libgnat),yes) + @echo "Will build the shared Ada libraries." + else + @echo "Will not build the shared Ada libraries." + endif +else + @echo "Will not build the Ada compiler: $(with_ada)" +endif +ifeq ($(with_go),yes) + @echo "Will build the Go compiler." +else + @echo "Will not build the Go compiler: $(with_go)" +endif +ifeq ($(with_d),yes) + @echo "Will build the D compiler" + ifeq ($(with_libphobos),yes) + @echo "Will build the phobos D runtime library." + else + @echo "Will not build the phobos D runtime library: $(with_libphobos)" + endif +else + @echo "Will not build the D compiler: $(with_d)" +endif +ifeq ($(with_ssp),yes) + @echo "Will build with SSP support." +else + @echo "Will build without SSP support: $(with_ssp)" +endif +ifeq ($(with_check),yes) + @echo "Will run the testsuite." +else + @echo "Will not run the testsuite: $(with_check)" +endif +ifeq ($(with_nls),yes) + @echo "Will enable national language support." +else + @echo "Will disable national language support: $(with_nls)" +endif + @echo "-----------------------------------------------------------------------------" + @echo "" +ifeq ($(with_check),yes) + @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \ + : ; \ + else \ + echo "expect is failing on your system with the above error, which means the GCC"; \ + echo "testsuite will fail. Please resolve the above issues and retry the build."; \ + echo "-----------------------------------------------------------------------------"; \ + exit 1; \ + fi +endif + rm -f $(configure_stamp) $(build_stamp) + cat debian/README.Debian $(patch_stamp) > debian/README.Debian.$(DEB_TARGET_ARCH) + + rm -rf $(builddir) + mkdir $(builddir) + + : # some tools like gettext are built with a newer libstdc++ + mkdir -p bin + for i in msgfmt; do \ + install -m755 debian/bin-wrapper.in bin/$$i; \ + done + + : # configure + cd $(builddir) \ + && $(SET_PATH) \ + $(call pass_vars, CC CXX $(flags_to_pass) \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + $(SET_SHELL) $(SET_TARGET_TOOLS) \ + ../src/configure $(subst ___, ,$(CONFARGS)) + + : # multilib builds without b-d on gcc-multilib (used in FLAGS_FOR_TARGET) + if [ -d /usr/include/$(DEB_TARGET_MULTIARCH)/asm ]; then \ + mkdir -p $(builddir)/sys-include; \ + ln -sf /usr/include/$(DEB_TARGET_MULTIARCH)/asm $(builddir)/sys-include/asm; \ + fi + + touch $(configure_stamp) + +build: $(sort $(build_arch_dependencies) $(build_indep_dependencies)) +build-arch: $(build_arch_dependencies) +build-indep: $(build_indep_dependencies) + +$(build_dummy_stamp): + touch $(build_dummy_stamp) + +$(build_locale_stamp): +ifeq ($(locale_data)-$(with_cxx),generate-yes) + : # build locales needed by libstdc++ testsuite + rm -rf locales + mkdir locales + -USE_CPUS=$(USE_CPUS) sh debian/locale-gen +endif + touch $(build_locale_stamp) + + +$(build_stamp): $(configure_stamp) $(build_locale_stamp) + dh_testdir + rm -f bootstrap-protocol + @echo TTTTT $$(date -R) +ifeq ($(build_type),build-native) + : # build native compiler + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) $(bootstrap_target) \ + $(call pass_vars, CC $(flags_to_pass) \ + STAGE1_CFLAGS STAGE1_LDFLAGS \ + BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol +else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-cross)) + : # build cross compiler for $(TARGET_ALIAS) + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol +endif + @echo TTTTT $$(date -R) + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + if [ -f $(srcdir)/contrib/warn_summary ]; then \ + rm -f bootstrap-summary; \ + /bin/sh $(srcdir)/contrib/warn_summary bootstrap-protocol \ + > bootstrap-summary; \ + fi + + touch $(build_stamp) + +ifneq ($(build_type),build-native) + BUILT_CC = $(CC) + BUILT_CXX = $(CXX) +else + BUILT_CC = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ + BUILT_CXX = $(builddir)/gcc/xg++ -B$(builddir)/gcc/ \ + -B$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include/$(TARGET_ALIAS) \ + -I$(srcdir)/libstdc++-v3/libsupc++ \ + -L$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs +endif + +CONFARGS_JIT := \ + $(filter-out --enable-languages=% \ + --enable-libstdcxx-debug %bootstrap,\ + $(CONFARGS)) \ + --enable-languages=c++,jit \ + --enable-host-shared \ + --disable-bootstrap + +$(configure_jit_stamp): $(build_stamp) + dh_testdir + rm -f $(configure_jit_stamp) $(build_jit_stamp) + rm -rf $(builddir_jit) + mkdir $(builddir_jit) + + : # configure jit + cd $(builddir_jit) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + ../src/configure $(subst ___, ,$(CONFARGS_JIT)) + touch $(configure_jit_stamp) + +$(build_jit_stamp): $(configure_jit_stamp) + $(SET_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) + +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) + 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_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) + +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) + 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) + $(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) + touch $(build_hppa64_stamp) + +$(configure_neon_stamp): $(build_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) + $(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 sparc riscv64 +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),cilkrts$(CILKRTS_SONAME),gfortran$(FORTRAN_SONAME),gomp$(GOMP_SONAME),itm$(ITM_SONAME),mpx$(MPX_SONAME),quadmath$(QUADMATH_SONAME),hsail-rt$(HSAIL_SONAME)}.symbols + find debian -maxdepth 1 -name '*-cross.symbols' -type l | xargs -r rm -f + rm -f debian/gcc-{XX,ar,nm,ranlib}-$(BASE_VERSION).1 + rm -f debian/shlibs.local debian/shlibs.common* debian/substvars.local + rm -f debian/*.debhelper + -[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean + rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH) + rm -f debian/arch_binaries* debian/indep_binaries* + rm -rf bin locales share + rm -rf check-inst + rm -rf .pc + dh_clean +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + $(cross_clean) dh_clean +endif + +# ----------------------------------------------------------------------------- +# some abbrevations for the package names and directories; +# p_XXX is the package name, d_XXX is the package directory +# these macros are only used in the binary-* targets. + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) +endif + +# if native or rtlibs build +ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native) + p_base = gcc$(pkg_ver)-base + p_lbase = $(p_base) + p_xbase = gcc$(pkg_ver)-base + p_gcc = gcc$(pkg_ver) + p_cpp = cpp$(pkg_ver) + p_cppd = cpp$(pkg_ver)-doc + p_cxx = g++$(pkg_ver) + p_doc = gcc$(pkg_ver)-doc +else + # only triggered if DEB_CROSS set + p_base = gcc$(pkg_ver)$(cross_bin_arch)-base + p_lbase = gcc$(pkg_ver)-cross-base$(GCC_PORTS_BUILD) + p_xbase = gcc$(pkg_ver)$(cross_bin_arch)-base + p_cpp = cpp$(pkg_ver)$(cross_bin_arch) + p_gcc = gcc$(pkg_ver)$(cross_bin_arch) + p_cxx = g++$(pkg_ver)$(cross_bin_arch) +endif +p_hppa64 = gcc$(pkg_ver)-hppa64-linux-gnu + +# needed for shlibs.common* generation +ifeq (,$(p_lgcc)) + p_lgcc = libgcc$(GCC_SONAME)$(cross_lib_arch) +endif +ifeq (,$(p_lib)) + p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +endif + +d = debian/tmp +d_base = debian/$(p_base) +d_xbase = debian/$(p_xbase) +d_gcc = debian/$(p_gcc) +d_cpp = debian/$(p_cpp) +d_cppd = debian/$(p_cppd) +d_cxx = debian/$(p_cxx) +d_doc = debian/$(p_doc) +d_lgcc = debian/$(p_lgcc) +d_hppa64= debian/$(p_hppa64) + +d_neon = debian/tmp-neon + +common_substvars = \ + $(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local) + +ifeq ($(DEB_CROSS),yes) + lib_binaries := indep_binaries +else + lib_binaries := arch_binaries +endif + +# --------------------------------------------------------------------------- + +ifeq ($(single_package),yes) + include debian/rules.d/binary-snapshot.mk +else + +ifneq ($(with_base_only),yes) +ifneq ($(DEB_CROSS),yes) +ifeq ($(with_source),yes) + include debian/rules.d/binary-source.mk +endif +endif +endif + +ifneq ($(BACKPORT),true) + +ifeq ($(with_gccbase),yes) + include debian/rules.d/binary-base.mk +endif + +ifneq ($(with_base_only),yes) + +# always include to get some definitions +include debian/rules.d/binary-libgcc.mk + +ifeq ($(with_libqmath),yes) + include debian/rules.d/binary-libquadmath.mk +endif + +ifeq ($(with_libgmath),yes) + include debian/rules.d/binary-libgccmath.mk +endif + +ifeq ($(with_libgomp),yes) + include debian/rules.d/binary-libgomp.mk +endif + +ifeq ($(with_libitm),yes) + include debian/rules.d/binary-libitm.mk +endif + +ifeq ($(with_libatomic),yes) + include debian/rules.d/binary-libatomic.mk +endif + +ifeq ($(with_libbacktrace),yes) + include debian/rules.d/binary-libbacktrace.mk +endif + +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-cpp.mk +endif + +ifeq ($(with_fixincl),yes) + include debian/rules.d/binary-fixincl.mk +endif + +ifeq ($(with_libssp),yes) + include debian/rules.d/binary-libssp.mk +endif + +ifeq ($(with_objcxx),yes) + include debian/rules.d/binary-objcxx.mk +endif + +ifeq ($(with_objc),yes) + include debian/rules.d/binary-objc.mk + include debian/rules.d/binary-libobjc.mk +endif + +ifeq ($(with_go),yes) + include debian/rules.d/binary-go.mk +endif + +ifeq ($(with_brig),yes) + include debian/rules.d/binary-brig.mk + include debian/rules.d/binary-libhsail.mk +endif + +ifeq ($(with_cxxdev),yes) + include debian/rules.d/binary-cxx.mk +endif +ifeq ($(with_cxx),yes) + include debian/rules.d/binary-libstdcxx.mk +endif + +ifeq ($(with_libasan),yes) + include debian/rules.d/binary-libasan.mk +endif + +ifeq ($(with_liblsan),yes) + include debian/rules.d/binary-liblsan.mk +endif + +ifeq ($(with_libtsan),yes) + include debian/rules.d/binary-libtsan.mk +endif + +ifeq ($(with_libubsan),yes) + include debian/rules.d/binary-libubsan.mk +endif + +ifeq ($(with_libvtv),yes) + include debian/rules.d/binary-libvtv.mk +endif + +ifeq ($(with_libcilkrts),yes) + include debian/rules.d/binary-libcilkrts.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-7* $(d)/$(PF)/bin/hppa64-linux-gnu-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-7*; \ + fi + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/hppa64-linux-gnu-gcc-$$i.1; \ + done + + : # remove files not needed from the hppa64 build + rm -rf $(d)/$(PF)/share/info + rm -rf $(d)/$(PF)/share/man + rm -f $(d)/$(PF)/$(libdir)/libiberty.a + rm -f $(d)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc} + + rm -rf $(d)/$(PF)/hppa64-linux-gnu/include + rm -rf $(d)/$(PF)/hppa64-linux-gnu/lib + set -e; \ + cd $(d)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(versiondir)/include-fixed; \ + for i in *; do \ + case "$$i" in \ + README|features.h|syslimits.h|limits.h) ;; \ + linux|$(TARGET_ALIAS)) ;; \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \ + *) echo "remove include-fixed/$$i"; rm -rf $$i; \ + esac; \ + done +endif + + : # Work around PR lto/41569 + ln -sf gcc $(builddir)/prev-gcc + ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE) + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + ls -l $(d)/$(PF)/bin + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ + done + + if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ + mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-7* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-7*; \ + fi + set -e; \ + cd $(d)/$(gcc_lib_dir)/include-fixed; \ + for i in *; do \ + case "$$i" in \ + README|features.h|syslimits.h|limits.h) ;; \ + linux|$(TARGET_ALIAS)) ;; \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \ + *) echo "remove include-fixed/$$i"; rm -rf $$i; \ + esac; \ + done + +ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done + ifeq ($(with_ada),yes) + sed -i s~$(PF)/$(configured_libdir)~$(PF)/$(libdir)~ $(d)/$(PF)/share/gpr/gnatvsn.gpr + endif +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_snap_stamp) + +$(install_stamp): $(build_stamp) + dh_testdir + dh_testroot + dh_prep $(if $(filter yes,$(with_hppa64)),-N$(p_hppa64)) + + if [ -f $(binary_stamp)-hppa64 ]; then \ + mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \ + fi + rm -f $(binary_stamp)* + if [ -f saved-stamp-hppa64 ]; then \ + mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \ + fi + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug +ifeq ($(biarch32),yes) + mkdir -p $(d)/$(PF)/$(lib32loc)/debug +endif +ifeq ($(biarch64),yes) + mkdir -p $(d)/$(PF)/lib64/debug +endif +ifeq ($(biarchn32),yes) + mkdir -p $(d)/$(PF)/$(libn32)/debug +endif +ifeq ($(biarchx32),yes) + mkdir -p $(d)/$(PF)/libx32/debug +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64)) +ifneq ($(DEB_TARGET_ARCH),x32) + : # link lib to lib64 and $(PF)/lib to $(PF)/lib64 + : # (this works when CONFARGS contains '--disable-multilib') + ln -s $(configured_libdir) $(d)/lib64 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/lib64 +endif +endif +ifeq ($(DEB_TARGET_ARCH),x32) + : # link lib to libx32 and $(PF)/lib to $(PF)/libx32 + ln -s $(configured_libdir) $(d)/libx32 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/libx32 +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + @echo configured_libdir=$(configured_libdir) / libdir=$(libdir) / usr_lib=$(usr_lib) + ls $(d)/$(PF)/$(TARGET_ALIAS)/lib + set -x; \ + if [ -d $(d)/$(PF)/$(TARGET_ALIAS)/lib ]; then \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/lib/* $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/.; \ + fi + for d in $$(cd $(d)/$(PF)/$(TARGET_ALIAS); echo lib?*); do \ + [ -d $(d)/$(PF)/$(TARGET_ALIAS)/$$d ] || continue; \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/$$d/* $(d)/$(PF)/$$d/.; \ + done +else + ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.o' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done + ifeq ($(with_ada),yes) + sed -i s~$(PF)/$(configured_libdir)~$(PF)/$(libdir)~ $(d)/$(PF)/share/gpr/gnatvsn.gpr + endif + endif +endif + +ifneq (,$(cmd_prefix)) + for i in $(d)/$(PF)/share/info/$(cmd_prefix)*; do \ + [ -f "$$i" ] || continue; \ + mv $$i $$(echo $$i | sed 's/$(cmd_prefix)//'); \ + done +endif + +ifeq ($(with_libcxxdbg),yes) + : # FIXME: the libstdc++ gdb.py file is installed with a wrong name + for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \ + [ -f $$i ] || continue; \ + d=$$(dirname $$i); \ + b=$$(basename $$i); \ + t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \ + mv $$i $$d/$$t; \ + done +endif + + if [ -d $(d)/$(PF)/include/cilk ]; then \ + mv $(d)/$(PF)/include/cilk $(d)/$(gcc_lib_dir)/include/. ;\ + fi + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ + $(d)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + case "$$i" in ecj1|*gij-*|*libjawt*|*libjvm*) continue; esac; \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f + +ifeq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + + ifeq ($(with_fortran),yes) + for i in g77; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + endif +endif + +ifneq ($(with_libgnat),yes) + rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so* +endif + +# ifeq ($(with_ada),yes) +# : # rename files (versioned ada binaries) +# for i in ; do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# mv $(d)/$(PF)/share/man/man1/$$i.1 \ +# $(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \ +# done +# for i in $(GNAT_TOOLS); do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# done +# endif + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i$(pkg_ver).1; \ + done + + chmod 755 debian/dh_* + +ifneq ($(with_common_libs),yes) +# for native builds, the default ml libs are always available; no need for a placeholder +# apparently this changed with newer dpkg versions (1.18.7?) ... + echo 'libgcc_s $(GCC_SONAME) $(p_lgcc)' > debian/shlibs.common + echo 'libstdc++ $(CXX_SONAME) $(p_lib)' >> debian/shlibs.common + echo 'libquadmath $(QUADMATH_SONAME) libquadmath$(QUADMATH_SONAME)$(cross_lib_arch)' >> debian/shlibs.common + echo 'libatomic $(ATOMIC_SONAME) libatomic$(ATOMIC_SONAME)$(cross_lib_arch)' >> debian/shlibs.common + $(foreach ml,32 64 n32 x32 hf sf, \ + echo 'libgcc_s $(GCC_SONAME) $(subst lib,lib$(ml),$(p_lgcc))' > debian/shlibs.common$(ml); \ + echo 'libstdc++ $(CXX_SONAME) $(subst lib,lib$(ml),$(p_lib))' >> debian/shlibs.common$(ml); \ + echo 'libquadmath $(QUADMATH_SONAME) lib$(ml)quadmath$(QUADMATH_SONAME)$(cross_lib_arch)' >> debian/shlibs.common$(ml); \ + echo 'libatomic $(ATOMIC_SONAME) lib$(ml)atomic$(ATOMIC_SONAME)$(cross_lib_arch)' >> debian/shlibs.common$(ml); \ + ) +endif + + @echo XXXXX `date -R` + find $(d) ! -type d -print + @echo XXXXX + touch $(install_stamp) + +$(install_jit_stamp): $(build_jit_stamp) $(install_stamp) + dh_testdir + dh_testroot + rm -rf $(d)-jit + mkdir -p $(d)-jit/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_jit) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-jit \ + install + + : # copy files to the standard build + cp -a $(d)-jit/$(PF)/include/libgccjit*.h \ + $(d)/$(gcc_lib_dir)/include/. + cp -a $(d)-jit/$(PF)/lib/libgccjit.so* \ + $(d)/$(usr_lib)/. + cp -a $(d)-jit/$(PF)/share/info/libgccjit* \ + $(d)/$(PF)/share/info/. + + @echo XXXXX `date -R` + touch $(install_jit_stamp) + +$(install_nvptx_stamp): $(build_nvptx_stamp) $(install_stamp) \ + $(if $(filter yes, $(with_jit)), $(install_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(install_hppa64_stamp)) + dh_testdir + dh_testroot + ln -sf ../$(nl_nvptx_srcdir)/newlib $(srcdir)/newlib + rm -rf $(d)-nvptx + mkdir -p $(d)-nvptx/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_nvptx) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-nvptx \ + install + + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/nvptx-none/$(versiondir)/install-tools + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951} + rm -rf $(d)-nvptx/$(PF)/share/{info,man/man7,locale} + rm -rf $(d)-nvptx/$(PF)/share/man/man1/*-{gcov,gfortran,g++,cpp}.1 + rm -rf $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/{install-tools,plugin} + rm -rf $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,include-fixed} + rm -rf $(d)-nvptx/$(PF)/lib/libc[cp]1* + + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/mgomp/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/mgomp/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + find $(d)-nvptx -name \*.la | xargs rm -f + rm -rf $(d)-nvptx/$(PF)/nvptx-none/include + -find $(d)-nvptx -type -d -empty -delete + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + rm -f $(srcdir)/newlib + @echo XXXXX `date -R` + touch $(install_nvptx_stamp) + +$(install_hppa64_stamp): $(build_hppa64_stamp) + dh_testdir + dh_testroot + rm -rf $(d_hppa64) + mkdir -p $(d_hppa64)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_hppa64) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d_hppa64) \ + install + + : # remove files not needed + rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info + rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/plugin + rm -f $(d_hppa64)/$(PF)/lib/libiberty.a + rm -f $(d_hppa64)/$(PF)/lib/libcc1.* + rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc} + + rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/install-tools + +ifeq ($(versioned_packages),yes) + for i in cpp gcc-ar gcc-nm gcc-ranlib; do \ + mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \ + $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \ + done +endif + mkdir -p $(d_hppa64)/$(PF)/share/man/man1 + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in cpp gcc; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +endif + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d_hppa64) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d_hppa64)/$(PF)/bin/* $(d_hppa64)/$(PFL)/lib*/lib*.so.* \ + $(d_hppa64)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d_hppa64)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + touch $(install_hppa64_stamp) + +$(install_neon_stamp): $(build_neon_stamp) + dh_testdir + dh_testroot + rm -rf $(d_neon) + mkdir -p $(d_neon)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_neon) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d_neon) \ + install + touch $(install_neon_stamp) + +# ---------------------------------------------------------------------- +# Build architecture-dependent files here. +debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \ + > arch_binaries.tmp + mv debian/arch_binaries.tmp debian/arch_binaries + sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch + cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all + +# see #879054 for the "test ! -s" tests, needed for the rtlibs stage +binary-arch: debian/arch_binaries.all + test ! -s debian/arch_binaries.all || \ + dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs +ifeq ($(i586_symlinks),yes) + cd debian; \ + test ! -s arch_binaries || \ + for x in $$(find `cat arch_binaries` -type l -name 'i686-*'); do \ + link=$$(echo $$x | sed 's/i686-/i586-/'); \ + tgt=$$(basename $$x); \ + echo "Adding symlink: $$link -> $$tgt"; \ + rm -f $$link; cp -a $$x $$link; \ + done +endif + test ! -s debian/arch_binaries.all || \ + dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries || \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/arch_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + test ! -s debian/arch_binaries.all || \ + dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) +ifeq ($(with_check),yes) + @echo Done +# : # Send Email about sucessfull build. +# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)" +endif + + : # remove empty directories, when all components are in place + -find $(d) -type d -empty -delete + + @echo "Listing installed files not included in any package:" + -find $(d) ! -type d + + @echo XXXXX `date -R` + +# ---------------------------------------------------------------------- +# Build architecture-independent files here. +debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \ + > indep_binaries.tmp + mv debian/indep_binaries.tmp debian/indep_binaries + sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch + cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all + +binary-indep: debian/indep_binaries.all + dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs + dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + : # the export should be harmless for the binary indep packages of a native build + export DEB_HOST_ARCH=$(TARGET); \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + export DEB_HOST_ARCH=$(TARGET); \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + +ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el)) + for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \ + p=$${p#-p*}; \ + case "$$p" in \ + lib64*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + esac; \ + done +endif + + dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + + @echo XXXXX `date -R` + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary +.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all --- gcc-7-7.3.0.orig/debian/runcheck.sh +++ gcc-7-7.3.0/debian/runcheck.sh @@ -0,0 +1,23 @@ +#! /bin/sh + +mkdir -p build + +abi=${CC##* } +base=build/runcheck$abi + +cat >$base.c < +int main() +{ + printf("$abi"); + return 0; +} +EOF + + +if ${CC:-gcc} -o $base $base.c 2>/dev/null; then + if [ "$($base 2>&1)" = "$abi" ]; then + printf "%s" $abi > $base.out + printf "%s" $abi + fi +fi --- gcc-7-7.3.0.orig/debian/source/format +++ gcc-7-7.3.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- gcc-7-7.3.0.orig/debian/source/lintian-overrides +++ gcc-7-7.3.0/debian/source/lintian-overrides @@ -0,0 +1,9 @@ +invalid-arch-string-in-source-relation + +quilt-build-dep-but-no-series-file + +# lintian can't handle (>= ${gcc:Version}) +weak-library-dev-dependency + +# yes, still generating the series file for the build +patch-file-present-but-not-mentioned-in-series --- gcc-7-7.3.0.orig/debian/tests/control +++ gcc-7-7.3.0/debian/tests/control @@ -0,0 +1,24 @@ +Tests: runtime-libs +Depends: apt, python3-minimal +Restrictions: allow-stderr + +Tests: libc-link +Depends: gcc-7, libc6-dev | libc-dev + +Tests: libstdcxx-link +Depends: g++-7 + +Tests: libgfortran-link +Depends: gfortran-7 + +Tests: libgo-link +Depends: gccgo-7 + +Tests: libgomp-link +Depends: gfortran-7, gcc-7 + +Tests: libgnat-link +Depends: gnat-7 + +Tests: shlib-build +Depends: gcc-7, libc6-dev | libc-dev --- gcc-7-7.3.0.orig/debian/tests/libc-link +++ gcc-7-7.3.0/debian/tests/libc-link @@ -0,0 +1,31 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libc, to verify +# basic compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +CC=gcc-7 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < libctest.c +#include +#include + +int main() +{ + assert (1 > 0); + assert (strcmp ("hello", "hello") == 0); + return 0; +} +EOF + +$CC -o libctest libctest.c +echo "build: OK" +[ -x libctest ] +./libctest +echo "run: OK" --- gcc-7-7.3.0.orig/debian/tests/libgfortran-link +++ gcc-7-7.3.0/debian/tests/libgfortran-link @@ -0,0 +1,23 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +F95=gfortran-7 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < libgfortran.f + program hello + print *, "Hello World!" + end program hello +EOF + +$F95 -o ftest libgfortran.f +echo "build: OK" +ldd ftest +[ -x ftest ] +./ftest +echo "run: OK" --- gcc-7-7.3.0.orig/debian/tests/libgnat-link +++ gcc-7-7.3.0/debian/tests/libgnat-link @@ -0,0 +1,25 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgnat, +# to verify basic compile-time and run-time linking functionality. + +set -e + +GNATMAKE=gnatmake-7 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < hello.adb +with Ada.Text_IO; use Ada.Text_IO; +procedure Hello is +begin + Put_Line("Hello gnatmake."); +end Hello; +EOF + +$GNATMAKE -eS -vm -o adatest hello.adb +echo "build: OK" +ldd adatest +[ -x adatest ] +./adatest +echo "run: OK" --- gcc-7-7.3.0.orig/debian/tests/libgo-link +++ gcc-7-7.3.0/debian/tests/libgo-link @@ -0,0 +1,26 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgo, +# to verify basic compile-time and run-time linking functionality. + +set -e + +GO=go-7 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < hello.go +package main +import "fmt" +func main() { + fmt.Println("hello world") +} +EOF + +$GO run hello.go +$GO build hello.go +echo "build: OK" +ldd hello +[ -x hello ] +./hello +echo "run: OK" --- gcc-7-7.3.0.orig/debian/tests/libgomp-link +++ gcc-7-7.3.0/debian/tests/libgomp-link @@ -0,0 +1,77 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +CC=gcc-7 +F95=gfortran-7 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < hello-gomp.c +#include +#include +#include +int main (int argc, char *argv[]) { + +int nthreads, tid; + +/* Fork a team of threads giving them their own copies of variables */ +#pragma omp parallel private(nthreads, tid) + { + + /* Obtain thread number */ + tid = omp_get_thread_num(); + printf("Hello World from thread = %d\n", tid); + + /* Only master thread does this */ + if (tid == 0) + { + nthreads = omp_get_num_threads(); + printf("Number of threads = %d\n", nthreads); + } + + } /* All threads join master thread and disband */ +} +EOF + +$CC -fopenmp -o gctest hello-gomp.c +echo "build: OK" +ldd gctest +[ -x gctest ] +./gctest +echo "run: OK" + +cat < hello-gomp.f + program omp_par_do + implicit none + + integer, parameter :: n = 100 + real, dimension(n) :: dat, result + integer :: i + + !$OMP PARALLEL DO + do i = 1, n + result(i) = my_function(dat(i)) + end do + !$OMP END PARALLEL DO + + contains + + function my_function(d) result(y) + real, intent(in) :: d + real :: y + + ! do something complex with data to calculate y + end function my_function + end program omp_par_do +EOF + +$F95 -fopenmp -o gftest hello-gomp.f +echo "build: OK" +ldd gftest +[ -x gftest ] +./gftest +echo "run: OK" --- gcc-7-7.3.0.orig/debian/tests/libstdcxx-link +++ gcc-7-7.3.0/debian/tests/libstdcxx-link @@ -0,0 +1,27 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libstdc++, +# to verify basic compile-time and run-time linking functionality. + +set -e + +CXX=g++-7 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < libstdcxx.cc +#include +using namespace std; + +int main() { + cout << "Hello! World!\n"; + return 0; +} +EOF + +$CXX -o cxxtest libstdcxx.cc +echo "build: OK" +ldd cxxtest +[ -x cxxtest ] +./cxxtest +echo "run: OK" --- gcc-7-7.3.0.orig/debian/tests/runtime-libs +++ gcc-7-7.3.0/debian/tests/runtime-libs @@ -0,0 +1,31 @@ +#!/bin/sh +# autopkgtest check: start a "simple" program and check that +# dynamic loading of modules works + +set -e + + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR + +echo "Running exexutable linked with libgcc and libstdc++ (apt)..." +if [ -x /usr/bin/apt ]; then + apt=/usr/bin/apt +elif [ -x /bin/apt ]; then + apt=/bin/apt +else + echo "apt not found" + exit 1 +fi + +ldd $apt +apt show libgcc1 libstdc++6 + +echo "Running dynamically linked executable (python3)..." +python3 -c 'print("Hello World!")' +echo "OK" + +echo "Loading extension module..." +python3 -c 'import _hashlib; print(_hashlib.__dict__)' +echo "OK" --- gcc-7-7.3.0.orig/debian/tests/shlib-build +++ gcc-7-7.3.0/debian/tests/shlib-build @@ -0,0 +1,46 @@ +#!/bin/sh +# autopkgtest check: Build and link against a simple shared library, to test +# basic binutils compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +CC=gcc-7 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < testlib.c + +int ultimate_answer() +{ + return 42; +} +EOF + +$CC -Wall -Werror -shared -o libultimate.so testlib.c +echo "library build: OK" + +# should export the symbol +nm -D libultimate.so | grep -q 'T ultimate_answer' + +# link it against a program +cat < testprog.c +#include + +int ultimate_answer(); + +int main() +{ + assert (ultimate_answer() == 42); + return 0; +} +EOF + +$CC -Wall -Werror -L . -o testprog testprog.c -lultimate +echo "program build: OK" +[ -x testprog ] +LD_LIBRARY_PATH=. ./testprog +echo "run: OK" --- gcc-7-7.3.0.orig/debian/watch +++ gcc-7-7.3.0/debian/watch @@ -0,0 +1,3 @@ +version=2 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(7\.[\d\.]*)/ \ + gcc-([\d\.]+)\.tar\.xz debian uupdate